code wiki / (root) / nx_gzip_inflate_kat_test.nx

nx_gzip_inflate_kat_test.nx source

↩ module page · 887 lines · 22666 B

1// nx_gzip_inflate_kat_test.nx -- gzip READ path KAT (Content-Encoding: gzip). 2// Proves nx_gzip_inflate decodes REAL python-`gzip` streams (what servers 3// actually send) end-to-end: RFC1952 header + DEFLATE payload + CRC32 + ISIZE. 4// Composes the proven gunzip (nx_gzip_wrap -> nx_deflate_inflate + nx_crc32), 5// not reinvented. This is the browser's gzip-page READ keystone. 6// G1 plain stream (FLG=0) -> OK, bytes exact, crc & isize verify 7// G2 stream WITH FNAME header field -> OK (optional-field walk exercised) 8// G3 corrupted CRC32 trailer -> NX_GZ_ERR_CRC_MISMATCH (neg-control) 9// G4 corrupted magic ID1 -> NX_GZ_ERR_BAD_MAGIC (neg-control) 10// G3/G4 make the gate DISCRIMINATE (it rejects corruption, not just passes). 11// expect_exit: 0 12// license_tier: ORIGINAL 13 14import "nx_syscalls.nx" 15import "nx_runtime.nx" 16import "nx_gzip_wrap.nx" 17 18func main() -> nx_int { 19 // ---- G1: plain real gzip stream ---- 20 let g1: *u8 = (sys_mmap(168)) as *u8 21 g1[0] = 0x1f as u8 22 g1[1] = 0x8b as u8 23 g1[2] = 0x08 as u8 24 g1[3] = 0x00 as u8 25 g1[4] = 0x00 as u8 26 g1[5] = 0x00 as u8 27 g1[6] = 0x00 as u8 28 g1[7] = 0x00 as u8 29 g1[8] = 0x02 as u8 30 g1[9] = 0xff as u8 31 g1[10] = 0x35 as u8 32 g1[11] = 0x8e as u8 33 g1[12] = 0xb1 as u8 34 g1[13] = 0x0e as u8 35 g1[14] = 0xc2 as u8 36 g1[15] = 0x30 as u8 37 g1[16] = 0x10 as u8 38 g1[17] = 0x43 as u8 39 g1[18] = 0x7f as u8 40 g1[19] = 0xe5 as u8 41 g1[20] = 0x3e as u8 42 g1[21] = 0xa0 as u8 43 g1[22] = 0x34 as u8 44 g1[23] = 0x02 as u8 45 g1[24] = 0x36 as u8 46 g1[25] = 0x74 as u8 47 g1[26] = 0xca as u8 48 g1[27] = 0x52 as u8 49 g1[28] = 0x75 as u8 50 g1[29] = 0xe8 as u8 51 g1[30] = 0x4a as u8 52 g1[31] = 0x3b as u8 53 g1[32] = 0xb1 as u8 54 g1[33] = 0x25 as u8 55 g1[34] = 0xcd as u8 56 g1[35] = 0x91 as u8 57 g1[36] = 0x44 as u8 58 g1[37] = 0x82 as u8 59 g1[38] = 0x4b as u8 60 g1[39] = 0x94 as u8 61 g1[40] = 0x0b as u8 62 g1[41] = 0x20 as u8 63 g1[42] = 0xf8 as u8 64 g1[43] = 0x7a as u8 65 g1[44] = 0x22 as u8 66 g1[45] = 0x2a as u8 67 g1[46] = 0x24 as u8 68 g1[47] = 0x4f as u8 69 g1[48] = 0xf6 as u8 70 g1[49] = 0xb3 as u8 71 g1[50] = 0x65 as u8 72 g1[51] = 0x0c as u8 73 g1[52] = 0xf5 as u8 74 g1[53] = 0x7e as u8 75 g1[54] = 0xd3 as u8 76 g1[55] = 0x68 as u8 77 g1[56] = 0x93 as u8 78 g1[57] = 0x7b as u8 79 g1[58] = 0x6b as u8 80 g1[59] = 0x0c as u8 81 g1[60] = 0x7b as u8 82 g1[61] = 0x3d as u8 83 g1[62] = 0xa7 as u8 84 g1[63] = 0x27 as u8 85 g1[64] = 0x15 as u8 86 g1[65] = 0x8a as u8 87 g1[66] = 0x9e as u8 88 g1[67] = 0xc1 as u8 89 g1[68] = 0x7f as u8 90 g1[69] = 0x62 as u8 91 g1[70] = 0x86 as u8 92 g1[71] = 0x42 as u8 93 g1[72] = 0xc6 as u8 94 g1[73] = 0x41 as u8 95 g1[74] = 0x36 as u8 96 g1[75] = 0x35 as u8 97 g1[76] = 0xa0 as u8 98 g1[77] = 0x6a as u8 99 g1[78] = 0x21 as u8 100 g1[79] = 0x66 as u8 101 g1[80] = 0xbd as u8 102 g1[81] = 0x04 as u8 103 g1[82] = 0x02 as u8 104 g1[83] = 0x5b as u8 105 g1[84] = 0xd2 as u8 106 g1[85] = 0x4b as u8 107 g1[86] = 0xa8 as u8 108 g1[87] = 0x80 as u8 109 g1[88] = 0x7f as u8 110 g1[89] = 0x70 as u8 111 g1[90] = 0x63 as u8 112 g1[91] = 0x04 as u8 113 g1[92] = 0x86 as u8 114 g1[93] = 0xc4 as u8 115 g1[94] = 0x95 as u8 116 g1[95] = 0xb8 as u8 117 g1[96] = 0xee as u8 118 g1[97] = 0x46 as u8 119 g1[98] = 0x5e as u8 120 g1[99] = 0x93 as u8 121 g1[100] = 0x8b as u8 122 g1[101] = 0xec as u8 123 g1[102] = 0x4f as u8 124 g1[103] = 0xff as u8 125 g1[104] = 0xae as u8 126 g1[105] = 0xe4 as u8 127 g1[106] = 0xc4 as u8 128 g1[107] = 0x42 as u8 129 g1[108] = 0xd2 as u8 130 g1[109] = 0x41 as u8 131 g1[110] = 0xdb as u8 132 g1[111] = 0x8c as u8 133 g1[112] = 0xd7 as u8 134 g1[113] = 0x48 as u8 135 g1[114] = 0x0d as u8 136 g1[115] = 0x3d as u8 137 g1[116] = 0x0f as u8 138 g1[117] = 0xc7 as u8 139 g1[118] = 0x03 as u8 140 g1[119] = 0x18 as u8 141 g1[120] = 0x76 as u8 142 g1[121] = 0x30 as u8 143 g1[122] = 0xcd as u8 144 g1[123] = 0xd3 as u8 145 g1[124] = 0x65 as u8 146 g1[125] = 0xec as u8 147 g1[126] = 0xa0 as u8 148 g1[127] = 0x06 as u8 149 g1[128] = 0xe2 as u8 150 g1[129] = 0x46 as u8 151 g1[130] = 0xb2 as u8 152 g1[131] = 0xa3 as u8 153 g1[132] = 0x22 as u8 154 g1[133] = 0x3d as u8 155 g1[134] = 0x18 as u8 156 g1[135] = 0xbb as u8 157 g1[136] = 0x6e as u8 158 g1[137] = 0x6a as u8 159 g1[138] = 0x56 as u8 160 g1[139] = 0x26 as u8 161 g1[140] = 0x53 as u8 162 g1[141] = 0xa5 as u8 163 g1[142] = 0x47 as u8 164 g1[143] = 0x95 as u8 165 g1[144] = 0x35 as u8 166 g1[145] = 0xaa as u8 167 g1[146] = 0xed as u8 168 g1[147] = 0x9e as u8 169 g1[148] = 0xfa as u8 170 g1[149] = 0x7d as u8 171 g1[150] = 0xfd as u8 172 g1[151] = 0x02 as u8 173 g1[152] = 0x26 as u8 174 g1[153] = 0x4e as u8 175 g1[154] = 0x4c as u8 176 g1[155] = 0xc8 as u8 177 g1[156] = 0xb2 as u8 178 g1[157] = 0x00 as u8 179 g1[158] = 0x00 as u8 180 g1[159] = 0x00 as u8 181 let e1: *u8 = (sys_mmap(186)) as *u8 182 e1[0] = 0x3c as u8 183 e1[1] = 0x68 as u8 184 e1[2] = 0x74 as u8 185 e1[3] = 0x6d as u8 186 e1[4] = 0x6c as u8 187 e1[5] = 0x3e as u8 188 e1[6] = 0x3c as u8 189 e1[7] = 0x62 as u8 190 e1[8] = 0x6f as u8 191 e1[9] = 0x64 as u8 192 e1[10] = 0x79 as u8 193 e1[11] = 0x3e as u8 194 e1[12] = 0x3c as u8 195 e1[13] = 0x68 as u8 196 e1[14] = 0x31 as u8 197 e1[15] = 0x3e as u8 198 e1[16] = 0x53 as u8 199 e1[17] = 0x6f as u8 200 e1[18] = 0x76 as u8 201 e1[19] = 0x65 as u8 202 e1[20] = 0x72 as u8 203 e1[21] = 0x65 as u8 204 e1[22] = 0x69 as u8 205 e1[23] = 0x67 as u8 206 e1[24] = 0x6e as u8 207 e1[25] = 0x20 as u8 208 e1[26] = 0x67 as u8 209 e1[27] = 0x7a as u8 210 e1[28] = 0x69 as u8 211 e1[29] = 0x70 as u8 212 e1[30] = 0x20 as u8 213 e1[31] = 0x72 as u8 214 e1[32] = 0x65 as u8 215 e1[33] = 0x61 as u8 216 e1[34] = 0x64 as u8 217 e1[35] = 0x20 as u8 218 e1[36] = 0x70 as u8 219 e1[37] = 0x61 as u8 220 e1[38] = 0x74 as u8 221 e1[39] = 0x68 as u8 222 e1[40] = 0x3c as u8 223 e1[41] = 0x2f as u8 224 e1[42] = 0x68 as u8 225 e1[43] = 0x31 as u8 226 e1[44] = 0x3e as u8 227 e1[45] = 0x3c as u8 228 e1[46] = 0x70 as u8 229 e1[47] = 0x3e as u8 230 e1[48] = 0x54 as u8 231 e1[49] = 0x68 as u8 232 e1[50] = 0x65 as u8 233 e1[51] = 0x20 as u8 234 e1[52] = 0x62 as u8 235 e1[53] = 0x72 as u8 236 e1[54] = 0x6f as u8 237 e1[55] = 0x77 as u8 238 e1[56] = 0x73 as u8 239 e1[57] = 0x65 as u8 240 e1[58] = 0x72 as u8 241 e1[59] = 0x20 as u8 242 e1[60] = 0x67 as u8 243 e1[61] = 0x75 as u8 244 e1[62] = 0x6e as u8 245 e1[63] = 0x7a as u8 246 e1[64] = 0x69 as u8 247 e1[65] = 0x70 as u8 248 e1[66] = 0x73 as u8 249 e1[67] = 0x20 as u8 250 e1[68] = 0x43 as u8 251 e1[69] = 0x6f as u8 252 e1[70] = 0x6e as u8 253 e1[71] = 0x74 as u8 254 e1[72] = 0x65 as u8 255 e1[73] = 0x6e as u8 256 e1[74] = 0x74 as u8 257 e1[75] = 0x2d as u8 258 e1[76] = 0x45 as u8 259 e1[77] = 0x6e as u8 260 e1[78] = 0x63 as u8 261 e1[79] = 0x6f as u8 262 e1[80] = 0x64 as u8 263 e1[81] = 0x69 as u8 264 e1[82] = 0x6e as u8 265 e1[83] = 0x67 as u8 266 e1[84] = 0x3a as u8 267 e1[85] = 0x20 as u8 268 e1[86] = 0x67 as u8 269 e1[87] = 0x7a as u8 270 e1[88] = 0x69 as u8 271 e1[89] = 0x70 as u8 272 e1[90] = 0x20 as u8 273 e1[91] = 0x72 as u8 274 e1[92] = 0x65 as u8 275 e1[93] = 0x73 as u8 276 e1[94] = 0x70 as u8 277 e1[95] = 0x6f as u8 278 e1[96] = 0x6e as u8 279 e1[97] = 0x73 as u8 280 e1[98] = 0x65 as u8 281 e1[99] = 0x73 as u8 282 e1[100] = 0x2c as u8 283 e1[101] = 0x20 as u8 284 e1[102] = 0x76 as u8 285 e1[103] = 0x65 as u8 286 e1[104] = 0x72 as u8 287 e1[105] = 0x69 as u8 288 e1[106] = 0x66 as u8 289 e1[107] = 0x69 as u8 290 e1[108] = 0x65 as u8 291 e1[109] = 0x73 as u8 292 e1[110] = 0x20 as u8 293 e1[111] = 0x43 as u8 294 e1[112] = 0x52 as u8 295 e1[113] = 0x43 as u8 296 e1[114] = 0x33 as u8 297 e1[115] = 0x32 as u8 298 e1[116] = 0x20 as u8 299 e1[117] = 0x61 as u8 300 e1[118] = 0x6e as u8 301 e1[119] = 0x64 as u8 302 e1[120] = 0x20 as u8 303 e1[121] = 0x49 as u8 304 e1[122] = 0x53 as u8 305 e1[123] = 0x49 as u8 306 e1[124] = 0x5a as u8 307 e1[125] = 0x45 as u8 308 e1[126] = 0x2c as u8 309 e1[127] = 0x20 as u8 310 e1[128] = 0x74 as u8 311 e1[129] = 0x68 as u8 312 e1[130] = 0x65 as u8 313 e1[131] = 0x6e as u8 314 e1[132] = 0x20 as u8 315 e1[133] = 0x72 as u8 316 e1[134] = 0x65 as u8 317 e1[135] = 0x6e as u8 318 e1[136] = 0x64 as u8 319 e1[137] = 0x65 as u8 320 e1[138] = 0x72 as u8 321 e1[139] = 0x73 as u8 322 e1[140] = 0x2e as u8 323 e1[141] = 0x20 as u8 324 e1[142] = 0x61 as u8 325 e1[143] = 0x62 as u8 326 e1[144] = 0x63 as u8 327 e1[145] = 0x61 as u8 328 e1[146] = 0x62 as u8 329 e1[147] = 0x63 as u8 330 e1[148] = 0x61 as u8 331 e1[149] = 0x62 as u8 332 e1[150] = 0x63 as u8 333 e1[151] = 0x20 as u8 334 e1[152] = 0x72 as u8 335 e1[153] = 0x65 as u8 336 e1[154] = 0x70 as u8 337 e1[155] = 0x65 as u8 338 e1[156] = 0x61 as u8 339 e1[157] = 0x74 as u8 340 e1[158] = 0x73 as u8 341 e1[159] = 0x2e as u8 342 e1[160] = 0x3c as u8 343 e1[161] = 0x2f as u8 344 e1[162] = 0x70 as u8 345 e1[163] = 0x3e as u8 346 e1[164] = 0x3c as u8 347 e1[165] = 0x2f as u8 348 e1[166] = 0x62 as u8 349 e1[167] = 0x6f as u8 350 e1[168] = 0x64 as u8 351 e1[169] = 0x79 as u8 352 e1[170] = 0x3e as u8 353 e1[171] = 0x3c as u8 354 e1[172] = 0x2f as u8 355 e1[173] = 0x68 as u8 356 e1[174] = 0x74 as u8 357 e1[175] = 0x6d as u8 358 e1[176] = 0x6c as u8 359 e1[177] = 0x3e as u8 360 let r1: *NxGzipResult = nx_gzip_inflate(g1, 160, 306) 361 if r1 == (0 as *NxGzipResult) { return 10 } 362 if r1.error_code != NX_GZ_OK { return 11 } 363 if r1.output_size != 178 { return 12 } 364 if r1.crc_expected != r1.crc_computed { return 13 } 365 if r1.size_expected != r1.size_actual { return 14 } 366 var i1: nx_int = 0 367 while i1 < 178 { 368 if ((r1.output_data[i1] as nx_int)&255) != ((e1[i1] as nx_int)&255) { return 15 } 369 i1 = i1 + 1 370 } 371 372 // ---- G2: gzip stream WITH FNAME header field ---- 373 let g2: *u8 = (sys_mmap(178)) as *u8 374 g2[0] = 0x1f as u8 375 g2[1] = 0x8b as u8 376 g2[2] = 0x08 as u8 377 g2[3] = 0x08 as u8 378 g2[4] = 0x00 as u8 379 g2[5] = 0x00 as u8 380 g2[6] = 0x00 as u8 381 g2[7] = 0x00 as u8 382 g2[8] = 0x00 as u8 383 g2[9] = 0xff as u8 384 g2[10] = 0x70 as u8 385 g2[11] = 0x61 as u8 386 g2[12] = 0x67 as u8 387 g2[13] = 0x65 as u8 388 g2[14] = 0x2e as u8 389 g2[15] = 0x68 as u8 390 g2[16] = 0x74 as u8 391 g2[17] = 0x6d as u8 392 g2[18] = 0x6c as u8 393 g2[19] = 0x00 as u8 394 g2[20] = 0x35 as u8 395 g2[21] = 0x8e as u8 396 g2[22] = 0xb1 as u8 397 g2[23] = 0x0e as u8 398 g2[24] = 0xc2 as u8 399 g2[25] = 0x30 as u8 400 g2[26] = 0x10 as u8 401 g2[27] = 0x43 as u8 402 g2[28] = 0x7f as u8 403 g2[29] = 0xe5 as u8 404 g2[30] = 0x3e as u8 405 g2[31] = 0xa0 as u8 406 g2[32] = 0x34 as u8 407 g2[33] = 0x02 as u8 408 g2[34] = 0x36 as u8 409 g2[35] = 0x74 as u8 410 g2[36] = 0xca as u8 411 g2[37] = 0x52 as u8 412 g2[38] = 0x75 as u8 413 g2[39] = 0xe8 as u8 414 g2[40] = 0x4a as u8 415 g2[41] = 0x3b as u8 416 g2[42] = 0xb1 as u8 417 g2[43] = 0x25 as u8 418 g2[44] = 0xcd as u8 419 g2[45] = 0x91 as u8 420 g2[46] = 0x44 as u8 421 g2[47] = 0x82 as u8 422 g2[48] = 0x4b as u8 423 g2[49] = 0x94 as u8 424 g2[50] = 0x0b as u8 425 g2[51] = 0x20 as u8 426 g2[52] = 0xf8 as u8 427 g2[53] = 0x7a as u8 428 g2[54] = 0x22 as u8 429 g2[55] = 0x2a as u8 430 g2[56] = 0x24 as u8 431 g2[57] = 0x4f as u8 432 g2[58] = 0xf6 as u8 433 g2[59] = 0xb3 as u8 434 g2[60] = 0x65 as u8 435 g2[61] = 0x0c as u8 436 g2[62] = 0xf5 as u8 437 g2[63] = 0x7e as u8 438 g2[64] = 0xd3 as u8 439 g2[65] = 0x68 as u8 440 g2[66] = 0x93 as u8 441 g2[67] = 0x7b as u8 442 g2[68] = 0x6b as u8 443 g2[69] = 0x0c as u8 444 g2[70] = 0x7b as u8 445 g2[71] = 0x3d as u8 446 g2[72] = 0xa7 as u8 447 g2[73] = 0x27 as u8 448 g2[74] = 0x15 as u8 449 g2[75] = 0x8a as u8 450 g2[76] = 0x9e as u8 451 g2[77] = 0xc1 as u8 452 g2[78] = 0x7f as u8 453 g2[79] = 0x62 as u8 454 g2[80] = 0x86 as u8 455 g2[81] = 0x42 as u8 456 g2[82] = 0xc6 as u8 457 g2[83] = 0x41 as u8 458 g2[84] = 0x36 as u8 459 g2[85] = 0x35 as u8 460 g2[86] = 0xa0 as u8 461 g2[87] = 0x6a as u8 462 g2[88] = 0x21 as u8 463 g2[89] = 0x66 as u8 464 g2[90] = 0xbd as u8 465 g2[91] = 0x04 as u8 466 g2[92] = 0x02 as u8 467 g2[93] = 0x5b as u8 468 g2[94] = 0xd2 as u8 469 g2[95] = 0x4b as u8 470 g2[96] = 0xa8 as u8 471 g2[97] = 0x80 as u8 472 g2[98] = 0x7f as u8 473 g2[99] = 0x70 as u8 474 g2[100] = 0x63 as u8 475 g2[101] = 0x04 as u8 476 g2[102] = 0x86 as u8 477 g2[103] = 0xc4 as u8 478 g2[104] = 0x95 as u8 479 g2[105] = 0xb8 as u8 480 g2[106] = 0xee as u8 481 g2[107] = 0x46 as u8 482 g2[108] = 0x5e as u8 483 g2[109] = 0x93 as u8 484 g2[110] = 0x8b as u8 485 g2[111] = 0xec as u8 486 g2[112] = 0x4f as u8 487 g2[113] = 0xff as u8 488 g2[114] = 0xae as u8 489 g2[115] = 0xe4 as u8 490 g2[116] = 0xc4 as u8 491 g2[117] = 0x42 as u8 492 g2[118] = 0xd2 as u8 493 g2[119] = 0x41 as u8 494 g2[120] = 0xdb as u8 495 g2[121] = 0x8c as u8 496 g2[122] = 0xd7 as u8 497 g2[123] = 0x48 as u8 498 g2[124] = 0x0d as u8 499 g2[125] = 0x3d as u8 500 g2[126] = 0x0f as u8 501 g2[127] = 0xc7 as u8 502 g2[128] = 0x03 as u8 503 g2[129] = 0x18 as u8 504 g2[130] = 0x76 as u8 505 g2[131] = 0x30 as u8 506 g2[132] = 0xcd as u8 507 g2[133] = 0xd3 as u8 508 g2[134] = 0x65 as u8 509 g2[135] = 0xec as u8 510 g2[136] = 0xa0 as u8 511 g2[137] = 0x06 as u8 512 g2[138] = 0xe2 as u8 513 g2[139] = 0x46 as u8 514 g2[140] = 0xb2 as u8 515 g2[141] = 0xa3 as u8 516 g2[142] = 0x22 as u8 517 g2[143] = 0x3d as u8 518 g2[144] = 0x18 as u8 519 g2[145] = 0xbb as u8 520 g2[146] = 0x6e as u8 521 g2[147] = 0x6a as u8 522 g2[148] = 0x56 as u8 523 g2[149] = 0x26 as u8 524 g2[150] = 0x53 as u8 525 g2[151] = 0xa5 as u8 526 g2[152] = 0x47 as u8 527 g2[153] = 0x95 as u8 528 g2[154] = 0x35 as u8 529 g2[155] = 0xaa as u8 530 g2[156] = 0xed as u8 531 g2[157] = 0x9e as u8 532 g2[158] = 0xfa as u8 533 g2[159] = 0x7d as u8 534 g2[160] = 0xfd as u8 535 g2[161] = 0x02 as u8 536 g2[162] = 0x26 as u8 537 g2[163] = 0x4e as u8 538 g2[164] = 0x4c as u8 539 g2[165] = 0xc8 as u8 540 g2[166] = 0xb2 as u8 541 g2[167] = 0x00 as u8 542 g2[168] = 0x00 as u8 543 g2[169] = 0x00 as u8 544 let r2: *NxGzipResult = nx_gzip_inflate(g2, 170, 306) 545 if r2 == (0 as *NxGzipResult) { return 20 } 546 if r2.error_code != NX_GZ_OK { return 21 } 547 if r2.output_size != 178 { return 22 } 548 var i2: nx_int = 0 549 while i2 < 178 { 550 if ((r2.output_data[i2] as nx_int)&255) != ((e1[i2] as nx_int)&255) { return 23 } 551 i2 = i2 + 1 552 } 553 554 // ---- G3: corrupted CRC32 trailer -> CRC_MISMATCH ---- 555 let g3: *u8 = (sys_mmap(168)) as *u8 556 g3[0] = 0x1f as u8 557 g3[1] = 0x8b as u8 558 g3[2] = 0x08 as u8 559 g3[3] = 0x00 as u8 560 g3[4] = 0x00 as u8 561 g3[5] = 0x00 as u8 562 g3[6] = 0x00 as u8 563 g3[7] = 0x00 as u8 564 g3[8] = 0x02 as u8 565 g3[9] = 0xff as u8 566 g3[10] = 0x35 as u8 567 g3[11] = 0x8e as u8 568 g3[12] = 0xb1 as u8 569 g3[13] = 0x0e as u8 570 g3[14] = 0xc2 as u8 571 g3[15] = 0x30 as u8 572 g3[16] = 0x10 as u8 573 g3[17] = 0x43 as u8 574 g3[18] = 0x7f as u8 575 g3[19] = 0xe5 as u8 576 g3[20] = 0x3e as u8 577 g3[21] = 0xa0 as u8 578 g3[22] = 0x34 as u8 579 g3[23] = 0x02 as u8 580 g3[24] = 0x36 as u8 581 g3[25] = 0x74 as u8 582 g3[26] = 0xca as u8 583 g3[27] = 0x52 as u8 584 g3[28] = 0x75 as u8 585 g3[29] = 0xe8 as u8 586 g3[30] = 0x4a as u8 587 g3[31] = 0x3b as u8 588 g3[32] = 0xb1 as u8 589 g3[33] = 0x25 as u8 590 g3[34] = 0xcd as u8 591 g3[35] = 0x91 as u8 592 g3[36] = 0x44 as u8 593 g3[37] = 0x82 as u8 594 g3[38] = 0x4b as u8 595 g3[39] = 0x94 as u8 596 g3[40] = 0x0b as u8 597 g3[41] = 0x20 as u8 598 g3[42] = 0xf8 as u8 599 g3[43] = 0x7a as u8 600 g3[44] = 0x22 as u8 601 g3[45] = 0x2a as u8 602 g3[46] = 0x24 as u8 603 g3[47] = 0x4f as u8 604 g3[48] = 0xf6 as u8 605 g3[49] = 0xb3 as u8 606 g3[50] = 0x65 as u8 607 g3[51] = 0x0c as u8 608 g3[52] = 0xf5 as u8 609 g3[53] = 0x7e as u8 610 g3[54] = 0xd3 as u8 611 g3[55] = 0x68 as u8 612 g3[56] = 0x93 as u8 613 g3[57] = 0x7b as u8 614 g3[58] = 0x6b as u8 615 g3[59] = 0x0c as u8 616 g3[60] = 0x7b as u8 617 g3[61] = 0x3d as u8 618 g3[62] = 0xa7 as u8 619 g3[63] = 0x27 as u8 620 g3[64] = 0x15 as u8 621 g3[65] = 0x8a as u8 622 g3[66] = 0x9e as u8 623 g3[67] = 0xc1 as u8 624 g3[68] = 0x7f as u8 625 g3[69] = 0x62 as u8 626 g3[70] = 0x86 as u8 627 g3[71] = 0x42 as u8 628 g3[72] = 0xc6 as u8 629 g3[73] = 0x41 as u8 630 g3[74] = 0x36 as u8 631 g3[75] = 0x35 as u8 632 g3[76] = 0xa0 as u8 633 g3[77] = 0x6a as u8 634 g3[78] = 0x21 as u8 635 g3[79] = 0x66 as u8 636 g3[80] = 0xbd as u8 637 g3[81] = 0x04 as u8 638 g3[82] = 0x02 as u8 639 g3[83] = 0x5b as u8 640 g3[84] = 0xd2 as u8 641 g3[85] = 0x4b as u8 642 g3[86] = 0xa8 as u8 643 g3[87] = 0x80 as u8 644 g3[88] = 0x7f as u8 645 g3[89] = 0x70 as u8 646 g3[90] = 0x63 as u8 647 g3[91] = 0x04 as u8 648 g3[92] = 0x86 as u8 649 g3[93] = 0xc4 as u8 650 g3[94] = 0x95 as u8 651 g3[95] = 0xb8 as u8 652 g3[96] = 0xee as u8 653 g3[97] = 0x46 as u8 654 g3[98] = 0x5e as u8 655 g3[99] = 0x93 as u8 656 g3[100] = 0x8b as u8 657 g3[101] = 0xec as u8 658 g3[102] = 0x4f as u8 659 g3[103] = 0xff as u8 660 g3[104] = 0xae as u8 661 g3[105] = 0xe4 as u8 662 g3[106] = 0xc4 as u8 663 g3[107] = 0x42 as u8 664 g3[108] = 0xd2 as u8 665 g3[109] = 0x41 as u8 666 g3[110] = 0xdb as u8 667 g3[111] = 0x8c as u8 668 g3[112] = 0xd7 as u8 669 g3[113] = 0x48 as u8 670 g3[114] = 0x0d as u8 671 g3[115] = 0x3d as u8 672 g3[116] = 0x0f as u8 673 g3[117] = 0xc7 as u8 674 g3[118] = 0x03 as u8 675 g3[119] = 0x18 as u8 676 g3[120] = 0x76 as u8 677 g3[121] = 0x30 as u8 678 g3[122] = 0xcd as u8 679 g3[123] = 0xd3 as u8 680 g3[124] = 0x65 as u8 681 g3[125] = 0xec as u8 682 g3[126] = 0xa0 as u8 683 g3[127] = 0x06 as u8 684 g3[128] = 0xe2 as u8 685 g3[129] = 0x46 as u8 686 g3[130] = 0xb2 as u8 687 g3[131] = 0xa3 as u8 688 g3[132] = 0x22 as u8 689 g3[133] = 0x3d as u8 690 g3[134] = 0x18 as u8 691 g3[135] = 0xbb as u8 692 g3[136] = 0x6e as u8 693 g3[137] = 0x6a as u8 694 g3[138] = 0x56 as u8 695 g3[139] = 0x26 as u8 696 g3[140] = 0x53 as u8 697 g3[141] = 0xa5 as u8 698 g3[142] = 0x47 as u8 699 g3[143] = 0x95 as u8 700 g3[144] = 0x35 as u8 701 g3[145] = 0xaa as u8 702 g3[146] = 0xed as u8 703 g3[147] = 0x9e as u8 704 g3[148] = 0xfa as u8 705 g3[149] = 0x7d as u8 706 g3[150] = 0xfd as u8 707 g3[151] = 0x02 as u8 708 g3[152] = 0xd9 as u8 709 g3[153] = 0x4e as u8 710 g3[154] = 0x4c as u8 711 g3[155] = 0xc8 as u8 712 g3[156] = 0xb2 as u8 713 g3[157] = 0x00 as u8 714 g3[158] = 0x00 as u8 715 g3[159] = 0x00 as u8 716 let r3: *NxGzipResult = nx_gzip_inflate(g3, 160, 306) 717 if r3 == (0 as *NxGzipResult) { return 30 } 718 if r3.error_code != NX_GZ_ERR_CRC_MISMATCH { return 31 } 719 720 // ---- G4: corrupted magic -> BAD_MAGIC ---- 721 let g4: *u8 = (sys_mmap(168)) as *u8 722 g4[0] = 0x00 as u8 723 g4[1] = 0x8b as u8 724 g4[2] = 0x08 as u8 725 g4[3] = 0x00 as u8 726 g4[4] = 0x00 as u8 727 g4[5] = 0x00 as u8 728 g4[6] = 0x00 as u8 729 g4[7] = 0x00 as u8 730 g4[8] = 0x02 as u8 731 g4[9] = 0xff as u8 732 g4[10] = 0x35 as u8 733 g4[11] = 0x8e as u8 734 g4[12] = 0xb1 as u8 735 g4[13] = 0x0e as u8 736 g4[14] = 0xc2 as u8 737 g4[15] = 0x30 as u8 738 g4[16] = 0x10 as u8 739 g4[17] = 0x43 as u8 740 g4[18] = 0x7f as u8 741 g4[19] = 0xe5 as u8 742 g4[20] = 0x3e as u8 743 g4[21] = 0xa0 as u8 744 g4[22] = 0x34 as u8 745 g4[23] = 0x02 as u8 746 g4[24] = 0x36 as u8 747 g4[25] = 0x74 as u8 748 g4[26] = 0xca as u8 749 g4[27] = 0x52 as u8 750 g4[28] = 0x75 as u8 751 g4[29] = 0xe8 as u8 752 g4[30] = 0x4a as u8 753 g4[31] = 0x3b as u8 754 g4[32] = 0xb1 as u8 755 g4[33] = 0x25 as u8 756 g4[34] = 0xcd as u8 757 g4[35] = 0x91 as u8 758 g4[36] = 0x44 as u8 759 g4[37] = 0x82 as u8 760 g4[38] = 0x4b as u8 761 g4[39] = 0x94 as u8 762 g4[40] = 0x0b as u8 763 g4[41] = 0x20 as u8 764 g4[42] = 0xf8 as u8 765 g4[43] = 0x7a as u8 766 g4[44] = 0x22 as u8 767 g4[45] = 0x2a as u8 768 g4[46] = 0x24 as u8 769 g4[47] = 0x4f as u8 770 g4[48] = 0xf6 as u8 771 g4[49] = 0xb3 as u8 772 g4[50] = 0x65 as u8 773 g4[51] = 0x0c as u8 774 g4[52] = 0xf5 as u8 775 g4[53] = 0x7e as u8 776 g4[54] = 0xd3 as u8 777 g4[55] = 0x68 as u8 778 g4[56] = 0x93 as u8 779 g4[57] = 0x7b as u8 780 g4[58] = 0x6b as u8 781 g4[59] = 0x0c as u8 782 g4[60] = 0x7b as u8 783 g4[61] = 0x3d as u8 784 g4[62] = 0xa7 as u8 785 g4[63] = 0x27 as u8 786 g4[64] = 0x15 as u8 787 g4[65] = 0x8a as u8 788 g4[66] = 0x9e as u8 789 g4[67] = 0xc1 as u8 790 g4[68] = 0x7f as u8 791 g4[69] = 0x62 as u8 792 g4[70] = 0x86 as u8 793 g4[71] = 0x42 as u8 794 g4[72] = 0xc6 as u8 795 g4[73] = 0x41 as u8 796 g4[74] = 0x36 as u8 797 g4[75] = 0x35 as u8 798 g4[76] = 0xa0 as u8 799 g4[77] = 0x6a as u8 800 g4[78] = 0x21 as u8 801 g4[79] = 0x66 as u8 802 g4[80] = 0xbd as u8 803 g4[81] = 0x04 as u8 804 g4[82] = 0x02 as u8 805 g4[83] = 0x5b as u8 806 g4[84] = 0xd2 as u8 807 g4[85] = 0x4b as u8 808 g4[86] = 0xa8 as u8 809 g4[87] = 0x80 as u8 810 g4[88] = 0x7f as u8 811 g4[89] = 0x70 as u8 812 g4[90] = 0x63 as u8 813 g4[91] = 0x04 as u8 814 g4[92] = 0x86 as u8 815 g4[93] = 0xc4 as u8 816 g4[94] = 0x95 as u8 817 g4[95] = 0xb8 as u8 818 g4[96] = 0xee as u8 819 g4[97] = 0x46 as u8 820 g4[98] = 0x5e as u8 821 g4[99] = 0x93 as u8 822 g4[100] = 0x8b as u8 823 g4[101] = 0xec as u8 824 g4[102] = 0x4f as u8 825 g4[103] = 0xff as u8 826 g4[104] = 0xae as u8 827 g4[105] = 0xe4 as u8 828 g4[106] = 0xc4 as u8 829 g4[107] = 0x42 as u8 830 g4[108] = 0xd2 as u8 831 g4[109] = 0x41 as u8 832 g4[110] = 0xdb as u8 833 g4[111] = 0x8c as u8 834 g4[112] = 0xd7 as u8 835 g4[113] = 0x48 as u8 836 g4[114] = 0x0d as u8 837 g4[115] = 0x3d as u8 838 g4[116] = 0x0f as u8 839 g4[117] = 0xc7 as u8 840 g4[118] = 0x03 as u8 841 g4[119] = 0x18 as u8 842 g4[120] = 0x76 as u8 843 g4[121] = 0x30 as u8 844 g4[122] = 0xcd as u8 845 g4[123] = 0xd3 as u8 846 g4[124] = 0x65 as u8 847 g4[125] = 0xec as u8 848 g4[126] = 0xa0 as u8 849 g4[127] = 0x06 as u8 850 g4[128] = 0xe2 as u8 851 g4[129] = 0x46 as u8 852 g4[130] = 0xb2 as u8 853 g4[131] = 0xa3 as u8 854 g4[132] = 0x22 as u8 855 g4[133] = 0x3d as u8 856 g4[134] = 0x18 as u8 857 g4[135] = 0xbb as u8 858 g4[136] = 0x6e as u8 859 g4[137] = 0x6a as u8 860 g4[138] = 0x56 as u8 861 g4[139] = 0x26 as u8 862 g4[140] = 0x53 as u8 863 g4[141] = 0xa5 as u8 864 g4[142] = 0x47 as u8 865 g4[143] = 0x95 as u8 866 g4[144] = 0x35 as u8 867 g4[145] = 0xaa as u8 868 g4[146] = 0xed as u8 869 g4[147] = 0x9e as u8 870 g4[148] = 0xfa as u8 871 g4[149] = 0x7d as u8 872 g4[150] = 0xfd as u8 873 g4[151] = 0x02 as u8 874 g4[152] = 0x26 as u8 875 g4[153] = 0x4e as u8 876 g4[154] = 0x4c as u8 877 g4[155] = 0xc8 as u8 878 g4[156] = 0xb2 as u8 879 g4[157] = 0x00 as u8 880 g4[158] = 0x00 as u8 881 g4[159] = 0x00 as u8 882 let r4: *NxGzipResult = nx_gzip_inflate(g4, 160, 306) 883 if r4 == (0 as *NxGzipResult) { return 40 } 884 if r4.error_code != NX_GZ_ERR_BAD_MAGIC { return 41 } 885 886 return 0 887}