1.data 2.p2align 5 3mask_modq: 4.word 4095 5.word 4095 6.word 4095 7.word 4095 8.word 4095 9.word 4095 10.word 4095 11.word 4095 12.word 4095 13.word 4095 14.word 4095 15.word 4095 16.word 4095 17.word 4095 18.word 4095 19.word 4095 20mask_ff: 21.word 0xff 22.word 0xff 23.word 0xff 24.word 0xff 25.word 0xff 26.word 0xff 27.word 0xff 28.word 0xff 29.word 0xff 30.word 0xff 31.word 0xff 32.word 0xff 33.word 0xff 34.word 0xff 35.word 0xff 36.word 0xff 37mask_f: 38.word 0xf 39.word 0xf 40.word 0xf 41.word 0xf 42.word 0xf 43.word 0xf 44.word 0xf 45.word 0xf 46.word 0xf 47.word 0xf 48.word 0xf 49.word 0xf 50.word 0xf 51.word 0xf 52.word 0xf 53.word 0xf 54mask_3: 55.word 0x03 56.word 0x03 57.word 0x03 58.word 0x03 59.word 0x03 60.word 0x03 61.word 0x03 62.word 0x03 63.word 0x03 64.word 0x03 65.word 0x03 66.word 0x03 67.word 0x03 68.word 0x03 69.word 0x03 70.word 0x03 71.text 72.global PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3 73.global _PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3 74PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3: 75_PQCLEAN_NTRUHPS4096821_AVX2_poly_Rq_to_S3: 76vmovdqa mask_modq(%rip), %ymm6 77vmovdqa 1632(%rsi), %ymm5 78vpand %ymm6, %ymm5, %ymm5 79vpermq $1, %ymm5, %ymm5 80vpslld $16, %ymm5, %ymm1 81vpsrld $16, %ymm1, %ymm5 82vpor %ymm5, %ymm1, %ymm5 83vbroadcastss %xmm5, %ymm5 84vpsrlw $11, %ymm5, %ymm1 85vpsllw $1, %ymm1, %ymm1 86vpaddw %ymm5, %ymm1, %ymm5 87vpsrlw $8, %ymm5, %ymm1 88vpand mask_ff(%rip), %ymm5, %ymm5 89vpaddw %ymm1, %ymm5, %ymm1 90vpand mask_f(%rip), %ymm1, %ymm5 91vpsrlw $4, %ymm1, %ymm1 92vpaddw %ymm1, %ymm5, %ymm1 93vpand mask_3(%rip), %ymm1, %ymm5 94vpsrlw $2, %ymm1, %ymm1 95vpaddw %ymm1, %ymm5, %ymm1 96vpand mask_3(%rip), %ymm1, %ymm5 97vpsrlw $2, %ymm1, %ymm1 98vpaddw %ymm1, %ymm5, %ymm1 99vpsubw mask_3(%rip), %ymm1, %ymm14 100vpsraw $15, %ymm14, %ymm15 101vpandn %ymm14, %ymm15, %ymm5 102vpand %ymm15, %ymm1, %ymm14 103vpxor %ymm14, %ymm5, %ymm1 104vpsllw $1, %ymm1, %ymm5 105vmovdqa 0(%rsi), %ymm0 106vpand %ymm6, %ymm0, %ymm0 107vpsrlw $11, %ymm0, %ymm1 108vpsllw $1, %ymm1, %ymm1 109vpaddw %ymm0, %ymm1, %ymm0 110vpaddw %ymm0, %ymm5, %ymm0 111vpsrlw $8, %ymm0, %ymm1 112vpand mask_ff(%rip), %ymm0, %ymm0 113vpaddw %ymm1, %ymm0, %ymm1 114vpand mask_f(%rip), %ymm1, %ymm0 115vpsrlw $4, %ymm1, %ymm1 116vpaddw %ymm1, %ymm0, %ymm1 117vpand mask_3(%rip), %ymm1, %ymm0 118vpsrlw $2, %ymm1, %ymm1 119vpaddw %ymm1, %ymm0, %ymm1 120vpand mask_3(%rip), %ymm1, %ymm0 121vpsrlw $2, %ymm1, %ymm1 122vpaddw %ymm1, %ymm0, %ymm1 123vpsubw mask_3(%rip), %ymm1, %ymm14 124vpsraw $15, %ymm14, %ymm15 125vpandn %ymm14, %ymm15, %ymm0 126vpand %ymm15, %ymm1, %ymm14 127vpxor %ymm14, %ymm0, %ymm1 128vmovdqa %ymm1, 0(%rdi) 129vmovdqa 32(%rsi), %ymm0 130vpand %ymm6, %ymm0, %ymm0 131vpsrlw $11, %ymm0, %ymm1 132vpsllw $1, %ymm1, %ymm1 133vpaddw %ymm0, %ymm1, %ymm0 134vpaddw %ymm0, %ymm5, %ymm0 135vpsrlw $8, %ymm0, %ymm1 136vpand mask_ff(%rip), %ymm0, %ymm0 137vpaddw %ymm1, %ymm0, %ymm1 138vpand mask_f(%rip), %ymm1, %ymm0 139vpsrlw $4, %ymm1, %ymm1 140vpaddw %ymm1, %ymm0, %ymm1 141vpand mask_3(%rip), %ymm1, %ymm0 142vpsrlw $2, %ymm1, %ymm1 143vpaddw %ymm1, %ymm0, %ymm1 144vpand mask_3(%rip), %ymm1, %ymm0 145vpsrlw $2, %ymm1, %ymm1 146vpaddw %ymm1, %ymm0, %ymm1 147vpsubw mask_3(%rip), %ymm1, %ymm14 148vpsraw $15, %ymm14, %ymm15 149vpandn %ymm14, %ymm15, %ymm0 150vpand %ymm15, %ymm1, %ymm14 151vpxor %ymm14, %ymm0, %ymm1 152vmovdqa %ymm1, 32(%rdi) 153vmovdqa 64(%rsi), %ymm0 154vpand %ymm6, %ymm0, %ymm0 155vpsrlw $11, %ymm0, %ymm1 156vpsllw $1, %ymm1, %ymm1 157vpaddw %ymm0, %ymm1, %ymm0 158vpaddw %ymm0, %ymm5, %ymm0 159vpsrlw $8, %ymm0, %ymm1 160vpand mask_ff(%rip), %ymm0, %ymm0 161vpaddw %ymm1, %ymm0, %ymm1 162vpand mask_f(%rip), %ymm1, %ymm0 163vpsrlw $4, %ymm1, %ymm1 164vpaddw %ymm1, %ymm0, %ymm1 165vpand mask_3(%rip), %ymm1, %ymm0 166vpsrlw $2, %ymm1, %ymm1 167vpaddw %ymm1, %ymm0, %ymm1 168vpand mask_3(%rip), %ymm1, %ymm0 169vpsrlw $2, %ymm1, %ymm1 170vpaddw %ymm1, %ymm0, %ymm1 171vpsubw mask_3(%rip), %ymm1, %ymm14 172vpsraw $15, %ymm14, %ymm15 173vpandn %ymm14, %ymm15, %ymm0 174vpand %ymm15, %ymm1, %ymm14 175vpxor %ymm14, %ymm0, %ymm1 176vmovdqa %ymm1, 64(%rdi) 177vmovdqa 96(%rsi), %ymm0 178vpand %ymm6, %ymm0, %ymm0 179vpsrlw $11, %ymm0, %ymm1 180vpsllw $1, %ymm1, %ymm1 181vpaddw %ymm0, %ymm1, %ymm0 182vpaddw %ymm0, %ymm5, %ymm0 183vpsrlw $8, %ymm0, %ymm1 184vpand mask_ff(%rip), %ymm0, %ymm0 185vpaddw %ymm1, %ymm0, %ymm1 186vpand mask_f(%rip), %ymm1, %ymm0 187vpsrlw $4, %ymm1, %ymm1 188vpaddw %ymm1, %ymm0, %ymm1 189vpand mask_3(%rip), %ymm1, %ymm0 190vpsrlw $2, %ymm1, %ymm1 191vpaddw %ymm1, %ymm0, %ymm1 192vpand mask_3(%rip), %ymm1, %ymm0 193vpsrlw $2, %ymm1, %ymm1 194vpaddw %ymm1, %ymm0, %ymm1 195vpsubw mask_3(%rip), %ymm1, %ymm14 196vpsraw $15, %ymm14, %ymm15 197vpandn %ymm14, %ymm15, %ymm0 198vpand %ymm15, %ymm1, %ymm14 199vpxor %ymm14, %ymm0, %ymm1 200vmovdqa %ymm1, 96(%rdi) 201vmovdqa 128(%rsi), %ymm0 202vpand %ymm6, %ymm0, %ymm0 203vpsrlw $11, %ymm0, %ymm1 204vpsllw $1, %ymm1, %ymm1 205vpaddw %ymm0, %ymm1, %ymm0 206vpaddw %ymm0, %ymm5, %ymm0 207vpsrlw $8, %ymm0, %ymm1 208vpand mask_ff(%rip), %ymm0, %ymm0 209vpaddw %ymm1, %ymm0, %ymm1 210vpand mask_f(%rip), %ymm1, %ymm0 211vpsrlw $4, %ymm1, %ymm1 212vpaddw %ymm1, %ymm0, %ymm1 213vpand mask_3(%rip), %ymm1, %ymm0 214vpsrlw $2, %ymm1, %ymm1 215vpaddw %ymm1, %ymm0, %ymm1 216vpand mask_3(%rip), %ymm1, %ymm0 217vpsrlw $2, %ymm1, %ymm1 218vpaddw %ymm1, %ymm0, %ymm1 219vpsubw mask_3(%rip), %ymm1, %ymm14 220vpsraw $15, %ymm14, %ymm15 221vpandn %ymm14, %ymm15, %ymm0 222vpand %ymm15, %ymm1, %ymm14 223vpxor %ymm14, %ymm0, %ymm1 224vmovdqa %ymm1, 128(%rdi) 225vmovdqa 160(%rsi), %ymm0 226vpand %ymm6, %ymm0, %ymm0 227vpsrlw $11, %ymm0, %ymm1 228vpsllw $1, %ymm1, %ymm1 229vpaddw %ymm0, %ymm1, %ymm0 230vpaddw %ymm0, %ymm5, %ymm0 231vpsrlw $8, %ymm0, %ymm1 232vpand mask_ff(%rip), %ymm0, %ymm0 233vpaddw %ymm1, %ymm0, %ymm1 234vpand mask_f(%rip), %ymm1, %ymm0 235vpsrlw $4, %ymm1, %ymm1 236vpaddw %ymm1, %ymm0, %ymm1 237vpand mask_3(%rip), %ymm1, %ymm0 238vpsrlw $2, %ymm1, %ymm1 239vpaddw %ymm1, %ymm0, %ymm1 240vpand mask_3(%rip), %ymm1, %ymm0 241vpsrlw $2, %ymm1, %ymm1 242vpaddw %ymm1, %ymm0, %ymm1 243vpsubw mask_3(%rip), %ymm1, %ymm14 244vpsraw $15, %ymm14, %ymm15 245vpandn %ymm14, %ymm15, %ymm0 246vpand %ymm15, %ymm1, %ymm14 247vpxor %ymm14, %ymm0, %ymm1 248vmovdqa %ymm1, 160(%rdi) 249vmovdqa 192(%rsi), %ymm0 250vpand %ymm6, %ymm0, %ymm0 251vpsrlw $11, %ymm0, %ymm1 252vpsllw $1, %ymm1, %ymm1 253vpaddw %ymm0, %ymm1, %ymm0 254vpaddw %ymm0, %ymm5, %ymm0 255vpsrlw $8, %ymm0, %ymm1 256vpand mask_ff(%rip), %ymm0, %ymm0 257vpaddw %ymm1, %ymm0, %ymm1 258vpand mask_f(%rip), %ymm1, %ymm0 259vpsrlw $4, %ymm1, %ymm1 260vpaddw %ymm1, %ymm0, %ymm1 261vpand mask_3(%rip), %ymm1, %ymm0 262vpsrlw $2, %ymm1, %ymm1 263vpaddw %ymm1, %ymm0, %ymm1 264vpand mask_3(%rip), %ymm1, %ymm0 265vpsrlw $2, %ymm1, %ymm1 266vpaddw %ymm1, %ymm0, %ymm1 267vpsubw mask_3(%rip), %ymm1, %ymm14 268vpsraw $15, %ymm14, %ymm15 269vpandn %ymm14, %ymm15, %ymm0 270vpand %ymm15, %ymm1, %ymm14 271vpxor %ymm14, %ymm0, %ymm1 272vmovdqa %ymm1, 192(%rdi) 273vmovdqa 224(%rsi), %ymm0 274vpand %ymm6, %ymm0, %ymm0 275vpsrlw $11, %ymm0, %ymm1 276vpsllw $1, %ymm1, %ymm1 277vpaddw %ymm0, %ymm1, %ymm0 278vpaddw %ymm0, %ymm5, %ymm0 279vpsrlw $8, %ymm0, %ymm1 280vpand mask_ff(%rip), %ymm0, %ymm0 281vpaddw %ymm1, %ymm0, %ymm1 282vpand mask_f(%rip), %ymm1, %ymm0 283vpsrlw $4, %ymm1, %ymm1 284vpaddw %ymm1, %ymm0, %ymm1 285vpand mask_3(%rip), %ymm1, %ymm0 286vpsrlw $2, %ymm1, %ymm1 287vpaddw %ymm1, %ymm0, %ymm1 288vpand mask_3(%rip), %ymm1, %ymm0 289vpsrlw $2, %ymm1, %ymm1 290vpaddw %ymm1, %ymm0, %ymm1 291vpsubw mask_3(%rip), %ymm1, %ymm14 292vpsraw $15, %ymm14, %ymm15 293vpandn %ymm14, %ymm15, %ymm0 294vpand %ymm15, %ymm1, %ymm14 295vpxor %ymm14, %ymm0, %ymm1 296vmovdqa %ymm1, 224(%rdi) 297vmovdqa 256(%rsi), %ymm0 298vpand %ymm6, %ymm0, %ymm0 299vpsrlw $11, %ymm0, %ymm1 300vpsllw $1, %ymm1, %ymm1 301vpaddw %ymm0, %ymm1, %ymm0 302vpaddw %ymm0, %ymm5, %ymm0 303vpsrlw $8, %ymm0, %ymm1 304vpand mask_ff(%rip), %ymm0, %ymm0 305vpaddw %ymm1, %ymm0, %ymm1 306vpand mask_f(%rip), %ymm1, %ymm0 307vpsrlw $4, %ymm1, %ymm1 308vpaddw %ymm1, %ymm0, %ymm1 309vpand mask_3(%rip), %ymm1, %ymm0 310vpsrlw $2, %ymm1, %ymm1 311vpaddw %ymm1, %ymm0, %ymm1 312vpand mask_3(%rip), %ymm1, %ymm0 313vpsrlw $2, %ymm1, %ymm1 314vpaddw %ymm1, %ymm0, %ymm1 315vpsubw mask_3(%rip), %ymm1, %ymm14 316vpsraw $15, %ymm14, %ymm15 317vpandn %ymm14, %ymm15, %ymm0 318vpand %ymm15, %ymm1, %ymm14 319vpxor %ymm14, %ymm0, %ymm1 320vmovdqa %ymm1, 256(%rdi) 321vmovdqa 288(%rsi), %ymm0 322vpand %ymm6, %ymm0, %ymm0 323vpsrlw $11, %ymm0, %ymm1 324vpsllw $1, %ymm1, %ymm1 325vpaddw %ymm0, %ymm1, %ymm0 326vpaddw %ymm0, %ymm5, %ymm0 327vpsrlw $8, %ymm0, %ymm1 328vpand mask_ff(%rip), %ymm0, %ymm0 329vpaddw %ymm1, %ymm0, %ymm1 330vpand mask_f(%rip), %ymm1, %ymm0 331vpsrlw $4, %ymm1, %ymm1 332vpaddw %ymm1, %ymm0, %ymm1 333vpand mask_3(%rip), %ymm1, %ymm0 334vpsrlw $2, %ymm1, %ymm1 335vpaddw %ymm1, %ymm0, %ymm1 336vpand mask_3(%rip), %ymm1, %ymm0 337vpsrlw $2, %ymm1, %ymm1 338vpaddw %ymm1, %ymm0, %ymm1 339vpsubw mask_3(%rip), %ymm1, %ymm14 340vpsraw $15, %ymm14, %ymm15 341vpandn %ymm14, %ymm15, %ymm0 342vpand %ymm15, %ymm1, %ymm14 343vpxor %ymm14, %ymm0, %ymm1 344vmovdqa %ymm1, 288(%rdi) 345vmovdqa 320(%rsi), %ymm0 346vpand %ymm6, %ymm0, %ymm0 347vpsrlw $11, %ymm0, %ymm1 348vpsllw $1, %ymm1, %ymm1 349vpaddw %ymm0, %ymm1, %ymm0 350vpaddw %ymm0, %ymm5, %ymm0 351vpsrlw $8, %ymm0, %ymm1 352vpand mask_ff(%rip), %ymm0, %ymm0 353vpaddw %ymm1, %ymm0, %ymm1 354vpand mask_f(%rip), %ymm1, %ymm0 355vpsrlw $4, %ymm1, %ymm1 356vpaddw %ymm1, %ymm0, %ymm1 357vpand mask_3(%rip), %ymm1, %ymm0 358vpsrlw $2, %ymm1, %ymm1 359vpaddw %ymm1, %ymm0, %ymm1 360vpand mask_3(%rip), %ymm1, %ymm0 361vpsrlw $2, %ymm1, %ymm1 362vpaddw %ymm1, %ymm0, %ymm1 363vpsubw mask_3(%rip), %ymm1, %ymm14 364vpsraw $15, %ymm14, %ymm15 365vpandn %ymm14, %ymm15, %ymm0 366vpand %ymm15, %ymm1, %ymm14 367vpxor %ymm14, %ymm0, %ymm1 368vmovdqa %ymm1, 320(%rdi) 369vmovdqa 352(%rsi), %ymm0 370vpand %ymm6, %ymm0, %ymm0 371vpsrlw $11, %ymm0, %ymm1 372vpsllw $1, %ymm1, %ymm1 373vpaddw %ymm0, %ymm1, %ymm0 374vpaddw %ymm0, %ymm5, %ymm0 375vpsrlw $8, %ymm0, %ymm1 376vpand mask_ff(%rip), %ymm0, %ymm0 377vpaddw %ymm1, %ymm0, %ymm1 378vpand mask_f(%rip), %ymm1, %ymm0 379vpsrlw $4, %ymm1, %ymm1 380vpaddw %ymm1, %ymm0, %ymm1 381vpand mask_3(%rip), %ymm1, %ymm0 382vpsrlw $2, %ymm1, %ymm1 383vpaddw %ymm1, %ymm0, %ymm1 384vpand mask_3(%rip), %ymm1, %ymm0 385vpsrlw $2, %ymm1, %ymm1 386vpaddw %ymm1, %ymm0, %ymm1 387vpsubw mask_3(%rip), %ymm1, %ymm14 388vpsraw $15, %ymm14, %ymm15 389vpandn %ymm14, %ymm15, %ymm0 390vpand %ymm15, %ymm1, %ymm14 391vpxor %ymm14, %ymm0, %ymm1 392vmovdqa %ymm1, 352(%rdi) 393vmovdqa 384(%rsi), %ymm0 394vpand %ymm6, %ymm0, %ymm0 395vpsrlw $11, %ymm0, %ymm1 396vpsllw $1, %ymm1, %ymm1 397vpaddw %ymm0, %ymm1, %ymm0 398vpaddw %ymm0, %ymm5, %ymm0 399vpsrlw $8, %ymm0, %ymm1 400vpand mask_ff(%rip), %ymm0, %ymm0 401vpaddw %ymm1, %ymm0, %ymm1 402vpand mask_f(%rip), %ymm1, %ymm0 403vpsrlw $4, %ymm1, %ymm1 404vpaddw %ymm1, %ymm0, %ymm1 405vpand mask_3(%rip), %ymm1, %ymm0 406vpsrlw $2, %ymm1, %ymm1 407vpaddw %ymm1, %ymm0, %ymm1 408vpand mask_3(%rip), %ymm1, %ymm0 409vpsrlw $2, %ymm1, %ymm1 410vpaddw %ymm1, %ymm0, %ymm1 411vpsubw mask_3(%rip), %ymm1, %ymm14 412vpsraw $15, %ymm14, %ymm15 413vpandn %ymm14, %ymm15, %ymm0 414vpand %ymm15, %ymm1, %ymm14 415vpxor %ymm14, %ymm0, %ymm1 416vmovdqa %ymm1, 384(%rdi) 417vmovdqa 416(%rsi), %ymm0 418vpand %ymm6, %ymm0, %ymm0 419vpsrlw $11, %ymm0, %ymm1 420vpsllw $1, %ymm1, %ymm1 421vpaddw %ymm0, %ymm1, %ymm0 422vpaddw %ymm0, %ymm5, %ymm0 423vpsrlw $8, %ymm0, %ymm1 424vpand mask_ff(%rip), %ymm0, %ymm0 425vpaddw %ymm1, %ymm0, %ymm1 426vpand mask_f(%rip), %ymm1, %ymm0 427vpsrlw $4, %ymm1, %ymm1 428vpaddw %ymm1, %ymm0, %ymm1 429vpand mask_3(%rip), %ymm1, %ymm0 430vpsrlw $2, %ymm1, %ymm1 431vpaddw %ymm1, %ymm0, %ymm1 432vpand mask_3(%rip), %ymm1, %ymm0 433vpsrlw $2, %ymm1, %ymm1 434vpaddw %ymm1, %ymm0, %ymm1 435vpsubw mask_3(%rip), %ymm1, %ymm14 436vpsraw $15, %ymm14, %ymm15 437vpandn %ymm14, %ymm15, %ymm0 438vpand %ymm15, %ymm1, %ymm14 439vpxor %ymm14, %ymm0, %ymm1 440vmovdqa %ymm1, 416(%rdi) 441vmovdqa 448(%rsi), %ymm0 442vpand %ymm6, %ymm0, %ymm0 443vpsrlw $11, %ymm0, %ymm1 444vpsllw $1, %ymm1, %ymm1 445vpaddw %ymm0, %ymm1, %ymm0 446vpaddw %ymm0, %ymm5, %ymm0 447vpsrlw $8, %ymm0, %ymm1 448vpand mask_ff(%rip), %ymm0, %ymm0 449vpaddw %ymm1, %ymm0, %ymm1 450vpand mask_f(%rip), %ymm1, %ymm0 451vpsrlw $4, %ymm1, %ymm1 452vpaddw %ymm1, %ymm0, %ymm1 453vpand mask_3(%rip), %ymm1, %ymm0 454vpsrlw $2, %ymm1, %ymm1 455vpaddw %ymm1, %ymm0, %ymm1 456vpand mask_3(%rip), %ymm1, %ymm0 457vpsrlw $2, %ymm1, %ymm1 458vpaddw %ymm1, %ymm0, %ymm1 459vpsubw mask_3(%rip), %ymm1, %ymm14 460vpsraw $15, %ymm14, %ymm15 461vpandn %ymm14, %ymm15, %ymm0 462vpand %ymm15, %ymm1, %ymm14 463vpxor %ymm14, %ymm0, %ymm1 464vmovdqa %ymm1, 448(%rdi) 465vmovdqa 480(%rsi), %ymm0 466vpand %ymm6, %ymm0, %ymm0 467vpsrlw $11, %ymm0, %ymm1 468vpsllw $1, %ymm1, %ymm1 469vpaddw %ymm0, %ymm1, %ymm0 470vpaddw %ymm0, %ymm5, %ymm0 471vpsrlw $8, %ymm0, %ymm1 472vpand mask_ff(%rip), %ymm0, %ymm0 473vpaddw %ymm1, %ymm0, %ymm1 474vpand mask_f(%rip), %ymm1, %ymm0 475vpsrlw $4, %ymm1, %ymm1 476vpaddw %ymm1, %ymm0, %ymm1 477vpand mask_3(%rip), %ymm1, %ymm0 478vpsrlw $2, %ymm1, %ymm1 479vpaddw %ymm1, %ymm0, %ymm1 480vpand mask_3(%rip), %ymm1, %ymm0 481vpsrlw $2, %ymm1, %ymm1 482vpaddw %ymm1, %ymm0, %ymm1 483vpsubw mask_3(%rip), %ymm1, %ymm14 484vpsraw $15, %ymm14, %ymm15 485vpandn %ymm14, %ymm15, %ymm0 486vpand %ymm15, %ymm1, %ymm14 487vpxor %ymm14, %ymm0, %ymm1 488vmovdqa %ymm1, 480(%rdi) 489vmovdqa 512(%rsi), %ymm0 490vpand %ymm6, %ymm0, %ymm0 491vpsrlw $11, %ymm0, %ymm1 492vpsllw $1, %ymm1, %ymm1 493vpaddw %ymm0, %ymm1, %ymm0 494vpaddw %ymm0, %ymm5, %ymm0 495vpsrlw $8, %ymm0, %ymm1 496vpand mask_ff(%rip), %ymm0, %ymm0 497vpaddw %ymm1, %ymm0, %ymm1 498vpand mask_f(%rip), %ymm1, %ymm0 499vpsrlw $4, %ymm1, %ymm1 500vpaddw %ymm1, %ymm0, %ymm1 501vpand mask_3(%rip), %ymm1, %ymm0 502vpsrlw $2, %ymm1, %ymm1 503vpaddw %ymm1, %ymm0, %ymm1 504vpand mask_3(%rip), %ymm1, %ymm0 505vpsrlw $2, %ymm1, %ymm1 506vpaddw %ymm1, %ymm0, %ymm1 507vpsubw mask_3(%rip), %ymm1, %ymm14 508vpsraw $15, %ymm14, %ymm15 509vpandn %ymm14, %ymm15, %ymm0 510vpand %ymm15, %ymm1, %ymm14 511vpxor %ymm14, %ymm0, %ymm1 512vmovdqa %ymm1, 512(%rdi) 513vmovdqa 544(%rsi), %ymm0 514vpand %ymm6, %ymm0, %ymm0 515vpsrlw $11, %ymm0, %ymm1 516vpsllw $1, %ymm1, %ymm1 517vpaddw %ymm0, %ymm1, %ymm0 518vpaddw %ymm0, %ymm5, %ymm0 519vpsrlw $8, %ymm0, %ymm1 520vpand mask_ff(%rip), %ymm0, %ymm0 521vpaddw %ymm1, %ymm0, %ymm1 522vpand mask_f(%rip), %ymm1, %ymm0 523vpsrlw $4, %ymm1, %ymm1 524vpaddw %ymm1, %ymm0, %ymm1 525vpand mask_3(%rip), %ymm1, %ymm0 526vpsrlw $2, %ymm1, %ymm1 527vpaddw %ymm1, %ymm0, %ymm1 528vpand mask_3(%rip), %ymm1, %ymm0 529vpsrlw $2, %ymm1, %ymm1 530vpaddw %ymm1, %ymm0, %ymm1 531vpsubw mask_3(%rip), %ymm1, %ymm14 532vpsraw $15, %ymm14, %ymm15 533vpandn %ymm14, %ymm15, %ymm0 534vpand %ymm15, %ymm1, %ymm14 535vpxor %ymm14, %ymm0, %ymm1 536vmovdqa %ymm1, 544(%rdi) 537vmovdqa 576(%rsi), %ymm0 538vpand %ymm6, %ymm0, %ymm0 539vpsrlw $11, %ymm0, %ymm1 540vpsllw $1, %ymm1, %ymm1 541vpaddw %ymm0, %ymm1, %ymm0 542vpaddw %ymm0, %ymm5, %ymm0 543vpsrlw $8, %ymm0, %ymm1 544vpand mask_ff(%rip), %ymm0, %ymm0 545vpaddw %ymm1, %ymm0, %ymm1 546vpand mask_f(%rip), %ymm1, %ymm0 547vpsrlw $4, %ymm1, %ymm1 548vpaddw %ymm1, %ymm0, %ymm1 549vpand mask_3(%rip), %ymm1, %ymm0 550vpsrlw $2, %ymm1, %ymm1 551vpaddw %ymm1, %ymm0, %ymm1 552vpand mask_3(%rip), %ymm1, %ymm0 553vpsrlw $2, %ymm1, %ymm1 554vpaddw %ymm1, %ymm0, %ymm1 555vpsubw mask_3(%rip), %ymm1, %ymm14 556vpsraw $15, %ymm14, %ymm15 557vpandn %ymm14, %ymm15, %ymm0 558vpand %ymm15, %ymm1, %ymm14 559vpxor %ymm14, %ymm0, %ymm1 560vmovdqa %ymm1, 576(%rdi) 561vmovdqa 608(%rsi), %ymm0 562vpand %ymm6, %ymm0, %ymm0 563vpsrlw $11, %ymm0, %ymm1 564vpsllw $1, %ymm1, %ymm1 565vpaddw %ymm0, %ymm1, %ymm0 566vpaddw %ymm0, %ymm5, %ymm0 567vpsrlw $8, %ymm0, %ymm1 568vpand mask_ff(%rip), %ymm0, %ymm0 569vpaddw %ymm1, %ymm0, %ymm1 570vpand mask_f(%rip), %ymm1, %ymm0 571vpsrlw $4, %ymm1, %ymm1 572vpaddw %ymm1, %ymm0, %ymm1 573vpand mask_3(%rip), %ymm1, %ymm0 574vpsrlw $2, %ymm1, %ymm1 575vpaddw %ymm1, %ymm0, %ymm1 576vpand mask_3(%rip), %ymm1, %ymm0 577vpsrlw $2, %ymm1, %ymm1 578vpaddw %ymm1, %ymm0, %ymm1 579vpsubw mask_3(%rip), %ymm1, %ymm14 580vpsraw $15, %ymm14, %ymm15 581vpandn %ymm14, %ymm15, %ymm0 582vpand %ymm15, %ymm1, %ymm14 583vpxor %ymm14, %ymm0, %ymm1 584vmovdqa %ymm1, 608(%rdi) 585vmovdqa 640(%rsi), %ymm0 586vpand %ymm6, %ymm0, %ymm0 587vpsrlw $11, %ymm0, %ymm1 588vpsllw $1, %ymm1, %ymm1 589vpaddw %ymm0, %ymm1, %ymm0 590vpaddw %ymm0, %ymm5, %ymm0 591vpsrlw $8, %ymm0, %ymm1 592vpand mask_ff(%rip), %ymm0, %ymm0 593vpaddw %ymm1, %ymm0, %ymm1 594vpand mask_f(%rip), %ymm1, %ymm0 595vpsrlw $4, %ymm1, %ymm1 596vpaddw %ymm1, %ymm0, %ymm1 597vpand mask_3(%rip), %ymm1, %ymm0 598vpsrlw $2, %ymm1, %ymm1 599vpaddw %ymm1, %ymm0, %ymm1 600vpand mask_3(%rip), %ymm1, %ymm0 601vpsrlw $2, %ymm1, %ymm1 602vpaddw %ymm1, %ymm0, %ymm1 603vpsubw mask_3(%rip), %ymm1, %ymm14 604vpsraw $15, %ymm14, %ymm15 605vpandn %ymm14, %ymm15, %ymm0 606vpand %ymm15, %ymm1, %ymm14 607vpxor %ymm14, %ymm0, %ymm1 608vmovdqa %ymm1, 640(%rdi) 609vmovdqa 672(%rsi), %ymm0 610vpand %ymm6, %ymm0, %ymm0 611vpsrlw $11, %ymm0, %ymm1 612vpsllw $1, %ymm1, %ymm1 613vpaddw %ymm0, %ymm1, %ymm0 614vpaddw %ymm0, %ymm5, %ymm0 615vpsrlw $8, %ymm0, %ymm1 616vpand mask_ff(%rip), %ymm0, %ymm0 617vpaddw %ymm1, %ymm0, %ymm1 618vpand mask_f(%rip), %ymm1, %ymm0 619vpsrlw $4, %ymm1, %ymm1 620vpaddw %ymm1, %ymm0, %ymm1 621vpand mask_3(%rip), %ymm1, %ymm0 622vpsrlw $2, %ymm1, %ymm1 623vpaddw %ymm1, %ymm0, %ymm1 624vpand mask_3(%rip), %ymm1, %ymm0 625vpsrlw $2, %ymm1, %ymm1 626vpaddw %ymm1, %ymm0, %ymm1 627vpsubw mask_3(%rip), %ymm1, %ymm14 628vpsraw $15, %ymm14, %ymm15 629vpandn %ymm14, %ymm15, %ymm0 630vpand %ymm15, %ymm1, %ymm14 631vpxor %ymm14, %ymm0, %ymm1 632vmovdqa %ymm1, 672(%rdi) 633vmovdqa 704(%rsi), %ymm0 634vpand %ymm6, %ymm0, %ymm0 635vpsrlw $11, %ymm0, %ymm1 636vpsllw $1, %ymm1, %ymm1 637vpaddw %ymm0, %ymm1, %ymm0 638vpaddw %ymm0, %ymm5, %ymm0 639vpsrlw $8, %ymm0, %ymm1 640vpand mask_ff(%rip), %ymm0, %ymm0 641vpaddw %ymm1, %ymm0, %ymm1 642vpand mask_f(%rip), %ymm1, %ymm0 643vpsrlw $4, %ymm1, %ymm1 644vpaddw %ymm1, %ymm0, %ymm1 645vpand mask_3(%rip), %ymm1, %ymm0 646vpsrlw $2, %ymm1, %ymm1 647vpaddw %ymm1, %ymm0, %ymm1 648vpand mask_3(%rip), %ymm1, %ymm0 649vpsrlw $2, %ymm1, %ymm1 650vpaddw %ymm1, %ymm0, %ymm1 651vpsubw mask_3(%rip), %ymm1, %ymm14 652vpsraw $15, %ymm14, %ymm15 653vpandn %ymm14, %ymm15, %ymm0 654vpand %ymm15, %ymm1, %ymm14 655vpxor %ymm14, %ymm0, %ymm1 656vmovdqa %ymm1, 704(%rdi) 657vmovdqa 736(%rsi), %ymm0 658vpand %ymm6, %ymm0, %ymm0 659vpsrlw $11, %ymm0, %ymm1 660vpsllw $1, %ymm1, %ymm1 661vpaddw %ymm0, %ymm1, %ymm0 662vpaddw %ymm0, %ymm5, %ymm0 663vpsrlw $8, %ymm0, %ymm1 664vpand mask_ff(%rip), %ymm0, %ymm0 665vpaddw %ymm1, %ymm0, %ymm1 666vpand mask_f(%rip), %ymm1, %ymm0 667vpsrlw $4, %ymm1, %ymm1 668vpaddw %ymm1, %ymm0, %ymm1 669vpand mask_3(%rip), %ymm1, %ymm0 670vpsrlw $2, %ymm1, %ymm1 671vpaddw %ymm1, %ymm0, %ymm1 672vpand mask_3(%rip), %ymm1, %ymm0 673vpsrlw $2, %ymm1, %ymm1 674vpaddw %ymm1, %ymm0, %ymm1 675vpsubw mask_3(%rip), %ymm1, %ymm14 676vpsraw $15, %ymm14, %ymm15 677vpandn %ymm14, %ymm15, %ymm0 678vpand %ymm15, %ymm1, %ymm14 679vpxor %ymm14, %ymm0, %ymm1 680vmovdqa %ymm1, 736(%rdi) 681vmovdqa 768(%rsi), %ymm0 682vpand %ymm6, %ymm0, %ymm0 683vpsrlw $11, %ymm0, %ymm1 684vpsllw $1, %ymm1, %ymm1 685vpaddw %ymm0, %ymm1, %ymm0 686vpaddw %ymm0, %ymm5, %ymm0 687vpsrlw $8, %ymm0, %ymm1 688vpand mask_ff(%rip), %ymm0, %ymm0 689vpaddw %ymm1, %ymm0, %ymm1 690vpand mask_f(%rip), %ymm1, %ymm0 691vpsrlw $4, %ymm1, %ymm1 692vpaddw %ymm1, %ymm0, %ymm1 693vpand mask_3(%rip), %ymm1, %ymm0 694vpsrlw $2, %ymm1, %ymm1 695vpaddw %ymm1, %ymm0, %ymm1 696vpand mask_3(%rip), %ymm1, %ymm0 697vpsrlw $2, %ymm1, %ymm1 698vpaddw %ymm1, %ymm0, %ymm1 699vpsubw mask_3(%rip), %ymm1, %ymm14 700vpsraw $15, %ymm14, %ymm15 701vpandn %ymm14, %ymm15, %ymm0 702vpand %ymm15, %ymm1, %ymm14 703vpxor %ymm14, %ymm0, %ymm1 704vmovdqa %ymm1, 768(%rdi) 705vmovdqa 800(%rsi), %ymm0 706vpand %ymm6, %ymm0, %ymm0 707vpsrlw $11, %ymm0, %ymm1 708vpsllw $1, %ymm1, %ymm1 709vpaddw %ymm0, %ymm1, %ymm0 710vpaddw %ymm0, %ymm5, %ymm0 711vpsrlw $8, %ymm0, %ymm1 712vpand mask_ff(%rip), %ymm0, %ymm0 713vpaddw %ymm1, %ymm0, %ymm1 714vpand mask_f(%rip), %ymm1, %ymm0 715vpsrlw $4, %ymm1, %ymm1 716vpaddw %ymm1, %ymm0, %ymm1 717vpand mask_3(%rip), %ymm1, %ymm0 718vpsrlw $2, %ymm1, %ymm1 719vpaddw %ymm1, %ymm0, %ymm1 720vpand mask_3(%rip), %ymm1, %ymm0 721vpsrlw $2, %ymm1, %ymm1 722vpaddw %ymm1, %ymm0, %ymm1 723vpsubw mask_3(%rip), %ymm1, %ymm14 724vpsraw $15, %ymm14, %ymm15 725vpandn %ymm14, %ymm15, %ymm0 726vpand %ymm15, %ymm1, %ymm14 727vpxor %ymm14, %ymm0, %ymm1 728vmovdqa %ymm1, 800(%rdi) 729vmovdqa 832(%rsi), %ymm0 730vpand %ymm6, %ymm0, %ymm0 731vpsrlw $11, %ymm0, %ymm1 732vpsllw $1, %ymm1, %ymm1 733vpaddw %ymm0, %ymm1, %ymm0 734vpaddw %ymm0, %ymm5, %ymm0 735vpsrlw $8, %ymm0, %ymm1 736vpand mask_ff(%rip), %ymm0, %ymm0 737vpaddw %ymm1, %ymm0, %ymm1 738vpand mask_f(%rip), %ymm1, %ymm0 739vpsrlw $4, %ymm1, %ymm1 740vpaddw %ymm1, %ymm0, %ymm1 741vpand mask_3(%rip), %ymm1, %ymm0 742vpsrlw $2, %ymm1, %ymm1 743vpaddw %ymm1, %ymm0, %ymm1 744vpand mask_3(%rip), %ymm1, %ymm0 745vpsrlw $2, %ymm1, %ymm1 746vpaddw %ymm1, %ymm0, %ymm1 747vpsubw mask_3(%rip), %ymm1, %ymm14 748vpsraw $15, %ymm14, %ymm15 749vpandn %ymm14, %ymm15, %ymm0 750vpand %ymm15, %ymm1, %ymm14 751vpxor %ymm14, %ymm0, %ymm1 752vmovdqa %ymm1, 832(%rdi) 753vmovdqa 864(%rsi), %ymm0 754vpand %ymm6, %ymm0, %ymm0 755vpsrlw $11, %ymm0, %ymm1 756vpsllw $1, %ymm1, %ymm1 757vpaddw %ymm0, %ymm1, %ymm0 758vpaddw %ymm0, %ymm5, %ymm0 759vpsrlw $8, %ymm0, %ymm1 760vpand mask_ff(%rip), %ymm0, %ymm0 761vpaddw %ymm1, %ymm0, %ymm1 762vpand mask_f(%rip), %ymm1, %ymm0 763vpsrlw $4, %ymm1, %ymm1 764vpaddw %ymm1, %ymm0, %ymm1 765vpand mask_3(%rip), %ymm1, %ymm0 766vpsrlw $2, %ymm1, %ymm1 767vpaddw %ymm1, %ymm0, %ymm1 768vpand mask_3(%rip), %ymm1, %ymm0 769vpsrlw $2, %ymm1, %ymm1 770vpaddw %ymm1, %ymm0, %ymm1 771vpsubw mask_3(%rip), %ymm1, %ymm14 772vpsraw $15, %ymm14, %ymm15 773vpandn %ymm14, %ymm15, %ymm0 774vpand %ymm15, %ymm1, %ymm14 775vpxor %ymm14, %ymm0, %ymm1 776vmovdqa %ymm1, 864(%rdi) 777vmovdqa 896(%rsi), %ymm0 778vpand %ymm6, %ymm0, %ymm0 779vpsrlw $11, %ymm0, %ymm1 780vpsllw $1, %ymm1, %ymm1 781vpaddw %ymm0, %ymm1, %ymm0 782vpaddw %ymm0, %ymm5, %ymm0 783vpsrlw $8, %ymm0, %ymm1 784vpand mask_ff(%rip), %ymm0, %ymm0 785vpaddw %ymm1, %ymm0, %ymm1 786vpand mask_f(%rip), %ymm1, %ymm0 787vpsrlw $4, %ymm1, %ymm1 788vpaddw %ymm1, %ymm0, %ymm1 789vpand mask_3(%rip), %ymm1, %ymm0 790vpsrlw $2, %ymm1, %ymm1 791vpaddw %ymm1, %ymm0, %ymm1 792vpand mask_3(%rip), %ymm1, %ymm0 793vpsrlw $2, %ymm1, %ymm1 794vpaddw %ymm1, %ymm0, %ymm1 795vpsubw mask_3(%rip), %ymm1, %ymm14 796vpsraw $15, %ymm14, %ymm15 797vpandn %ymm14, %ymm15, %ymm0 798vpand %ymm15, %ymm1, %ymm14 799vpxor %ymm14, %ymm0, %ymm1 800vmovdqa %ymm1, 896(%rdi) 801vmovdqa 928(%rsi), %ymm0 802vpand %ymm6, %ymm0, %ymm0 803vpsrlw $11, %ymm0, %ymm1 804vpsllw $1, %ymm1, %ymm1 805vpaddw %ymm0, %ymm1, %ymm0 806vpaddw %ymm0, %ymm5, %ymm0 807vpsrlw $8, %ymm0, %ymm1 808vpand mask_ff(%rip), %ymm0, %ymm0 809vpaddw %ymm1, %ymm0, %ymm1 810vpand mask_f(%rip), %ymm1, %ymm0 811vpsrlw $4, %ymm1, %ymm1 812vpaddw %ymm1, %ymm0, %ymm1 813vpand mask_3(%rip), %ymm1, %ymm0 814vpsrlw $2, %ymm1, %ymm1 815vpaddw %ymm1, %ymm0, %ymm1 816vpand mask_3(%rip), %ymm1, %ymm0 817vpsrlw $2, %ymm1, %ymm1 818vpaddw %ymm1, %ymm0, %ymm1 819vpsubw mask_3(%rip), %ymm1, %ymm14 820vpsraw $15, %ymm14, %ymm15 821vpandn %ymm14, %ymm15, %ymm0 822vpand %ymm15, %ymm1, %ymm14 823vpxor %ymm14, %ymm0, %ymm1 824vmovdqa %ymm1, 928(%rdi) 825vmovdqa 960(%rsi), %ymm0 826vpand %ymm6, %ymm0, %ymm0 827vpsrlw $11, %ymm0, %ymm1 828vpsllw $1, %ymm1, %ymm1 829vpaddw %ymm0, %ymm1, %ymm0 830vpaddw %ymm0, %ymm5, %ymm0 831vpsrlw $8, %ymm0, %ymm1 832vpand mask_ff(%rip), %ymm0, %ymm0 833vpaddw %ymm1, %ymm0, %ymm1 834vpand mask_f(%rip), %ymm1, %ymm0 835vpsrlw $4, %ymm1, %ymm1 836vpaddw %ymm1, %ymm0, %ymm1 837vpand mask_3(%rip), %ymm1, %ymm0 838vpsrlw $2, %ymm1, %ymm1 839vpaddw %ymm1, %ymm0, %ymm1 840vpand mask_3(%rip), %ymm1, %ymm0 841vpsrlw $2, %ymm1, %ymm1 842vpaddw %ymm1, %ymm0, %ymm1 843vpsubw mask_3(%rip), %ymm1, %ymm14 844vpsraw $15, %ymm14, %ymm15 845vpandn %ymm14, %ymm15, %ymm0 846vpand %ymm15, %ymm1, %ymm14 847vpxor %ymm14, %ymm0, %ymm1 848vmovdqa %ymm1, 960(%rdi) 849vmovdqa 992(%rsi), %ymm0 850vpand %ymm6, %ymm0, %ymm0 851vpsrlw $11, %ymm0, %ymm1 852vpsllw $1, %ymm1, %ymm1 853vpaddw %ymm0, %ymm1, %ymm0 854vpaddw %ymm0, %ymm5, %ymm0 855vpsrlw $8, %ymm0, %ymm1 856vpand mask_ff(%rip), %ymm0, %ymm0 857vpaddw %ymm1, %ymm0, %ymm1 858vpand mask_f(%rip), %ymm1, %ymm0 859vpsrlw $4, %ymm1, %ymm1 860vpaddw %ymm1, %ymm0, %ymm1 861vpand mask_3(%rip), %ymm1, %ymm0 862vpsrlw $2, %ymm1, %ymm1 863vpaddw %ymm1, %ymm0, %ymm1 864vpand mask_3(%rip), %ymm1, %ymm0 865vpsrlw $2, %ymm1, %ymm1 866vpaddw %ymm1, %ymm0, %ymm1 867vpsubw mask_3(%rip), %ymm1, %ymm14 868vpsraw $15, %ymm14, %ymm15 869vpandn %ymm14, %ymm15, %ymm0 870vpand %ymm15, %ymm1, %ymm14 871vpxor %ymm14, %ymm0, %ymm1 872vmovdqa %ymm1, 992(%rdi) 873vmovdqa 1024(%rsi), %ymm0 874vpand %ymm6, %ymm0, %ymm0 875vpsrlw $11, %ymm0, %ymm1 876vpsllw $1, %ymm1, %ymm1 877vpaddw %ymm0, %ymm1, %ymm0 878vpaddw %ymm0, %ymm5, %ymm0 879vpsrlw $8, %ymm0, %ymm1 880vpand mask_ff(%rip), %ymm0, %ymm0 881vpaddw %ymm1, %ymm0, %ymm1 882vpand mask_f(%rip), %ymm1, %ymm0 883vpsrlw $4, %ymm1, %ymm1 884vpaddw %ymm1, %ymm0, %ymm1 885vpand mask_3(%rip), %ymm1, %ymm0 886vpsrlw $2, %ymm1, %ymm1 887vpaddw %ymm1, %ymm0, %ymm1 888vpand mask_3(%rip), %ymm1, %ymm0 889vpsrlw $2, %ymm1, %ymm1 890vpaddw %ymm1, %ymm0, %ymm1 891vpsubw mask_3(%rip), %ymm1, %ymm14 892vpsraw $15, %ymm14, %ymm15 893vpandn %ymm14, %ymm15, %ymm0 894vpand %ymm15, %ymm1, %ymm14 895vpxor %ymm14, %ymm0, %ymm1 896vmovdqa %ymm1, 1024(%rdi) 897vmovdqa 1056(%rsi), %ymm0 898vpand %ymm6, %ymm0, %ymm0 899vpsrlw $11, %ymm0, %ymm1 900vpsllw $1, %ymm1, %ymm1 901vpaddw %ymm0, %ymm1, %ymm0 902vpaddw %ymm0, %ymm5, %ymm0 903vpsrlw $8, %ymm0, %ymm1 904vpand mask_ff(%rip), %ymm0, %ymm0 905vpaddw %ymm1, %ymm0, %ymm1 906vpand mask_f(%rip), %ymm1, %ymm0 907vpsrlw $4, %ymm1, %ymm1 908vpaddw %ymm1, %ymm0, %ymm1 909vpand mask_3(%rip), %ymm1, %ymm0 910vpsrlw $2, %ymm1, %ymm1 911vpaddw %ymm1, %ymm0, %ymm1 912vpand mask_3(%rip), %ymm1, %ymm0 913vpsrlw $2, %ymm1, %ymm1 914vpaddw %ymm1, %ymm0, %ymm1 915vpsubw mask_3(%rip), %ymm1, %ymm14 916vpsraw $15, %ymm14, %ymm15 917vpandn %ymm14, %ymm15, %ymm0 918vpand %ymm15, %ymm1, %ymm14 919vpxor %ymm14, %ymm0, %ymm1 920vmovdqa %ymm1, 1056(%rdi) 921vmovdqa 1088(%rsi), %ymm0 922vpand %ymm6, %ymm0, %ymm0 923vpsrlw $11, %ymm0, %ymm1 924vpsllw $1, %ymm1, %ymm1 925vpaddw %ymm0, %ymm1, %ymm0 926vpaddw %ymm0, %ymm5, %ymm0 927vpsrlw $8, %ymm0, %ymm1 928vpand mask_ff(%rip), %ymm0, %ymm0 929vpaddw %ymm1, %ymm0, %ymm1 930vpand mask_f(%rip), %ymm1, %ymm0 931vpsrlw $4, %ymm1, %ymm1 932vpaddw %ymm1, %ymm0, %ymm1 933vpand mask_3(%rip), %ymm1, %ymm0 934vpsrlw $2, %ymm1, %ymm1 935vpaddw %ymm1, %ymm0, %ymm1 936vpand mask_3(%rip), %ymm1, %ymm0 937vpsrlw $2, %ymm1, %ymm1 938vpaddw %ymm1, %ymm0, %ymm1 939vpsubw mask_3(%rip), %ymm1, %ymm14 940vpsraw $15, %ymm14, %ymm15 941vpandn %ymm14, %ymm15, %ymm0 942vpand %ymm15, %ymm1, %ymm14 943vpxor %ymm14, %ymm0, %ymm1 944vmovdqa %ymm1, 1088(%rdi) 945vmovdqa 1120(%rsi), %ymm0 946vpand %ymm6, %ymm0, %ymm0 947vpsrlw $11, %ymm0, %ymm1 948vpsllw $1, %ymm1, %ymm1 949vpaddw %ymm0, %ymm1, %ymm0 950vpaddw %ymm0, %ymm5, %ymm0 951vpsrlw $8, %ymm0, %ymm1 952vpand mask_ff(%rip), %ymm0, %ymm0 953vpaddw %ymm1, %ymm0, %ymm1 954vpand mask_f(%rip), %ymm1, %ymm0 955vpsrlw $4, %ymm1, %ymm1 956vpaddw %ymm1, %ymm0, %ymm1 957vpand mask_3(%rip), %ymm1, %ymm0 958vpsrlw $2, %ymm1, %ymm1 959vpaddw %ymm1, %ymm0, %ymm1 960vpand mask_3(%rip), %ymm1, %ymm0 961vpsrlw $2, %ymm1, %ymm1 962vpaddw %ymm1, %ymm0, %ymm1 963vpsubw mask_3(%rip), %ymm1, %ymm14 964vpsraw $15, %ymm14, %ymm15 965vpandn %ymm14, %ymm15, %ymm0 966vpand %ymm15, %ymm1, %ymm14 967vpxor %ymm14, %ymm0, %ymm1 968vmovdqa %ymm1, 1120(%rdi) 969vmovdqa 1152(%rsi), %ymm0 970vpand %ymm6, %ymm0, %ymm0 971vpsrlw $11, %ymm0, %ymm1 972vpsllw $1, %ymm1, %ymm1 973vpaddw %ymm0, %ymm1, %ymm0 974vpaddw %ymm0, %ymm5, %ymm0 975vpsrlw $8, %ymm0, %ymm1 976vpand mask_ff(%rip), %ymm0, %ymm0 977vpaddw %ymm1, %ymm0, %ymm1 978vpand mask_f(%rip), %ymm1, %ymm0 979vpsrlw $4, %ymm1, %ymm1 980vpaddw %ymm1, %ymm0, %ymm1 981vpand mask_3(%rip), %ymm1, %ymm0 982vpsrlw $2, %ymm1, %ymm1 983vpaddw %ymm1, %ymm0, %ymm1 984vpand mask_3(%rip), %ymm1, %ymm0 985vpsrlw $2, %ymm1, %ymm1 986vpaddw %ymm1, %ymm0, %ymm1 987vpsubw mask_3(%rip), %ymm1, %ymm14 988vpsraw $15, %ymm14, %ymm15 989vpandn %ymm14, %ymm15, %ymm0 990vpand %ymm15, %ymm1, %ymm14 991vpxor %ymm14, %ymm0, %ymm1 992vmovdqa %ymm1, 1152(%rdi) 993vmovdqa 1184(%rsi), %ymm0 994vpand %ymm6, %ymm0, %ymm0 995vpsrlw $11, %ymm0, %ymm1 996vpsllw $1, %ymm1, %ymm1 997vpaddw %ymm0, %ymm1, %ymm0 998vpaddw %ymm0, %ymm5, %ymm0 999vpsrlw $8, %ymm0, %ymm1 1000vpand mask_ff(%rip), %ymm0, %ymm0 1001vpaddw %ymm1, %ymm0, %ymm1 1002vpand mask_f(%rip), %ymm1, %ymm0 1003vpsrlw $4, %ymm1, %ymm1 1004vpaddw %ymm1, %ymm0, %ymm1 1005vpand mask_3(%rip), %ymm1, %ymm0 1006vpsrlw $2, %ymm1, %ymm1 1007vpaddw %ymm1, %ymm0, %ymm1 1008vpand mask_3(%rip), %ymm1, %ymm0 1009vpsrlw $2, %ymm1, %ymm1 1010vpaddw %ymm1, %ymm0, %ymm1 1011vpsubw mask_3(%rip), %ymm1, %ymm14 1012vpsraw $15, %ymm14, %ymm15 1013vpandn %ymm14, %ymm15, %ymm0 1014vpand %ymm15, %ymm1, %ymm14 1015vpxor %ymm14, %ymm0, %ymm1 1016vmovdqa %ymm1, 1184(%rdi) 1017vmovdqa 1216(%rsi), %ymm0 1018vpand %ymm6, %ymm0, %ymm0 1019vpsrlw $11, %ymm0, %ymm1 1020vpsllw $1, %ymm1, %ymm1 1021vpaddw %ymm0, %ymm1, %ymm0 1022vpaddw %ymm0, %ymm5, %ymm0 1023vpsrlw $8, %ymm0, %ymm1 1024vpand mask_ff(%rip), %ymm0, %ymm0 1025vpaddw %ymm1, %ymm0, %ymm1 1026vpand mask_f(%rip), %ymm1, %ymm0 1027vpsrlw $4, %ymm1, %ymm1 1028vpaddw %ymm1, %ymm0, %ymm1 1029vpand mask_3(%rip), %ymm1, %ymm0 1030vpsrlw $2, %ymm1, %ymm1 1031vpaddw %ymm1, %ymm0, %ymm1 1032vpand mask_3(%rip), %ymm1, %ymm0 1033vpsrlw $2, %ymm1, %ymm1 1034vpaddw %ymm1, %ymm0, %ymm1 1035vpsubw mask_3(%rip), %ymm1, %ymm14 1036vpsraw $15, %ymm14, %ymm15 1037vpandn %ymm14, %ymm15, %ymm0 1038vpand %ymm15, %ymm1, %ymm14 1039vpxor %ymm14, %ymm0, %ymm1 1040vmovdqa %ymm1, 1216(%rdi) 1041vmovdqa 1248(%rsi), %ymm0 1042vpand %ymm6, %ymm0, %ymm0 1043vpsrlw $11, %ymm0, %ymm1 1044vpsllw $1, %ymm1, %ymm1 1045vpaddw %ymm0, %ymm1, %ymm0 1046vpaddw %ymm0, %ymm5, %ymm0 1047vpsrlw $8, %ymm0, %ymm1 1048vpand mask_ff(%rip), %ymm0, %ymm0 1049vpaddw %ymm1, %ymm0, %ymm1 1050vpand mask_f(%rip), %ymm1, %ymm0 1051vpsrlw $4, %ymm1, %ymm1 1052vpaddw %ymm1, %ymm0, %ymm1 1053vpand mask_3(%rip), %ymm1, %ymm0 1054vpsrlw $2, %ymm1, %ymm1 1055vpaddw %ymm1, %ymm0, %ymm1 1056vpand mask_3(%rip), %ymm1, %ymm0 1057vpsrlw $2, %ymm1, %ymm1 1058vpaddw %ymm1, %ymm0, %ymm1 1059vpsubw mask_3(%rip), %ymm1, %ymm14 1060vpsraw $15, %ymm14, %ymm15 1061vpandn %ymm14, %ymm15, %ymm0 1062vpand %ymm15, %ymm1, %ymm14 1063vpxor %ymm14, %ymm0, %ymm1 1064vmovdqa %ymm1, 1248(%rdi) 1065vmovdqa 1280(%rsi), %ymm0 1066vpand %ymm6, %ymm0, %ymm0 1067vpsrlw $11, %ymm0, %ymm1 1068vpsllw $1, %ymm1, %ymm1 1069vpaddw %ymm0, %ymm1, %ymm0 1070vpaddw %ymm0, %ymm5, %ymm0 1071vpsrlw $8, %ymm0, %ymm1 1072vpand mask_ff(%rip), %ymm0, %ymm0 1073vpaddw %ymm1, %ymm0, %ymm1 1074vpand mask_f(%rip), %ymm1, %ymm0 1075vpsrlw $4, %ymm1, %ymm1 1076vpaddw %ymm1, %ymm0, %ymm1 1077vpand mask_3(%rip), %ymm1, %ymm0 1078vpsrlw $2, %ymm1, %ymm1 1079vpaddw %ymm1, %ymm0, %ymm1 1080vpand mask_3(%rip), %ymm1, %ymm0 1081vpsrlw $2, %ymm1, %ymm1 1082vpaddw %ymm1, %ymm0, %ymm1 1083vpsubw mask_3(%rip), %ymm1, %ymm14 1084vpsraw $15, %ymm14, %ymm15 1085vpandn %ymm14, %ymm15, %ymm0 1086vpand %ymm15, %ymm1, %ymm14 1087vpxor %ymm14, %ymm0, %ymm1 1088vmovdqa %ymm1, 1280(%rdi) 1089vmovdqa 1312(%rsi), %ymm0 1090vpand %ymm6, %ymm0, %ymm0 1091vpsrlw $11, %ymm0, %ymm1 1092vpsllw $1, %ymm1, %ymm1 1093vpaddw %ymm0, %ymm1, %ymm0 1094vpaddw %ymm0, %ymm5, %ymm0 1095vpsrlw $8, %ymm0, %ymm1 1096vpand mask_ff(%rip), %ymm0, %ymm0 1097vpaddw %ymm1, %ymm0, %ymm1 1098vpand mask_f(%rip), %ymm1, %ymm0 1099vpsrlw $4, %ymm1, %ymm1 1100vpaddw %ymm1, %ymm0, %ymm1 1101vpand mask_3(%rip), %ymm1, %ymm0 1102vpsrlw $2, %ymm1, %ymm1 1103vpaddw %ymm1, %ymm0, %ymm1 1104vpand mask_3(%rip), %ymm1, %ymm0 1105vpsrlw $2, %ymm1, %ymm1 1106vpaddw %ymm1, %ymm0, %ymm1 1107vpsubw mask_3(%rip), %ymm1, %ymm14 1108vpsraw $15, %ymm14, %ymm15 1109vpandn %ymm14, %ymm15, %ymm0 1110vpand %ymm15, %ymm1, %ymm14 1111vpxor %ymm14, %ymm0, %ymm1 1112vmovdqa %ymm1, 1312(%rdi) 1113vmovdqa 1344(%rsi), %ymm0 1114vpand %ymm6, %ymm0, %ymm0 1115vpsrlw $11, %ymm0, %ymm1 1116vpsllw $1, %ymm1, %ymm1 1117vpaddw %ymm0, %ymm1, %ymm0 1118vpaddw %ymm0, %ymm5, %ymm0 1119vpsrlw $8, %ymm0, %ymm1 1120vpand mask_ff(%rip), %ymm0, %ymm0 1121vpaddw %ymm1, %ymm0, %ymm1 1122vpand mask_f(%rip), %ymm1, %ymm0 1123vpsrlw $4, %ymm1, %ymm1 1124vpaddw %ymm1, %ymm0, %ymm1 1125vpand mask_3(%rip), %ymm1, %ymm0 1126vpsrlw $2, %ymm1, %ymm1 1127vpaddw %ymm1, %ymm0, %ymm1 1128vpand mask_3(%rip), %ymm1, %ymm0 1129vpsrlw $2, %ymm1, %ymm1 1130vpaddw %ymm1, %ymm0, %ymm1 1131vpsubw mask_3(%rip), %ymm1, %ymm14 1132vpsraw $15, %ymm14, %ymm15 1133vpandn %ymm14, %ymm15, %ymm0 1134vpand %ymm15, %ymm1, %ymm14 1135vpxor %ymm14, %ymm0, %ymm1 1136vmovdqa %ymm1, 1344(%rdi) 1137vmovdqa 1376(%rsi), %ymm0 1138vpand %ymm6, %ymm0, %ymm0 1139vpsrlw $11, %ymm0, %ymm1 1140vpsllw $1, %ymm1, %ymm1 1141vpaddw %ymm0, %ymm1, %ymm0 1142vpaddw %ymm0, %ymm5, %ymm0 1143vpsrlw $8, %ymm0, %ymm1 1144vpand mask_ff(%rip), %ymm0, %ymm0 1145vpaddw %ymm1, %ymm0, %ymm1 1146vpand mask_f(%rip), %ymm1, %ymm0 1147vpsrlw $4, %ymm1, %ymm1 1148vpaddw %ymm1, %ymm0, %ymm1 1149vpand mask_3(%rip), %ymm1, %ymm0 1150vpsrlw $2, %ymm1, %ymm1 1151vpaddw %ymm1, %ymm0, %ymm1 1152vpand mask_3(%rip), %ymm1, %ymm0 1153vpsrlw $2, %ymm1, %ymm1 1154vpaddw %ymm1, %ymm0, %ymm1 1155vpsubw mask_3(%rip), %ymm1, %ymm14 1156vpsraw $15, %ymm14, %ymm15 1157vpandn %ymm14, %ymm15, %ymm0 1158vpand %ymm15, %ymm1, %ymm14 1159vpxor %ymm14, %ymm0, %ymm1 1160vmovdqa %ymm1, 1376(%rdi) 1161vmovdqa 1408(%rsi), %ymm0 1162vpand %ymm6, %ymm0, %ymm0 1163vpsrlw $11, %ymm0, %ymm1 1164vpsllw $1, %ymm1, %ymm1 1165vpaddw %ymm0, %ymm1, %ymm0 1166vpaddw %ymm0, %ymm5, %ymm0 1167vpsrlw $8, %ymm0, %ymm1 1168vpand mask_ff(%rip), %ymm0, %ymm0 1169vpaddw %ymm1, %ymm0, %ymm1 1170vpand mask_f(%rip), %ymm1, %ymm0 1171vpsrlw $4, %ymm1, %ymm1 1172vpaddw %ymm1, %ymm0, %ymm1 1173vpand mask_3(%rip), %ymm1, %ymm0 1174vpsrlw $2, %ymm1, %ymm1 1175vpaddw %ymm1, %ymm0, %ymm1 1176vpand mask_3(%rip), %ymm1, %ymm0 1177vpsrlw $2, %ymm1, %ymm1 1178vpaddw %ymm1, %ymm0, %ymm1 1179vpsubw mask_3(%rip), %ymm1, %ymm14 1180vpsraw $15, %ymm14, %ymm15 1181vpandn %ymm14, %ymm15, %ymm0 1182vpand %ymm15, %ymm1, %ymm14 1183vpxor %ymm14, %ymm0, %ymm1 1184vmovdqa %ymm1, 1408(%rdi) 1185vmovdqa 1440(%rsi), %ymm0 1186vpand %ymm6, %ymm0, %ymm0 1187vpsrlw $11, %ymm0, %ymm1 1188vpsllw $1, %ymm1, %ymm1 1189vpaddw %ymm0, %ymm1, %ymm0 1190vpaddw %ymm0, %ymm5, %ymm0 1191vpsrlw $8, %ymm0, %ymm1 1192vpand mask_ff(%rip), %ymm0, %ymm0 1193vpaddw %ymm1, %ymm0, %ymm1 1194vpand mask_f(%rip), %ymm1, %ymm0 1195vpsrlw $4, %ymm1, %ymm1 1196vpaddw %ymm1, %ymm0, %ymm1 1197vpand mask_3(%rip), %ymm1, %ymm0 1198vpsrlw $2, %ymm1, %ymm1 1199vpaddw %ymm1, %ymm0, %ymm1 1200vpand mask_3(%rip), %ymm1, %ymm0 1201vpsrlw $2, %ymm1, %ymm1 1202vpaddw %ymm1, %ymm0, %ymm1 1203vpsubw mask_3(%rip), %ymm1, %ymm14 1204vpsraw $15, %ymm14, %ymm15 1205vpandn %ymm14, %ymm15, %ymm0 1206vpand %ymm15, %ymm1, %ymm14 1207vpxor %ymm14, %ymm0, %ymm1 1208vmovdqa %ymm1, 1440(%rdi) 1209vmovdqa 1472(%rsi), %ymm0 1210vpand %ymm6, %ymm0, %ymm0 1211vpsrlw $11, %ymm0, %ymm1 1212vpsllw $1, %ymm1, %ymm1 1213vpaddw %ymm0, %ymm1, %ymm0 1214vpaddw %ymm0, %ymm5, %ymm0 1215vpsrlw $8, %ymm0, %ymm1 1216vpand mask_ff(%rip), %ymm0, %ymm0 1217vpaddw %ymm1, %ymm0, %ymm1 1218vpand mask_f(%rip), %ymm1, %ymm0 1219vpsrlw $4, %ymm1, %ymm1 1220vpaddw %ymm1, %ymm0, %ymm1 1221vpand mask_3(%rip), %ymm1, %ymm0 1222vpsrlw $2, %ymm1, %ymm1 1223vpaddw %ymm1, %ymm0, %ymm1 1224vpand mask_3(%rip), %ymm1, %ymm0 1225vpsrlw $2, %ymm1, %ymm1 1226vpaddw %ymm1, %ymm0, %ymm1 1227vpsubw mask_3(%rip), %ymm1, %ymm14 1228vpsraw $15, %ymm14, %ymm15 1229vpandn %ymm14, %ymm15, %ymm0 1230vpand %ymm15, %ymm1, %ymm14 1231vpxor %ymm14, %ymm0, %ymm1 1232vmovdqa %ymm1, 1472(%rdi) 1233vmovdqa 1504(%rsi), %ymm0 1234vpand %ymm6, %ymm0, %ymm0 1235vpsrlw $11, %ymm0, %ymm1 1236vpsllw $1, %ymm1, %ymm1 1237vpaddw %ymm0, %ymm1, %ymm0 1238vpaddw %ymm0, %ymm5, %ymm0 1239vpsrlw $8, %ymm0, %ymm1 1240vpand mask_ff(%rip), %ymm0, %ymm0 1241vpaddw %ymm1, %ymm0, %ymm1 1242vpand mask_f(%rip), %ymm1, %ymm0 1243vpsrlw $4, %ymm1, %ymm1 1244vpaddw %ymm1, %ymm0, %ymm1 1245vpand mask_3(%rip), %ymm1, %ymm0 1246vpsrlw $2, %ymm1, %ymm1 1247vpaddw %ymm1, %ymm0, %ymm1 1248vpand mask_3(%rip), %ymm1, %ymm0 1249vpsrlw $2, %ymm1, %ymm1 1250vpaddw %ymm1, %ymm0, %ymm1 1251vpsubw mask_3(%rip), %ymm1, %ymm14 1252vpsraw $15, %ymm14, %ymm15 1253vpandn %ymm14, %ymm15, %ymm0 1254vpand %ymm15, %ymm1, %ymm14 1255vpxor %ymm14, %ymm0, %ymm1 1256vmovdqa %ymm1, 1504(%rdi) 1257vmovdqa 1536(%rsi), %ymm0 1258vpand %ymm6, %ymm0, %ymm0 1259vpsrlw $11, %ymm0, %ymm1 1260vpsllw $1, %ymm1, %ymm1 1261vpaddw %ymm0, %ymm1, %ymm0 1262vpaddw %ymm0, %ymm5, %ymm0 1263vpsrlw $8, %ymm0, %ymm1 1264vpand mask_ff(%rip), %ymm0, %ymm0 1265vpaddw %ymm1, %ymm0, %ymm1 1266vpand mask_f(%rip), %ymm1, %ymm0 1267vpsrlw $4, %ymm1, %ymm1 1268vpaddw %ymm1, %ymm0, %ymm1 1269vpand mask_3(%rip), %ymm1, %ymm0 1270vpsrlw $2, %ymm1, %ymm1 1271vpaddw %ymm1, %ymm0, %ymm1 1272vpand mask_3(%rip), %ymm1, %ymm0 1273vpsrlw $2, %ymm1, %ymm1 1274vpaddw %ymm1, %ymm0, %ymm1 1275vpsubw mask_3(%rip), %ymm1, %ymm14 1276vpsraw $15, %ymm14, %ymm15 1277vpandn %ymm14, %ymm15, %ymm0 1278vpand %ymm15, %ymm1, %ymm14 1279vpxor %ymm14, %ymm0, %ymm1 1280vmovdqa %ymm1, 1536(%rdi) 1281vmovdqa 1568(%rsi), %ymm0 1282vpand %ymm6, %ymm0, %ymm0 1283vpsrlw $11, %ymm0, %ymm1 1284vpsllw $1, %ymm1, %ymm1 1285vpaddw %ymm0, %ymm1, %ymm0 1286vpaddw %ymm0, %ymm5, %ymm0 1287vpsrlw $8, %ymm0, %ymm1 1288vpand mask_ff(%rip), %ymm0, %ymm0 1289vpaddw %ymm1, %ymm0, %ymm1 1290vpand mask_f(%rip), %ymm1, %ymm0 1291vpsrlw $4, %ymm1, %ymm1 1292vpaddw %ymm1, %ymm0, %ymm1 1293vpand mask_3(%rip), %ymm1, %ymm0 1294vpsrlw $2, %ymm1, %ymm1 1295vpaddw %ymm1, %ymm0, %ymm1 1296vpand mask_3(%rip), %ymm1, %ymm0 1297vpsrlw $2, %ymm1, %ymm1 1298vpaddw %ymm1, %ymm0, %ymm1 1299vpsubw mask_3(%rip), %ymm1, %ymm14 1300vpsraw $15, %ymm14, %ymm15 1301vpandn %ymm14, %ymm15, %ymm0 1302vpand %ymm15, %ymm1, %ymm14 1303vpxor %ymm14, %ymm0, %ymm1 1304vmovdqa %ymm1, 1568(%rdi) 1305vmovdqa 1600(%rsi), %ymm0 1306vpand %ymm6, %ymm0, %ymm0 1307vpsrlw $11, %ymm0, %ymm1 1308vpsllw $1, %ymm1, %ymm1 1309vpaddw %ymm0, %ymm1, %ymm0 1310vpaddw %ymm0, %ymm5, %ymm0 1311vpsrlw $8, %ymm0, %ymm1 1312vpand mask_ff(%rip), %ymm0, %ymm0 1313vpaddw %ymm1, %ymm0, %ymm1 1314vpand mask_f(%rip), %ymm1, %ymm0 1315vpsrlw $4, %ymm1, %ymm1 1316vpaddw %ymm1, %ymm0, %ymm1 1317vpand mask_3(%rip), %ymm1, %ymm0 1318vpsrlw $2, %ymm1, %ymm1 1319vpaddw %ymm1, %ymm0, %ymm1 1320vpand mask_3(%rip), %ymm1, %ymm0 1321vpsrlw $2, %ymm1, %ymm1 1322vpaddw %ymm1, %ymm0, %ymm1 1323vpsubw mask_3(%rip), %ymm1, %ymm14 1324vpsraw $15, %ymm14, %ymm15 1325vpandn %ymm14, %ymm15, %ymm0 1326vpand %ymm15, %ymm1, %ymm14 1327vpxor %ymm14, %ymm0, %ymm1 1328vmovdqa %ymm1, 1600(%rdi) 1329vmovdqa 1632(%rsi), %ymm0 1330vpand %ymm6, %ymm0, %ymm0 1331vpsrlw $11, %ymm0, %ymm1 1332vpsllw $1, %ymm1, %ymm1 1333vpaddw %ymm0, %ymm1, %ymm0 1334vpaddw %ymm0, %ymm5, %ymm0 1335vpsrlw $8, %ymm0, %ymm1 1336vpand mask_ff(%rip), %ymm0, %ymm0 1337vpaddw %ymm1, %ymm0, %ymm1 1338vpand mask_f(%rip), %ymm1, %ymm0 1339vpsrlw $4, %ymm1, %ymm1 1340vpaddw %ymm1, %ymm0, %ymm1 1341vpand mask_3(%rip), %ymm1, %ymm0 1342vpsrlw $2, %ymm1, %ymm1 1343vpaddw %ymm1, %ymm0, %ymm1 1344vpand mask_3(%rip), %ymm1, %ymm0 1345vpsrlw $2, %ymm1, %ymm1 1346vpaddw %ymm1, %ymm0, %ymm1 1347vpsubw mask_3(%rip), %ymm1, %ymm14 1348vpsraw $15, %ymm14, %ymm15 1349vpandn %ymm14, %ymm15, %ymm0 1350vpand %ymm15, %ymm1, %ymm14 1351vpxor %ymm14, %ymm0, %ymm1 1352vmovdqa %ymm1, 1632(%rdi) 1353ret 1354