nx_q4k_ggml_kat.nx source
↩ module page · 342 lines · 41534 B
1// nx_q4k_ggml_kat.nx -- PERMANENT golden regression guard for Q4_K dequant.
2//
3// Embeds the REAL 2304 bytes of blk.0.attn_q.weight ROW 0 (16 Q4_K
4// super-blocks) from Huihui-Qwen3-4B-Instruct-2507-abliterated-Q4_K_M.gguf
5// at file offset 1040894048, and asserts -- through BOTH the f32 path
6// (nx_q4k_to_f32) and the fused integer Q24 path (nx_q4k_dot_row_col) --
7// the ggml-true golden values:
8// element0 (row0,col0) f32 bits == 0x3AD18400 (= +0.0015985)
9// row-0 dot vs col[i]=1024+(i%5)*256 (Q10) == +0.2157557 (true ggml)
10//
11// Cross-checked bit-exact vs ggml-quants.c (dequantize_row_q4_K) and the
12// gguf-py reference. DO NOT edit the bytes / expected values without
13// re-deriving them from the model + ggml. license_tier: ORIGINAL
14import "nx_gate_verdict.nx"
15import "nx_syscalls.nx"
16import "nx_tier.nx"
17import "nx_le.nx"
18import "nx_gguf.nx"
19import "nx_gguf_load.nx"
20import "nx_dequant_iter.nx"
21import "nx_q4k_matmul.nx"
22import "nx_q4k_to_f32.nx"
23import "nx_f32.nx"
24import "nx_f32_cvt.nx"
25import "nx_f32_div.nx"
26
27const KAT_HID: i64 = 4096
28const KAT_NBLK: i64 = 16
29const KAT_BYTES: i64 = 2304
30
31func _kat_fill_0(buf: *u8) -> i64 {
32 buf[0]=0x2e; buf[1]=0x06; buf[2]=0x78; buf[3]=0x10; buf[4]=0xe1; buf[5]=0x9c; buf[6]=0xae; buf[7]=0xad; buf[8]=0xe5; buf[9]=0xa7; buf[10]=0xff; buf[11]=0xf1
33 buf[12]=0x8f; buf[13]=0xb2; buf[14]=0x17; buf[15]=0x23; buf[16]=0x17; buf[17]=0x98; buf[18]=0x56; buf[19]=0x87; buf[20]=0xaa; buf[21]=0x90; buf[22]=0x6c; buf[23]=0x59
34 buf[24]=0xc1; buf[25]=0x14; buf[26]=0xb9; buf[27]=0xab; buf[28]=0x79; buf[29]=0x0d; buf[30]=0xa1; buf[31]=0x84; buf[32]=0x48; buf[33]=0xb9; buf[34]=0xb3; buf[35]=0xd9
35 buf[36]=0x54; buf[37]=0x0e; buf[38]=0xb6; buf[39]=0x74; buf[40]=0x87; buf[41]=0xd5; buf[42]=0x68; buf[43]=0xe7; buf[44]=0xb7; buf[45]=0x28; buf[46]=0xf4; buf[47]=0xc4
36 buf[48]=0xa9; buf[49]=0x65; buf[50]=0xb5; buf[51]=0x2a; buf[52]=0x98; buf[53]=0x46; buf[54]=0x88; buf[55]=0xa6; buf[56]=0x68; buf[57]=0x0b; buf[58]=0x48; buf[59]=0x32
37 buf[60]=0x5e; buf[61]=0xbb; buf[62]=0x58; buf[63]=0x7a; buf[64]=0x37; buf[65]=0xb7; buf[66]=0x94; buf[67]=0x57; buf[68]=0x89; buf[69]=0x60; buf[70]=0x77; buf[71]=0x2b
38 buf[72]=0x48; buf[73]=0xaa; buf[74]=0x75; buf[75]=0xd5; buf[76]=0xfa; buf[77]=0x5a; buf[78]=0xcc; buf[79]=0x8a; buf[80]=0x56; buf[81]=0xf2; buf[82]=0x39; buf[83]=0xb7
39 buf[84]=0x45; buf[85]=0x95; buf[86]=0x16; buf[87]=0x42; buf[88]=0xb1; buf[89]=0x7a; buf[90]=0xb5; buf[91]=0x4f; buf[92]=0x95; buf[93]=0x98; buf[94]=0x74; buf[95]=0x96
40 buf[96]=0x56; buf[97]=0x45; buf[98]=0xc4; buf[99]=0x99; buf[100]=0xb7; buf[101]=0x2a; buf[102]=0xc8; buf[103]=0x73; buf[104]=0x96; buf[105]=0x87; buf[106]=0x74; buf[107]=0x00
41 buf[108]=0xb8; buf[109]=0xd6; buf[110]=0xc4; buf[111]=0x55; buf[112]=0x6d; buf[113]=0x42; buf[114]=0x6a; buf[115]=0x38; buf[116]=0x97; buf[117]=0x89; buf[118]=0x89; buf[119]=0xb5
42 buf[120]=0xe4; buf[121]=0xf9; buf[122]=0x45; buf[123]=0x67; buf[124]=0xf7; buf[125]=0xb7; buf[126]=0xcf; buf[127]=0x68; buf[128]=0x68; buf[129]=0x97; buf[130]=0xa2; buf[131]=0x4b
43 buf[132]=0xb4; buf[133]=0x55; buf[134]=0x29; buf[135]=0x94; buf[136]=0x88; buf[137]=0x85; buf[138]=0xe1; buf[139]=0xe0; buf[140]=0x98; buf[141]=0x86; buf[142]=0x0c; buf[143]=0x48
44 buf[144]=0x3e; buf[145]=0x05; buf[146]=0x8e; buf[147]=0x11; buf[148]=0xf9; buf[149]=0xf4; buf[150]=0xf8; buf[151]=0xa2; buf[152]=0xf3; buf[153]=0xeb; buf[154]=0xff; buf[155]=0xa2
45 buf[156]=0x55; buf[157]=0x1f; buf[158]=0x13; buf[159]=0xa7; buf[160]=0x95; buf[161]=0x67; buf[162]=0x79; buf[163]=0x76; buf[164]=0xbb; buf[165]=0x06; buf[166]=0xca; buf[167]=0xdf
46 buf[168]=0x6b; buf[169]=0xc6; buf[170]=0x90; buf[171]=0xa8; buf[172]=0x9d; buf[173]=0x45; buf[174]=0xa2; buf[175]=0x57; buf[176]=0x98; buf[177]=0xda; buf[178]=0x69; buf[179]=0x86
47 buf[180]=0xeb; buf[181]=0xc8; buf[182]=0x99; buf[183]=0x96; buf[184]=0x59; buf[185]=0x36; buf[186]=0x24; buf[187]=0x66; buf[188]=0x68; buf[189]=0xb0; buf[190]=0x34; buf[191]=0x7e
48 buf[192]=0xe9; buf[193]=0xf7; buf[194]=0x9b; buf[195]=0xb9; buf[196]=0x80; buf[197]=0x6c; buf[198]=0x86; buf[199]=0x09; buf[200]=0x99; buf[201]=0x63; buf[202]=0x16; buf[203]=0x8f
49 buf[204]=0x59; buf[205]=0x1f; buf[206]=0xf7; buf[207]=0xc9; buf[208]=0x69; buf[209]=0x47; buf[210]=0xab; buf[211]=0x3c; buf[212]=0xa9; buf[213]=0x7a; buf[214]=0xab; buf[215]=0x79
50 buf[216]=0xe8; buf[217]=0x9a; buf[218]=0xe9; buf[219]=0xb6; buf[220]=0x79; buf[221]=0xe8; buf[222]=0x9f; buf[223]=0x78; buf[224]=0xa9; buf[225]=0x8f; buf[226]=0x9b; buf[227]=0x9f
51 buf[228]=0x0d; buf[229]=0x59; buf[230]=0x08; buf[231]=0x15; buf[232]=0x5d; buf[233]=0x80; buf[234]=0x69; buf[235]=0x95; buf[236]=0x48; buf[237]=0xd5; buf[238]=0x5b; buf[239]=0x68
52 buf[240]=0x1a; buf[241]=0x83; buf[242]=0x75; buf[243]=0x49; buf[244]=0x8c; buf[245]=0x49; buf[246]=0x3c; buf[247]=0x9c; buf[248]=0xb3; buf[249]=0xe7; buf[250]=0x2a; buf[251]=0x86
53 buf[252]=0x3a; buf[253]=0x3a; buf[254]=0x9d; buf[255]=0x3d; buf[256]=0x98; buf[257]=0xb7; buf[258]=0xf9; buf[259]=0x0b; buf[260]=0xd9; buf[261]=0xbe; buf[262]=0xe7; buf[263]=0x9c
54 buf[264]=0x70; buf[265]=0x5d; buf[266]=0xbb; buf[267]=0xc6; buf[268]=0x66; buf[269]=0x46; buf[270]=0x14; buf[271]=0xbd; buf[272]=0x6f; buf[273]=0xf0; buf[274]=0xab; buf[275]=0x5c
55 buf[276]=0x69; buf[277]=0x94; buf[278]=0xf7; buf[279]=0xda; buf[280]=0x87; buf[281]=0x77; buf[282]=0x77; buf[283]=0xa6; buf[284]=0x79; buf[285]=0xc5; buf[286]=0xa8; buf[287]=0xb4
56 return 0
57}
58
59func _kat_fill_1(buf: *u8) -> i64 {
60 buf[288]=0x34; buf[289]=0x05; buf[290]=0x0b; buf[291]=0x10; buf[292]=0xa3; buf[293]=0xaa; buf[294]=0xa1; buf[295]=0xbf; buf[296]=0xaf; buf[297]=0xfc; buf[298]=0xa7; buf[299]=0xba
61 buf[300]=0x47; buf[301]=0xfe; buf[302]=0xe9; buf[303]=0xbd; buf[304]=0xc6; buf[305]=0x9e; buf[306]=0xba; buf[307]=0xb9; buf[308]=0xa8; buf[309]=0x8b; buf[310]=0xf9; buf[311]=0x99
62 buf[312]=0xac; buf[313]=0xcb; buf[314]=0x00; buf[315]=0x9d; buf[316]=0xf9; buf[317]=0x08; buf[318]=0x89; buf[319]=0xa7; buf[320]=0xc4; buf[321]=0xe2; buf[322]=0x27; buf[323]=0x83
63 buf[324]=0x63; buf[325]=0x7c; buf[326]=0x97; buf[327]=0x8a; buf[328]=0x6a; buf[329]=0xab; buf[330]=0xab; buf[331]=0x1c; buf[332]=0xa5; buf[333]=0xb5; buf[334]=0x63; buf[335]=0x8f
64 buf[336]=0x43; buf[337]=0x70; buf[338]=0x56; buf[339]=0x72; buf[340]=0x36; buf[341]=0x18; buf[342]=0x96; buf[343]=0xed; buf[344]=0x7a; buf[345]=0x53; buf[346]=0x55; buf[347]=0x8a
65 buf[348]=0x7e; buf[349]=0x99; buf[350]=0x75; buf[351]=0x04; buf[352]=0x93; buf[353]=0xa3; buf[354]=0x24; buf[355]=0x85; buf[356]=0x41; buf[357]=0x87; buf[358]=0x6a; buf[359]=0x86
66 buf[360]=0x7d; buf[361]=0x43; buf[362]=0x48; buf[363]=0x8c; buf[364]=0x7e; buf[365]=0x6c; buf[366]=0x57; buf[367]=0x77; buf[368]=0x3d; buf[369]=0x87; buf[370]=0xb3; buf[371]=0xb7
67 buf[372]=0xac; buf[373]=0x83; buf[374]=0xee; buf[375]=0x9a; buf[376]=0x45; buf[377]=0x4b; buf[378]=0xe8; buf[379]=0xa3; buf[380]=0x72; buf[381]=0x95; buf[382]=0x33; buf[383]=0xc7
68 buf[384]=0xd3; buf[385]=0xb7; buf[386]=0xa5; buf[387]=0x54; buf[388]=0x9c; buf[389]=0x58; buf[390]=0x76; buf[391]=0x95; buf[392]=0x88; buf[393]=0x80; buf[394]=0xbb; buf[395]=0xff
69 buf[396]=0x03; buf[397]=0xec; buf[398]=0xa0; buf[399]=0x75; buf[400]=0x02; buf[401]=0xa5; buf[402]=0x79; buf[403]=0x98; buf[404]=0x48; buf[405]=0x74; buf[406]=0x10; buf[407]=0x74
70 buf[408]=0xa2; buf[409]=0x36; buf[410]=0xe0; buf[411]=0xa4; buf[412]=0x89; buf[413]=0x03; buf[414]=0x6a; buf[415]=0x92; buf[416]=0x3b; buf[417]=0x42; buf[418]=0x3a; buf[419]=0x9e
71 buf[420]=0x8a; buf[421]=0x97; buf[422]=0x61; buf[423]=0x86; buf[424]=0x57; buf[425]=0x04; buf[426]=0xf3; buf[427]=0x76; buf[428]=0x43; buf[429]=0x2c; buf[430]=0x5d; buf[431]=0x64
72 buf[432]=0x3f; buf[433]=0x04; buf[434]=0x3d; buf[435]=0x10; buf[436]=0xff; buf[437]=0xe6; buf[438]=0xe6; buf[439]=0xbf; buf[440]=0xbf; buf[441]=0xe6; buf[442]=0xa8; buf[443]=0xec
73 buf[444]=0xb1; buf[445]=0x8b; buf[446]=0xe0; buf[447]=0x1d; buf[448]=0xb2; buf[449]=0xaa; buf[450]=0x7f; buf[451]=0xce; buf[452]=0xa7; buf[453]=0x79; buf[454]=0x1b; buf[455]=0x64
74 buf[456]=0x5d; buf[457]=0x9a; buf[458]=0x13; buf[459]=0xc0; buf[460]=0x4a; buf[461]=0x9c; buf[462]=0x2a; buf[463]=0x38; buf[464]=0xf8; buf[465]=0x16; buf[466]=0xf3; buf[467]=0xa9
75 buf[468]=0x96; buf[469]=0x9c; buf[470]=0x55; buf[471]=0x07; buf[472]=0x18; buf[473]=0x9a; buf[474]=0x6c; buf[475]=0x39; buf[476]=0x3b; buf[477]=0x78; buf[478]=0xc1; buf[479]=0x57
76 buf[480]=0x4e; buf[481]=0x5e; buf[482]=0x06; buf[483]=0x76; buf[484]=0x80; buf[485]=0x76; buf[486]=0x97; buf[487]=0x46; buf[488]=0x52; buf[489]=0x29; buf[490]=0x5c; buf[491]=0x23
77 buf[492]=0x2e; buf[493]=0x0f; buf[494]=0x9a; buf[495]=0xa9; buf[496]=0x18; buf[497]=0x9b; buf[498]=0x71; buf[499]=0x5b; buf[500]=0x69; buf[501]=0x86; buf[502]=0x2a; buf[503]=0x4a
78 buf[504]=0x2c; buf[505]=0x8a; buf[506]=0xf9; buf[507]=0x5b; buf[508]=0xa6; buf[509]=0x5b; buf[510]=0x73; buf[511]=0x60; buf[512]=0x7f; buf[513]=0x05; buf[514]=0x95; buf[515]=0x39
79 buf[516]=0xc7; buf[517]=0xab; buf[518]=0x87; buf[519]=0x71; buf[520]=0x77; buf[521]=0x6b; buf[522]=0x43; buf[523]=0xc2; buf[524]=0x60; buf[525]=0x6b; buf[526]=0xa7; buf[527]=0x87
80 buf[528]=0x28; buf[529]=0x75; buf[530]=0x76; buf[531]=0x5f; buf[532]=0x66; buf[533]=0x62; buf[534]=0xbc; buf[535]=0xf4; buf[536]=0x65; buf[537]=0x2c; buf[538]=0x95; buf[539]=0x98
81 buf[540]=0x3f; buf[541]=0x4a; buf[542]=0x9a; buf[543]=0xaf; buf[544]=0x5b; buf[545]=0xca; buf[546]=0x77; buf[547]=0xb8; buf[548]=0xf8; buf[549]=0xdf; buf[550]=0xcc; buf[551]=0x9d
82 buf[552]=0xb7; buf[553]=0x68; buf[554]=0xa4; buf[555]=0x95; buf[556]=0x83; buf[557]=0x43; buf[558]=0xac; buf[559]=0x6d; buf[560]=0xc9; buf[561]=0x93; buf[562]=0xc3; buf[563]=0x51
83 buf[564]=0x5a; buf[565]=0x29; buf[566]=0xd6; buf[567]=0x0d; buf[568]=0xcd; buf[569]=0x89; buf[570]=0xc0; buf[571]=0xb8; buf[572]=0xf5; buf[573]=0xbb; buf[574]=0x68; buf[575]=0x70
84 return 0
85}
86
87func _kat_fill_2(buf: *u8) -> i64 {
88 buf[576]=0x01; buf[577]=0x05; buf[578]=0xbe; buf[579]=0x11; buf[580]=0xb7; buf[581]=0xfa; buf[582]=0x79; buf[583]=0xff; buf[584]=0x7f; buf[585]=0x7a; buf[586]=0x6b; buf[587]=0xb7
89 buf[588]=0x95; buf[589]=0x80; buf[590]=0x2c; buf[591]=0x99; buf[592]=0x8f; buf[593]=0x69; buf[594]=0xaa; buf[595]=0x57; buf[596]=0x99; buf[597]=0xa7; buf[598]=0x0c; buf[599]=0xeb
90 buf[600]=0x6f; buf[601]=0xa9; buf[602]=0x47; buf[603]=0xa8; buf[604]=0x89; buf[605]=0xdf; buf[606]=0xa7; buf[607]=0x9c; buf[608]=0x9f; buf[609]=0xcb; buf[610]=0xbf; buf[611]=0x87
91 buf[612]=0xda; buf[613]=0xbd; buf[614]=0x9a; buf[615]=0xdd; buf[616]=0xda; buf[617]=0xe6; buf[618]=0x5a; buf[619]=0x2f; buf[620]=0xd7; buf[621]=0xc0; buf[622]=0xbe; buf[623]=0xcf
92 buf[624]=0x95; buf[625]=0x76; buf[626]=0x6d; buf[627]=0x29; buf[628]=0x3b; buf[629]=0xb6; buf[630]=0x78; buf[631]=0xad; buf[632]=0x83; buf[633]=0x98; buf[634]=0xca; buf[635]=0xcc
93 buf[636]=0x45; buf[637]=0x03; buf[638]=0x85; buf[639]=0x84; buf[640]=0x92; buf[641]=0x97; buf[642]=0xaf; buf[643]=0x9a; buf[644]=0x6b; buf[645]=0x9b; buf[646]=0x62; buf[647]=0x51
94 buf[648]=0xa6; buf[649]=0x68; buf[650]=0x30; buf[651]=0xf0; buf[652]=0xd0; buf[653]=0xa8; buf[654]=0x88; buf[655]=0x48; buf[656]=0xbf; buf[657]=0xa0; buf[658]=0x77; buf[659]=0x83
95 buf[660]=0x24; buf[661]=0x74; buf[662]=0x7c; buf[663]=0x57; buf[664]=0x6f; buf[665]=0xbb; buf[666]=0x04; buf[667]=0x41; buf[668]=0x55; buf[669]=0x34; buf[670]=0x2a; buf[671]=0xe8
96 buf[672]=0xf1; buf[673]=0x64; buf[674]=0x4b; buf[675]=0x44; buf[676]=0x49; buf[677]=0x8d; buf[678]=0x2e; buf[679]=0x7d; buf[680]=0x3a; buf[681]=0x4c; buf[682]=0xcb; buf[683]=0xa2
97 buf[684]=0x60; buf[685]=0x49; buf[686]=0x38; buf[687]=0x4c; buf[688]=0x94; buf[689]=0x60; buf[690]=0x90; buf[691]=0x52; buf[692]=0x11; buf[693]=0x34; buf[694]=0x62; buf[695]=0x81
98 buf[696]=0x4a; buf[697]=0x9e; buf[698]=0x47; buf[699]=0x65; buf[700]=0x69; buf[701]=0x7a; buf[702]=0x06; buf[703]=0x9a; buf[704]=0x70; buf[705]=0x8c; buf[706]=0x9f; buf[707]=0xa5
99 buf[708]=0x64; buf[709]=0x6a; buf[710]=0xa2; buf[711]=0x8f; buf[712]=0x81; buf[713]=0xfd; buf[714]=0xc2; buf[715]=0x96; buf[716]=0x97; buf[717]=0x49; buf[718]=0x8c; buf[719]=0xac
100 buf[720]=0x96; buf[721]=0x04; buf[722]=0x56; buf[723]=0x11; buf[724]=0xbd; buf[725]=0xec; buf[726]=0xe8; buf[727]=0xeb; buf[728]=0x7f; buf[729]=0xa6; buf[730]=0xa7; buf[731]=0xad
101 buf[732]=0xc8; buf[733]=0xb5; buf[734]=0xaf; buf[735]=0xd6; buf[736]=0x24; buf[737]=0xca; buf[738]=0x86; buf[739]=0xff; buf[740]=0x27; buf[741]=0xbb; buf[742]=0xdb; buf[743]=0x00
102 buf[744]=0xc0; buf[745]=0xf7; buf[746]=0xc8; buf[747]=0xa8; buf[748]=0x49; buf[749]=0x89; buf[750]=0x4b; buf[751]=0x88; buf[752]=0x85; buf[753]=0xbc; buf[754]=0x6d; buf[755]=0x79
103 buf[756]=0x6c; buf[757]=0x4b; buf[758]=0x47; buf[759]=0xf8; buf[760]=0x0c; buf[761]=0x9b; buf[762]=0x63; buf[763]=0x67; buf[764]=0x1e; buf[765]=0x56; buf[766]=0xaa; buf[767]=0xbd
104 buf[768]=0x27; buf[769]=0x6c; buf[770]=0xb5; buf[771]=0xd9; buf[772]=0xa4; buf[773]=0xc5; buf[774]=0x7c; buf[775]=0x74; buf[776]=0xe6; buf[777]=0xf0; buf[778]=0xcf; buf[779]=0xa3
105 buf[780]=0x7d; buf[781]=0x0d; buf[782]=0x8b; buf[783]=0x45; buf[784]=0xf7; buf[785]=0x69; buf[786]=0x2b; buf[787]=0x85; buf[788]=0x5e; buf[789]=0x8f; buf[790]=0xd5; buf[791]=0xa0
106 buf[792]=0x89; buf[793]=0x1a; buf[794]=0xcf; buf[795]=0xb5; buf[796]=0x79; buf[797]=0xb7; buf[798]=0x74; buf[799]=0xac; buf[800]=0x89; buf[801]=0x38; buf[802]=0x8a; buf[803]=0x83
107 buf[804]=0xb8; buf[805]=0xf3; buf[806]=0x59; buf[807]=0xf7; buf[808]=0x54; buf[809]=0x12; buf[810]=0x32; buf[811]=0x83; buf[812]=0xb9; buf[813]=0x06; buf[814]=0x56; buf[815]=0x9b
108 buf[816]=0x66; buf[817]=0x72; buf[818]=0x84; buf[819]=0x89; buf[820]=0x69; buf[821]=0x7b; buf[822]=0x6b; buf[823]=0x77; buf[824]=0x44; buf[825]=0x84; buf[826]=0xc6; buf[827]=0x95
109 buf[828]=0x8f; buf[829]=0x58; buf[830]=0x30; buf[831]=0x8b; buf[832]=0xbb; buf[833]=0xa5; buf[834]=0x93; buf[835]=0x76; buf[836]=0x0b; buf[837]=0xa6; buf[838]=0x80; buf[839]=0x46
110 buf[840]=0xa6; buf[841]=0xa7; buf[842]=0x62; buf[843]=0x41; buf[844]=0x98; buf[845]=0x38; buf[846]=0x8a; buf[847]=0x92; buf[848]=0x7f; buf[849]=0x96; buf[850]=0x54; buf[851]=0xf3
111 buf[852]=0x9c; buf[853]=0xac; buf[854]=0x62; buf[855]=0x55; buf[856]=0x54; buf[857]=0xfa; buf[858]=0x65; buf[859]=0x86; buf[860]=0x06; buf[861]=0x94; buf[862]=0x72; buf[863]=0xb5
112 return 0
113}
114
115func _kat_fill_3(buf: *u8) -> i64 {
116 buf[864]=0xf8; buf[865]=0x04; buf[866]=0x3c; buf[867]=0x11; buf[868]=0xef; buf[869]=0xf9; buf[870]=0xaa; buf[871]=0xea; buf[872]=0xb2; buf[873]=0xff; buf[874]=0x9f; buf[875]=0xe6
117 buf[876]=0x6f; buf[877]=0x18; buf[878]=0x83; buf[879]=0x14; buf[880]=0x9b; buf[881]=0x7c; buf[882]=0xa8; buf[883]=0x4e; buf[884]=0xb2; buf[885]=0xd9; buf[886]=0xb0; buf[887]=0x77
118 buf[888]=0xe6; buf[889]=0x89; buf[890]=0xd8; buf[891]=0xd7; buf[892]=0x9c; buf[893]=0x59; buf[894]=0x84; buf[895]=0xea; buf[896]=0xb6; buf[897]=0x64; buf[898]=0xc9; buf[899]=0x18
119 buf[900]=0xd7; buf[901]=0x89; buf[902]=0xcb; buf[903]=0xaa; buf[904]=0xb9; buf[905]=0x91; buf[906]=0x35; buf[907]=0xbc; buf[908]=0x07; buf[909]=0x7f; buf[910]=0x87; buf[911]=0xb5
120 buf[912]=0x00; buf[913]=0x5b; buf[914]=0xd8; buf[915]=0x0b; buf[916]=0xa9; buf[917]=0x73; buf[918]=0xa8; buf[919]=0x95; buf[920]=0x93; buf[921]=0xc8; buf[922]=0x65; buf[923]=0xbb
121 buf[924]=0x88; buf[925]=0x54; buf[926]=0x2c; buf[927]=0xc3; buf[928]=0x89; buf[929]=0xb2; buf[930]=0xc8; buf[931]=0xdb; buf[932]=0x3a; buf[933]=0x55; buf[934]=0xa1; buf[935]=0x48
122 buf[936]=0xb6; buf[937]=0x55; buf[938]=0xf9; buf[939]=0x6f; buf[940]=0x5b; buf[941]=0x00; buf[942]=0x74; buf[943]=0x3a; buf[944]=0x78; buf[945]=0x7b; buf[946]=0x75; buf[947]=0x84
123 buf[948]=0x16; buf[949]=0x95; buf[950]=0x72; buf[951]=0x04; buf[952]=0x73; buf[953]=0xa6; buf[954]=0xd4; buf[955]=0x87; buf[956]=0x46; buf[957]=0xc9; buf[958]=0x52; buf[959]=0x62
124 buf[960]=0xa3; buf[961]=0xf0; buf[962]=0xa4; buf[963]=0x44; buf[964]=0x83; buf[965]=0x9f; buf[966]=0xc3; buf[967]=0x84; buf[968]=0x77; buf[969]=0x17; buf[970]=0xa4; buf[971]=0xa6
125 buf[972]=0x68; buf[973]=0x94; buf[974]=0xba; buf[975]=0x6a; buf[976]=0xe8; buf[977]=0x04; buf[978]=0x8a; buf[979]=0xca; buf[980]=0x9d; buf[981]=0x7a; buf[982]=0x50; buf[983]=0xaa
126 buf[984]=0xb7; buf[985]=0x96; buf[986]=0xb6; buf[987]=0xda; buf[988]=0x93; buf[989]=0xcc; buf[990]=0xf9; buf[991]=0x3a; buf[992]=0x74; buf[993]=0xaf; buf[994]=0x88; buf[995]=0x90
127 buf[996]=0xae; buf[997]=0xae; buf[998]=0x34; buf[999]=0xb8; buf[1000]=0x1f; buf[1001]=0xf9; buf[1002]=0x39; buf[1003]=0x86; buf[1004]=0xa9; buf[1005]=0x1c; buf[1006]=0x62; buf[1007]=0x69
128 buf[1008]=0xd6; buf[1009]=0x04; buf[1010]=0x5b; buf[1011]=0x11; buf[1012]=0xb1; buf[1013]=0xdf; buf[1014]=0xfd; buf[1015]=0xf1; buf[1016]=0xa4; buf[1017]=0xd4; buf[1018]=0xf7; buf[1019]=0xa2
129 buf[1020]=0x63; buf[1021]=0x76; buf[1022]=0xef; buf[1023]=0xd3; buf[1024]=0xc5; buf[1025]=0x5a; buf[1026]=0xbd; buf[1027]=0x10; buf[1028]=0xb5; buf[1029]=0x1d; buf[1030]=0x6c; buf[1031]=0x9c
130 buf[1032]=0xbd; buf[1033]=0x90; buf[1034]=0xd7; buf[1035]=0x5d; buf[1036]=0xab; buf[1037]=0x8a; buf[1038]=0x12; buf[1039]=0xa4; buf[1040]=0x65; buf[1041]=0xb4; buf[1042]=0x76; buf[1043]=0x99
131 buf[1044]=0x30; buf[1045]=0x44; buf[1046]=0xf5; buf[1047]=0x05; buf[1048]=0x67; buf[1049]=0x98; buf[1050]=0x5f; buf[1051]=0x33; buf[1052]=0x74; buf[1053]=0x25; buf[1054]=0x53; buf[1055]=0x01
132 buf[1056]=0x48; buf[1057]=0x56; buf[1058]=0x2b; buf[1059]=0x98; buf[1060]=0x89; buf[1061]=0x19; buf[1062]=0x88; buf[1063]=0x09; buf[1064]=0x78; buf[1065]=0x68; buf[1066]=0x54; buf[1067]=0x77
133 buf[1068]=0xac; buf[1069]=0xe9; buf[1070]=0x29; buf[1071]=0x54; buf[1072]=0x7a; buf[1073]=0x47; buf[1074]=0x77; buf[1075]=0x7c; buf[1076]=0x4f; buf[1077]=0xcc; buf[1078]=0x16; buf[1079]=0x17
134 buf[1080]=0x34; buf[1081]=0x89; buf[1082]=0x6b; buf[1083]=0x64; buf[1084]=0x5a; buf[1085]=0x79; buf[1086]=0x70; buf[1087]=0x66; buf[1088]=0x8c; buf[1089]=0xe8; buf[1090]=0xf6; buf[1091]=0xa5
135 buf[1092]=0xb5; buf[1093]=0x86; buf[1094]=0x73; buf[1095]=0x94; buf[1096]=0xab; buf[1097]=0x9b; buf[1098]=0x6a; buf[1099]=0xc3; buf[1100]=0xde; buf[1101]=0xd9; buf[1102]=0xa5; buf[1103]=0xbc
136 buf[1104]=0xec; buf[1105]=0x37; buf[1106]=0xe7; buf[1107]=0xef; buf[1108]=0xcb; buf[1109]=0x0a; buf[1110]=0x6b; buf[1111]=0x79; buf[1112]=0xcb; buf[1113]=0xc6; buf[1114]=0xe6; buf[1115]=0xcf
137 buf[1116]=0x65; buf[1117]=0x7f; buf[1118]=0x40; buf[1119]=0x8c; buf[1120]=0x85; buf[1121]=0x4a; buf[1122]=0x97; buf[1123]=0xab; buf[1124]=0x99; buf[1125]=0x08; buf[1126]=0xa0; buf[1127]=0x55
138 buf[1128]=0x89; buf[1129]=0x95; buf[1130]=0xf4; buf[1131]=0xcd; buf[1132]=0x59; buf[1133]=0xca; buf[1134]=0xcd; buf[1135]=0x98; buf[1136]=0xac; buf[1137]=0xea; buf[1138]=0x7b; buf[1139]=0x7c
139 buf[1140]=0xb7; buf[1141]=0x77; buf[1142]=0x99; buf[1143]=0x3f; buf[1144]=0x68; buf[1145]=0x8b; buf[1146]=0x8b; buf[1147]=0x46; buf[1148]=0x99; buf[1149]=0x7c; buf[1150]=0xc7; buf[1151]=0x2b
140 return 0
141}
142
143func _kat_fill_4(buf: *u8) -> i64 {
144 buf[1152]=0x48; buf[1153]=0x04; buf[1154]=0x49; buf[1155]=0x10; buf[1156]=0xe4; buf[1157]=0xfc; buf[1158]=0xff; buf[1159]=0xbe; buf[1160]=0xec; buf[1161]=0xff; buf[1162]=0xbf; buf[1163]=0xb4
145 buf[1164]=0x2a; buf[1165]=0x16; buf[1166]=0x27; buf[1167]=0x0e; buf[1168]=0xbc; buf[1169]=0xeb; buf[1170]=0xae; buf[1171]=0x60; buf[1172]=0xcf; buf[1173]=0xca; buf[1174]=0x88; buf[1175]=0xae
146 buf[1176]=0x9c; buf[1177]=0xf6; buf[1178]=0x42; buf[1179]=0xaf; buf[1180]=0x0f; buf[1181]=0x69; buf[1182]=0xf4; buf[1183]=0x9d; buf[1184]=0xbc; buf[1185]=0x8a; buf[1186]=0x6a; buf[1187]=0x97
147 buf[1188]=0xaa; buf[1189]=0x04; buf[1190]=0x68; buf[1191]=0x5b; buf[1192]=0x93; buf[1193]=0xbc; buf[1194]=0xf7; buf[1195]=0x78; buf[1196]=0x96; buf[1197]=0x4b; buf[1198]=0x40; buf[1199]=0x5b
148 buf[1200]=0x68; buf[1201]=0xb8; buf[1202]=0x56; buf[1203]=0x6b; buf[1204]=0x82; buf[1205]=0x18; buf[1206]=0x95; buf[1207]=0xa5; buf[1208]=0x7c; buf[1209]=0x67; buf[1210]=0xac; buf[1211]=0xb6
149 buf[1212]=0x8c; buf[1213]=0x4d; buf[1214]=0xa3; buf[1215]=0x69; buf[1216]=0xb3; buf[1217]=0x67; buf[1218]=0x0c; buf[1219]=0x84; buf[1220]=0x9d; buf[1221]=0x6b; buf[1222]=0x9c; buf[1223]=0xc8
150 buf[1224]=0x3b; buf[1225]=0xd5; buf[1226]=0xc6; buf[1227]=0x74; buf[1228]=0x9f; buf[1229]=0x80; buf[1230]=0xd6; buf[1231]=0xfc; buf[1232]=0x96; buf[1233]=0xa6; buf[1234]=0x4b; buf[1235]=0x96
151 buf[1236]=0xb5; buf[1237]=0x28; buf[1238]=0x89; buf[1239]=0x48; buf[1240]=0x0b; buf[1241]=0xb6; buf[1242]=0xd7; buf[1243]=0x65; buf[1244]=0xca; buf[1245]=0x9b; buf[1246]=0xe7; buf[1247]=0x47
152 buf[1248]=0x39; buf[1249]=0x1b; buf[1250]=0x42; buf[1251]=0x67; buf[1252]=0xa0; buf[1253]=0x3e; buf[1254]=0xf8; buf[1255]=0xa7; buf[1256]=0x49; buf[1257]=0x45; buf[1258]=0x7f; buf[1259]=0x79
153 buf[1260]=0x67; buf[1261]=0x65; buf[1262]=0x73; buf[1263]=0x2a; buf[1264]=0x9a; buf[1265]=0x11; buf[1266]=0x11; buf[1267]=0x21; buf[1268]=0x47; buf[1269]=0xde; buf[1270]=0x57; buf[1271]=0x07
154 buf[1272]=0x64; buf[1273]=0x36; buf[1274]=0x74; buf[1275]=0x21; buf[1276]=0xf6; buf[1277]=0x53; buf[1278]=0x37; buf[1279]=0x7b; buf[1280]=0xc0; buf[1281]=0x2f; buf[1282]=0xb2; buf[1283]=0xbe
155 buf[1284]=0xa5; buf[1285]=0xa1; buf[1286]=0x56; buf[1287]=0x44; buf[1288]=0x86; buf[1289]=0xc6; buf[1290]=0x71; buf[1291]=0x78; buf[1292]=0x59; buf[1293]=0x83; buf[1294]=0x40; buf[1295]=0x87
156 buf[1296]=0x35; buf[1297]=0x04; buf[1298]=0xa3; buf[1299]=0x0f; buf[1300]=0xf8; buf[1301]=0xae; buf[1302]=0xf6; buf[1303]=0xff; buf[1304]=0xfd; buf[1305]=0xa6; buf[1306]=0xbf; buf[1307]=0xfb
157 buf[1308]=0x43; buf[1309]=0xba; buf[1310]=0xf5; buf[1311]=0x83; buf[1312]=0x55; buf[1313]=0x04; buf[1314]=0x92; buf[1315]=0x50; buf[1316]=0x08; buf[1317]=0x09; buf[1318]=0xcc; buf[1319]=0x21
158 buf[1320]=0x60; buf[1321]=0xc3; buf[1322]=0x3d; buf[1323]=0xaa; buf[1324]=0x8a; buf[1325]=0xf2; buf[1326]=0x76; buf[1327]=0x3d; buf[1328]=0xdc; buf[1329]=0x25; buf[1330]=0x73; buf[1331]=0x6b
159 buf[1332]=0x6c; buf[1333]=0x78; buf[1334]=0x9a; buf[1335]=0x53; buf[1336]=0x4a; buf[1337]=0x3a; buf[1338]=0x24; buf[1339]=0xda; buf[1340]=0x69; buf[1341]=0xa7; buf[1342]=0x4f; buf[1343]=0xb4
160 buf[1344]=0x79; buf[1345]=0x77; buf[1346]=0xe3; buf[1347]=0x52; buf[1348]=0x86; buf[1349]=0x70; buf[1350]=0x7c; buf[1351]=0x79; buf[1352]=0x9c; buf[1353]=0x51; buf[1354]=0x6f; buf[1355]=0x4c
161 buf[1356]=0x28; buf[1357]=0xb7; buf[1358]=0x65; buf[1359]=0x4d; buf[1360]=0x4d; buf[1361]=0xad; buf[1362]=0x48; buf[1363]=0x94; buf[1364]=0x4d; buf[1365]=0xaf; buf[1366]=0x7a; buf[1367]=0x9b
162 buf[1368]=0xca; buf[1369]=0x89; buf[1370]=0x08; buf[1371]=0x90; buf[1372]=0x89; buf[1373]=0xb4; buf[1374]=0x26; buf[1375]=0x27; buf[1376]=0x98; buf[1377]=0x44; buf[1378]=0x53; buf[1379]=0x9b
163 buf[1380]=0x7e; buf[1381]=0x2e; buf[1382]=0x9a; buf[1383]=0xd2; buf[1384]=0x4a; buf[1385]=0x05; buf[1386]=0xc7; buf[1387]=0xd0; buf[1388]=0x91; buf[1389]=0x39; buf[1390]=0x45; buf[1391]=0x34
164 buf[1392]=0xdb; buf[1393]=0xa9; buf[1394]=0x89; buf[1395]=0xf7; buf[1396]=0x19; buf[1397]=0x52; buf[1398]=0xd9; buf[1399]=0x56; buf[1400]=0xff; buf[1401]=0x98; buf[1402]=0x88; buf[1403]=0xbc
165 buf[1404]=0xc9; buf[1405]=0xd0; buf[1406]=0x98; buf[1407]=0xe9; buf[1408]=0x4b; buf[1409]=0x38; buf[1410]=0x9a; buf[1411]=0x44; buf[1412]=0x17; buf[1413]=0x49; buf[1414]=0x66; buf[1415]=0x76
166 buf[1416]=0x84; buf[1417]=0x75; buf[1418]=0x36; buf[1419]=0x91; buf[1420]=0x38; buf[1421]=0x96; buf[1422]=0x85; buf[1423]=0xb9; buf[1424]=0x89; buf[1425]=0x6b; buf[1426]=0xe6; buf[1427]=0x8d
167 buf[1428]=0x8c; buf[1429]=0x22; buf[1430]=0xc5; buf[1431]=0xa5; buf[1432]=0x60; buf[1433]=0x7b; buf[1434]=0x0f; buf[1435]=0x28; buf[1436]=0x97; buf[1437]=0x6a; buf[1438]=0xa6; buf[1439]=0x6c
168 return 0
169}
170
171func _kat_fill_5(buf: *u8) -> i64 {
172 buf[1440]=0x2a; buf[1441]=0x05; buf[1442]=0x2e; buf[1443]=0x11; buf[1444]=0xa2; buf[1445]=0xf6; buf[1446]=0xbf; buf[1447]=0xf4; buf[1448]=0x9f; buf[1449]=0xf5; buf[1450]=0xba; buf[1451]=0xbf
173 buf[1452]=0xf7; buf[1453]=0x66; buf[1454]=0xfb; buf[1455]=0xc2; buf[1456]=0xf9; buf[1457]=0x4b; buf[1458]=0x75; buf[1459]=0xed; buf[1460]=0x7a; buf[1461]=0x7e; buf[1462]=0xa5; buf[1463]=0x94
174 buf[1464]=0x6a; buf[1465]=0x9f; buf[1466]=0x79; buf[1467]=0x54; buf[1468]=0xc6; buf[1469]=0x79; buf[1470]=0xe8; buf[1471]=0x81; buf[1472]=0xa7; buf[1473]=0x49; buf[1474]=0x31; buf[1475]=0x93
175 buf[1476]=0x7a; buf[1477]=0xc0; buf[1478]=0x87; buf[1479]=0x77; buf[1480]=0xa1; buf[1481]=0x7b; buf[1482]=0x81; buf[1483]=0x0d; buf[1484]=0x73; buf[1485]=0x96; buf[1486]=0x84; buf[1487]=0x74
176 buf[1488]=0x67; buf[1489]=0xe9; buf[1490]=0xd9; buf[1491]=0x87; buf[1492]=0xd7; buf[1493]=0x89; buf[1494]=0xb5; buf[1495]=0xd9; buf[1496]=0x85; buf[1497]=0x8a; buf[1498]=0xd7; buf[1499]=0x57
177 buf[1500]=0x86; buf[1501]=0xe6; buf[1502]=0xda; buf[1503]=0xb5; buf[1504]=0x92; buf[1505]=0xa9; buf[1506]=0xa2; buf[1507]=0xd2; buf[1508]=0xa8; buf[1509]=0x68; buf[1510]=0xc0; buf[1511]=0x08
178 buf[1512]=0x9a; buf[1513]=0x85; buf[1514]=0x5e; buf[1515]=0xcc; buf[1516]=0xcc; buf[1517]=0x89; buf[1518]=0xbb; buf[1519]=0x6c; buf[1520]=0x8a; buf[1521]=0x66; buf[1522]=0x06; buf[1523]=0xac
179 buf[1524]=0xbe; buf[1525]=0x85; buf[1526]=0xda; buf[1527]=0x9c; buf[1528]=0x8a; buf[1529]=0x4f; buf[1530]=0xb7; buf[1531]=0x68; buf[1532]=0x6b; buf[1533]=0x7d; buf[1534]=0x86; buf[1535]=0xdb
180 buf[1536]=0xc8; buf[1537]=0x7e; buf[1538]=0x9f; buf[1539]=0x6a; buf[1540]=0x90; buf[1541]=0xbc; buf[1542]=0xad; buf[1543]=0x44; buf[1544]=0x97; buf[1545]=0xaf; buf[1546]=0xed; buf[1547]=0x56
181 buf[1548]=0x9b; buf[1549]=0x79; buf[1550]=0xa1; buf[1551]=0x9e; buf[1552]=0xdb; buf[1553]=0xcc; buf[1554]=0x6b; buf[1555]=0x40; buf[1556]=0xaa; buf[1557]=0x89; buf[1558]=0x66; buf[1559]=0x16
182 buf[1560]=0x09; buf[1561]=0x63; buf[1562]=0x73; buf[1563]=0xcf; buf[1564]=0xa8; buf[1565]=0x7b; buf[1566]=0x9b; buf[1567]=0x76; buf[1568]=0xb7; buf[1569]=0xa7; buf[1570]=0x65; buf[1571]=0x36
183 buf[1572]=0x75; buf[1573]=0xc6; buf[1574]=0xd9; buf[1575]=0xeb; buf[1576]=0xdf; buf[1577]=0x8f; buf[1578]=0x47; buf[1579]=0x8a; buf[1580]=0x77; buf[1581]=0x19; buf[1582]=0x96; buf[1583]=0xb9
184 buf[1584]=0xae; buf[1585]=0x05; buf[1586]=0x57; buf[1587]=0x12; buf[1588]=0xbe; buf[1589]=0xf4; buf[1590]=0xec; buf[1591]=0xfb; buf[1592]=0xbf; buf[1593]=0xd7; buf[1594]=0xe3; buf[1595]=0xad
185 buf[1596]=0x47; buf[1597]=0x19; buf[1598]=0x05; buf[1599]=0xd0; buf[1600]=0x89; buf[1601]=0x39; buf[1602]=0x3f; buf[1603]=0x79; buf[1604]=0x4a; buf[1605]=0x3f; buf[1606]=0x57; buf[1607]=0x3a
186 buf[1608]=0x29; buf[1609]=0x12; buf[1610]=0xf8; buf[1611]=0x48; buf[1612]=0x69; buf[1613]=0x56; buf[1614]=0x5c; buf[1615]=0x77; buf[1616]=0x6d; buf[1617]=0x17; buf[1618]=0x0c; buf[1619]=0x0f
187 buf[1620]=0x73; buf[1621]=0x58; buf[1622]=0x5a; buf[1623]=0x6d; buf[1624]=0x70; buf[1625]=0x0a; buf[1626]=0x6c; buf[1627]=0x08; buf[1628]=0x36; buf[1629]=0x1c; buf[1630]=0x0a; buf[1631]=0x49
188 buf[1632]=0x9b; buf[1633]=0x58; buf[1634]=0x68; buf[1635]=0xd3; buf[1636]=0x73; buf[1637]=0x64; buf[1638]=0x46; buf[1639]=0x53; buf[1640]=0xe5; buf[1641]=0xb5; buf[1642]=0x6e; buf[1643]=0x08
189 buf[1644]=0x55; buf[1645]=0x25; buf[1646]=0x9d; buf[1647]=0x34; buf[1648]=0x79; buf[1649]=0x49; buf[1650]=0x79; buf[1651]=0x67; buf[1652]=0x7c; buf[1653]=0x86; buf[1654]=0x79; buf[1655]=0x94
190 buf[1656]=0x5a; buf[1657]=0x35; buf[1658]=0x2d; buf[1659]=0x26; buf[1660]=0x77; buf[1661]=0x6e; buf[1662]=0x78; buf[1663]=0x40; buf[1664]=0x85; buf[1665]=0x5a; buf[1666]=0x7d; buf[1667]=0x20
191 buf[1668]=0x97; buf[1669]=0xca; buf[1670]=0x89; buf[1671]=0x59; buf[1672]=0x7d; buf[1673]=0xa8; buf[1674]=0x64; buf[1675]=0x57; buf[1676]=0xbb; buf[1677]=0x7e; buf[1678]=0x7e; buf[1679]=0x95
192 buf[1680]=0x9c; buf[1681]=0x39; buf[1682]=0x72; buf[1683]=0x5f; buf[1684]=0xb5; buf[1685]=0x1e; buf[1686]=0x74; buf[1687]=0x76; buf[1688]=0x85; buf[1689]=0xfe; buf[1690]=0xcd; buf[1691]=0x0e
193 buf[1692]=0x95; buf[1693]=0x83; buf[1694]=0xb3; buf[1695]=0x99; buf[1696]=0x7f; buf[1697]=0xb8; buf[1698]=0x6a; buf[1699]=0x79; buf[1700]=0xe6; buf[1701]=0x39; buf[1702]=0x9a; buf[1703]=0x68
194 buf[1704]=0x68; buf[1705]=0xa6; buf[1706]=0x75; buf[1707]=0xc8; buf[1708]=0x86; buf[1709]=0x86; buf[1710]=0xcc; buf[1711]=0xbe; buf[1712]=0x3b; buf[1713]=0xab; buf[1714]=0x06; buf[1715]=0xbf
195 buf[1716]=0xf9; buf[1717]=0x86; buf[1718]=0x90; buf[1719]=0xd8; buf[1720]=0x78; buf[1721]=0x93; buf[1722]=0x57; buf[1723]=0x49; buf[1724]=0x88; buf[1725]=0x79; buf[1726]=0xa9; buf[1727]=0x9b
196 return 0
197}
198
199func _kat_fill_6(buf: *u8) -> i64 {
200 buf[1728]=0xf5; buf[1729]=0x04; buf[1730]=0xb4; buf[1731]=0x10; buf[1732]=0xb8; buf[1733]=0xed; buf[1734]=0xbf; buf[1735]=0xef; buf[1736]=0xb1; buf[1737]=0xeb; buf[1738]=0xbf; buf[1739]=0xb5
201 buf[1740]=0x18; buf[1741]=0x19; buf[1742]=0x4a; buf[1743]=0x40; buf[1744]=0x55; buf[1745]=0x86; buf[1746]=0xb9; buf[1747]=0x02; buf[1748]=0x82; buf[1749]=0x4c; buf[1750]=0x60; buf[1751]=0x34
202 buf[1752]=0x47; buf[1753]=0x8b; buf[1754]=0x49; buf[1755]=0xd7; buf[1756]=0xc6; buf[1757]=0x57; buf[1758]=0x12; buf[1759]=0x33; buf[1760]=0x63; buf[1761]=0x84; buf[1762]=0xbe; buf[1763]=0x87
203 buf[1764]=0x5b; buf[1765]=0x71; buf[1766]=0x54; buf[1767]=0x4a; buf[1768]=0xe0; buf[1769]=0x16; buf[1770]=0x66; buf[1771]=0x73; buf[1772]=0x79; buf[1773]=0x7c; buf[1774]=0xfb; buf[1775]=0x89
204 buf[1776]=0xfe; buf[1777]=0xd7; buf[1778]=0x90; buf[1779]=0xba; buf[1780]=0x04; buf[1781]=0xd7; buf[1782]=0x4a; buf[1783]=0x74; buf[1784]=0xa6; buf[1785]=0x2b; buf[1786]=0xc8; buf[1787]=0x73
205 buf[1788]=0xc3; buf[1789]=0x47; buf[1790]=0x48; buf[1791]=0xa9; buf[1792]=0x69; buf[1793]=0x89; buf[1794]=0xd2; buf[1795]=0x66; buf[1796]=0xc2; buf[1797]=0x75; buf[1798]=0xca; buf[1799]=0x59
206 buf[1800]=0xcf; buf[1801]=0xa7; buf[1802]=0x8a; buf[1803]=0x0b; buf[1804]=0x86; buf[1805]=0xa8; buf[1806]=0xd9; buf[1807]=0x7c; buf[1808]=0xb6; buf[1809]=0xa7; buf[1810]=0x6a; buf[1811]=0xaa
207 buf[1812]=0x4c; buf[1813]=0x15; buf[1814]=0x89; buf[1815]=0x88; buf[1816]=0x6f; buf[1817]=0xa3; buf[1818]=0x9b; buf[1819]=0x5b; buf[1820]=0xa5; buf[1821]=0x5d; buf[1822]=0x86; buf[1823]=0x93
208 buf[1824]=0x73; buf[1825]=0xf3; buf[1826]=0x4c; buf[1827]=0x85; buf[1828]=0x61; buf[1829]=0xa9; buf[1830]=0xa4; buf[1831]=0x73; buf[1832]=0x82; buf[1833]=0xab; buf[1834]=0x62; buf[1835]=0xbf
209 buf[1836]=0x8d; buf[1837]=0x00; buf[1838]=0x91; buf[1839]=0x86; buf[1840]=0x83; buf[1841]=0x97; buf[1842]=0x06; buf[1843]=0x7b; buf[1844]=0x46; buf[1845]=0xf7; buf[1846]=0x48; buf[1847]=0x82
210 buf[1848]=0x7c; buf[1849]=0x42; buf[1850]=0x13; buf[1851]=0x92; buf[1852]=0x6d; buf[1853]=0x71; buf[1854]=0x4b; buf[1855]=0x3b; buf[1856]=0x87; buf[1857]=0xa4; buf[1858]=0x74; buf[1859]=0xb6
211 buf[1860]=0x94; buf[1861]=0x64; buf[1862]=0x71; buf[1863]=0x37; buf[1864]=0x65; buf[1865]=0x6f; buf[1866]=0xb5; buf[1867]=0x8e; buf[1868]=0x33; buf[1869]=0x20; buf[1870]=0xb1; buf[1871]=0x0d
212 buf[1872]=0xc0; buf[1873]=0x05; buf[1874]=0xcd; buf[1875]=0x11; buf[1876]=0xa3; buf[1877]=0xe5; buf[1878]=0xad; buf[1879]=0xe6; buf[1880]=0x9d; buf[1881]=0xa4; buf[1882]=0xae; buf[1883]=0xe5
213 buf[1884]=0x75; buf[1885]=0xef; buf[1886]=0xca; buf[1887]=0xea; buf[1888]=0xa8; buf[1889]=0xe5; buf[1890]=0x94; buf[1891]=0x62; buf[1892]=0x21; buf[1893]=0x67; buf[1894]=0x52; buf[1895]=0x95
214 buf[1896]=0xa3; buf[1897]=0xc0; buf[1898]=0x12; buf[1899]=0xc8; buf[1900]=0xad; buf[1901]=0x7c; buf[1902]=0x5d; buf[1903]=0x08; buf[1904]=0xe6; buf[1905]=0xa8; buf[1906]=0x87; buf[1907]=0x71
215 buf[1908]=0x9b; buf[1909]=0xd4; buf[1910]=0x95; buf[1911]=0xfd; buf[1912]=0x65; buf[1913]=0x91; buf[1914]=0x64; buf[1915]=0x52; buf[1916]=0x57; buf[1917]=0x84; buf[1918]=0xae; buf[1919]=0xa2
216 buf[1920]=0x39; buf[1921]=0xc8; buf[1922]=0xc9; buf[1923]=0x61; buf[1924]=0x2d; buf[1925]=0xcb; buf[1926]=0xbb; buf[1927]=0xd9; buf[1928]=0x95; buf[1929]=0x66; buf[1930]=0x75; buf[1931]=0x94
217 buf[1932]=0xeb; buf[1933]=0x77; buf[1934]=0xc9; buf[1935]=0x9a; buf[1936]=0x0a; buf[1937]=0x95; buf[1938]=0x60; buf[1939]=0x9a; buf[1940]=0x77; buf[1941]=0xf8; buf[1942]=0x28; buf[1943]=0xce
218 buf[1944]=0x75; buf[1945]=0x7e; buf[1946]=0xd7; buf[1947]=0x36; buf[1948]=0xc8; buf[1949]=0x57; buf[1950]=0x88; buf[1951]=0x26; buf[1952]=0x68; buf[1953]=0x7e; buf[1954]=0x6a; buf[1955]=0x86
219 buf[1956]=0x4d; buf[1957]=0x56; buf[1958]=0x29; buf[1959]=0xad; buf[1960]=0x77; buf[1961]=0xf6; buf[1962]=0x02; buf[1963]=0xa6; buf[1964]=0x3c; buf[1965]=0x58; buf[1966]=0x87; buf[1967]=0xaf
220 buf[1968]=0x85; buf[1969]=0x7d; buf[1970]=0x6b; buf[1971]=0x52; buf[1972]=0x47; buf[1973]=0x6b; buf[1974]=0x75; buf[1975]=0x60; buf[1976]=0x79; buf[1977]=0x76; buf[1978]=0x55; buf[1979]=0xae
221 buf[1980]=0x2c; buf[1981]=0x8e; buf[1982]=0x36; buf[1983]=0x48; buf[1984]=0x9c; buf[1985]=0xd9; buf[1986]=0xd7; buf[1987]=0x57; buf[1988]=0x78; buf[1989]=0x6a; buf[1990]=0x97; buf[1991]=0x5b
222 buf[1992]=0x89; buf[1993]=0x87; buf[1994]=0x75; buf[1995]=0xab; buf[1996]=0x76; buf[1997]=0xa9; buf[1998]=0x86; buf[1999]=0x77; buf[2000]=0x97; buf[2001]=0xd6; buf[2002]=0xa8; buf[2003]=0xd9
223 buf[2004]=0xc6; buf[2005]=0x67; buf[2006]=0x00; buf[2007]=0xc9; buf[2008]=0x7e; buf[2009]=0x8a; buf[2010]=0x38; buf[2011]=0xc3; buf[2012]=0x89; buf[2013]=0x54; buf[2014]=0xb3; buf[2015]=0xeb
224 return 0
225}
226
227func _kat_fill_7(buf: *u8) -> i64 {
228 buf[2016]=0x6a; buf[2017]=0x05; buf[2018]=0xc5; buf[2019]=0x10; buf[2020]=0xe6; buf[2021]=0xe9; buf[2022]=0xed; buf[2023]=0x9d; buf[2024]=0xed; buf[2025]=0xec; buf[2026]=0xdf; buf[2027]=0x9f
229 buf[2028]=0x04; buf[2029]=0xc7; buf[2030]=0xff; buf[2031]=0xf7; buf[2032]=0x7b; buf[2033]=0x5b; buf[2034]=0x8a; buf[2035]=0x79; buf[2036]=0xda; buf[2037]=0x22; buf[2038]=0x5c; buf[2039]=0xf4
230 buf[2040]=0x8d; buf[2041]=0x9c; buf[2042]=0x72; buf[2043]=0xbd; buf[2044]=0x79; buf[2045]=0x6a; buf[2046]=0x1e; buf[2047]=0xfe; buf[2048]=0x71; buf[2049]=0x74; buf[2050]=0xf6; buf[2051]=0x56
231 buf[2052]=0x70; buf[2053]=0x78; buf[2054]=0x39; buf[2055]=0x99; buf[2056]=0x79; buf[2057]=0xe6; buf[2058]=0x4b; buf[2059]=0xae; buf[2060]=0x9b; buf[2061]=0x56; buf[2062]=0x08; buf[2063]=0x1a
232 buf[2064]=0x84; buf[2065]=0x54; buf[2066]=0x64; buf[2067]=0x34; buf[2068]=0x53; buf[2069]=0x64; buf[2070]=0x84; buf[2071]=0x83; buf[2072]=0x04; buf[2073]=0x31; buf[2074]=0xc3; buf[2075]=0x17
233 buf[2076]=0x86; buf[2077]=0x75; buf[2078]=0x77; buf[2079]=0x81; buf[2080]=0xe7; buf[2081]=0x91; buf[2082]=0x88; buf[2083]=0x23; buf[2084]=0x37; buf[2085]=0xa9; buf[2086]=0x84; buf[2087]=0x1f
234 buf[2088]=0xd6; buf[2089]=0xe7; buf[2090]=0xf2; buf[2091]=0xe0; buf[2092]=0x60; buf[2093]=0x51; buf[2094]=0xa8; buf[2095]=0x68; buf[2096]=0xc9; buf[2097]=0x66; buf[2098]=0xc3; buf[2099]=0xf3
235 buf[2100]=0x24; buf[2101]=0x72; buf[2102]=0x89; buf[2103]=0xb9; buf[2104]=0x88; buf[2105]=0xa2; buf[2106]=0x98; buf[2107]=0x89; buf[2108]=0x34; buf[2109]=0x60; buf[2110]=0xdb; buf[2111]=0x47
236 buf[2112]=0x7e; buf[2113]=0x69; buf[2114]=0x73; buf[2115]=0xa5; buf[2116]=0x67; buf[2117]=0x53; buf[2118]=0xda; buf[2119]=0x54; buf[2120]=0x48; buf[2121]=0x70; buf[2122]=0x84; buf[2123]=0x5c
237 buf[2124]=0x08; buf[2125]=0xa5; buf[2126]=0x55; buf[2127]=0x63; buf[2128]=0x37; buf[2129]=0x84; buf[2130]=0x22; buf[2131]=0x24; buf[2132]=0x3b; buf[2133]=0x66; buf[2134]=0x86; buf[2135]=0x07
238 buf[2136]=0xb7; buf[2137]=0xb6; buf[2138]=0x68; buf[2139]=0xe8; buf[2140]=0xf8; buf[2141]=0x69; buf[2142]=0x8a; buf[2143]=0xc6; buf[2144]=0xca; buf[2145]=0x93; buf[2146]=0x58; buf[2147]=0x5a
239 buf[2148]=0x96; buf[2149]=0x47; buf[2150]=0x89; buf[2151]=0x84; buf[2152]=0x10; buf[2153]=0x1a; buf[2154]=0xc8; buf[2155]=0xc4; buf[2156]=0x4f; buf[2157]=0xa4; buf[2158]=0xe6; buf[2159]=0x78
240 buf[2160]=0x6b; buf[2161]=0x04; buf[2162]=0xc7; buf[2163]=0x10; buf[2164]=0xb3; buf[2165]=0xf2; buf[2166]=0xfa; buf[2167]=0xf2; buf[2168]=0xaf; buf[2169]=0xe1; buf[2170]=0xef; buf[2171]=0x6f
241 buf[2172]=0x56; buf[2173]=0xfa; buf[2174]=0x5f; buf[2175]=0x53; buf[2176]=0x3c; buf[2177]=0x99; buf[2178]=0x78; buf[2179]=0x18; buf[2180]=0xf4; buf[2181]=0xc8; buf[2182]=0xba; buf[2183]=0x57
242 buf[2184]=0x16; buf[2185]=0x5c; buf[2186]=0x70; buf[2187]=0x8c; buf[2188]=0x57; buf[2189]=0xa2; buf[2190]=0x9b; buf[2191]=0x28; buf[2192]=0x59; buf[2193]=0x55; buf[2194]=0x59; buf[2195]=0xa8
243 buf[2196]=0x36; buf[2197]=0x7b; buf[2198]=0x1d; buf[2199]=0x1a; buf[2200]=0x0f; buf[2201]=0x41; buf[2202]=0x08; buf[2203]=0x5b; buf[2204]=0x87; buf[2205]=0x26; buf[2206]=0x73; buf[2207]=0x16
244 buf[2208]=0xb4; buf[2209]=0x39; buf[2210]=0x48; buf[2211]=0x95; buf[2212]=0xd9; buf[2213]=0x85; buf[2214]=0x9f; buf[2215]=0x66; buf[2216]=0xa2; buf[2217]=0xb2; buf[2218]=0x9a; buf[2219]=0xb4
245 buf[2220]=0x17; buf[2221]=0xa6; buf[2222]=0x28; buf[2223]=0xc6; buf[2224]=0x36; buf[2225]=0xb5; buf[2226]=0xc2; buf[2227]=0x99; buf[2228]=0x06; buf[2229]=0xe7; buf[2230]=0x97; buf[2231]=0x35
246 buf[2232]=0x99; buf[2233]=0x96; buf[2234]=0x26; buf[2235]=0x76; buf[2236]=0x24; buf[2237]=0xd8; buf[2238]=0xf0; buf[2239]=0xa3; buf[2240]=0xc0; buf[2241]=0x84; buf[2242]=0xe1; buf[2243]=0x6c
247 buf[2244]=0x8d; buf[2245]=0x96; buf[2246]=0xc4; buf[2247]=0xad; buf[2248]=0xab; buf[2249]=0x5e; buf[2250]=0x78; buf[2251]=0x0f; buf[2252]=0xa3; buf[2253]=0xeb; buf[2254]=0x8d; buf[2255]=0xb7
248 buf[2256]=0x79; buf[2257]=0xd7; buf[2258]=0x84; buf[2259]=0x7e; buf[2260]=0xcc; buf[2261]=0x4a; buf[2262]=0x6e; buf[2263]=0xb3; buf[2264]=0xc1; buf[2265]=0x9a; buf[2266]=0xd7; buf[2267]=0x92
249 buf[2268]=0x8f; buf[2269]=0x96; buf[2270]=0x87; buf[2271]=0x76; buf[2272]=0x4b; buf[2273]=0x65; buf[2274]=0x36; buf[2275]=0x79; buf[2276]=0x8a; buf[2277]=0x36; buf[2278]=0xb5; buf[2279]=0x2f
250 buf[2280]=0x09; buf[2281]=0x28; buf[2282]=0x43; buf[2283]=0x57; buf[2284]=0x97; buf[2285]=0x4d; buf[2286]=0x66; buf[2287]=0x29; buf[2288]=0x25; buf[2289]=0x43; buf[2290]=0x2b; buf[2291]=0x23
251 buf[2292]=0x5c; buf[2293]=0xa4; buf[2294]=0x60; buf[2295]=0x3b; buf[2296]=0xe7; buf[2297]=0x5c; buf[2298]=0x14; buf[2299]=0x18; buf[2300]=0x74; buf[2301]=0x54; buf[2302]=0x07; buf[2303]=0x15
252 return 0
253}
254
255func _kat_fill(buf: *u8) -> i64 {
256 _kat_fill_0(buf)
257 _kat_fill_1(buf)
258 _kat_fill_2(buf)
259 _kat_fill_3(buf)
260 _kat_fill_4(buf)
261 _kat_fill_5(buf)
262 _kat_fill_6(buf)
263 _kat_fill_7(buf)
264 return 0
265}
266
267func kat_run() -> i64 {
268 let buf: *u8 = sys_mmap(KAT_BYTES)
269 _kat_fill(buf)
270
271 // ---- f32 path: dequant the whole row, check element0 bits ----
272 let wf32: *i64 = sys_mmap(KAT_HID * 8) as *i64
273 nx_q4k_to_f32(buf, 0, KAT_HID, wf32)
274 if wf32[0] != 0x3AD18400 { return 10 } // element0 = +0.0015985, EXACT bits
275
276 // Activation col[i] = 1024 + (i%5)*256 (Q10).
277 let col: *i64 = sys_mmap(KAT_HID * 8) as *i64
278 var i: i64 = 0
279 while i < KAT_HID { col[i] = 1024 + (i - (i / 5) * 5) * 256; i = i + 1 }
280
281 // f32 dot: sum wf32[i] (f32) * (col[i] as exact f32).
282 var accf: i64 = 0
283 i = 0
284 while i < KAT_HID { accf = nx_f32_add(accf, nx_f32_mul(wf32[i], nx_q10_to_f32(col[i]))); i = i + 1 }
285 // Golden f32 dot bits = 0x3E5CEF0D (+0.2157557); allow tiny f32 accum drift (<1e-4).
286 let golden: i64 = 0x3E5CEF0D
287 let diff: i64 = nx_f32_sub(accf, golden) & 0x7FFFFFFF
288 let tol: i64 = nx_f32_div(nx_i32_to_f32(1), nx_i32_to_f32(10000))
289 if nx_f32_lt(diff, tol) != 1 { return 20 } // fail if diff >= tol
290
291 // ---- integer Q24 fused path: nx_q4k_dot_row_col ----
292 let it: *NxQ4KBlockIter = nx_q4k_iter_alloc()
293 let dot_q34: i64 = nx_q4k_dot_row_col(buf, 0, KAT_NBLK, col, it)
294 let dot_q10: i64 = nx_q4km_q20_to_q10(dot_q34)
295 let int_f32: i64 = nx_q10_to_f32(dot_q10)
296 let idiff: i64 = nx_f32_sub(int_f32, accf) & 0x7FFFFFFF
297 let absref: i64 = accf & 0x7FFFFFFF
298 let tol2f: i64 = nx_f32_div(nx_i32_to_f32(2), nx_i32_to_f32(100))
299 let ithresh: i64 = nx_f32_mul(tol2f, absref)
300 if nx_f32_lt(idiff, ithresh) != 1 { return 30 } // fail if idiff >= 2%*|accf|
301
302 let gdiff: i64 = nx_f32_sub(int_f32, golden) & 0x7FFFFFFF
303 let gthresh: i64 = nx_f32_mul(tol2f, golden & 0x7FFFFFFF)
304 if nx_f32_lt(gdiff, gthresh) != 1 { return 40 } // fail if gdiff >= 2%*golden
305
306 return 0
307}
308
309// D001 migration 2026-08-01. nx_gate_dry_apply SKIPPED this gate ("no verdict=GREEN tail") because it
310// reported ONLY through exit codes, so nothing could read its outcome. Hand-migrated rather than
311// resent with allow_own_verdict=yes -- that hatch is what D001 exists to prevent.
312//
313// The early returns are ORDERED, so each tooth's true state is EXACTLY derivable from the code:
314// reaching return 30 proves T1 and T2 already passed. A tooth that never executed is reported FAIL,
315// never PASS -- a check that did not run is not a check that succeeded, which is the vacuous-pass
316// class this whole rung exists to kill.
317func main() -> i64 {
318 let ctr: *i64 = gv_ctr()
319 gv_head("nx_q4k_ggml_kat -- golden Q4_K regression vs ggml-true values (real Q4_K_M model bytes)" as *u8)
320 let rc: i64 = kat_run()
321
322 var ok: i64 = 0
323 if rc != 10 { ok = 1 }
324 gv_check("T1 f32 dequant element0 bits == 0x3AD18400 (ggml-EXACT, not a tolerance)" as *u8, ok, ctr)
325
326 ok = 0
327 if rc != 10 { if rc != 20 { ok = 1 } }
328 gv_check("T2 f32 row-0 dot within 1e-4 of golden 0x3E5CEF0D" as *u8, ok, ctr)
329
330 ok = 0
331 if rc == 0 { ok = 1 }
332 if rc == 40 { ok = 1 }
333 gv_check("T3 FUSED integer Q24 path within 2pct of the f32 accumulation" as *u8, ok, ctr)
334
335 ok = 0
336 if rc == 0 { ok = 1 }
337 gv_check("T4 FUSED integer path within 2pct of the ggml golden -- THE 2pct BAND that authorises the dispatcher flip" as *u8, ok, ctr)
338
339 let v: i64 = gv_verdict("Q4K-GGML-KAT" as *u8, ctr, "fused integer Q4_K agrees with ggml-true on real model bytes" as *u8)
340 sys_exit(v)
341 return v
342}