//+build !noasm !appengine // AUTO-GENERATED BY C2GOASM -- DO NOT EDIT DATA LCDATA1<>+0x000(SB)/8, $0x8080808080808080 DATA LCDATA1<>+0x008(SB)/8, $0x8080808080808080 DATA LCDATA1<>+0x010(SB)/8, $0x7f7f7f7f7f7f7f7f DATA LCDATA1<>+0x018(SB)/8, $0x7f7f7f7f7f7f7f7f GLOBL LCDATA1<>(SB), 8, $32 TEXT ·_int8_max_min_sse4(SB), $0-32 MOVQ values+0(FP), DI MOVQ length+8(FP), SI MOVQ minout+16(FP), DX MOVQ maxout+24(FP), CX LEAQ LCDATA1<>(SB), BP WORD $0xf685 // test esi, esi JLE LBB0_1 WORD $0x8941; BYTE $0xf1 // mov r9d, esi WORD $0xfe83; BYTE $0x1f // cmp esi, 31 JA LBB0_4 WORD $0xb041; BYTE $0x80 // mov r8b, -128 WORD $0xb640; BYTE $0x7f // mov sil, 127 WORD $0x3145; BYTE $0xdb // xor r11d, r11d JMP LBB0_11 LBB0_1: WORD $0xb640; BYTE $0x7f // mov sil, 127 WORD $0xb041; BYTE $0x80 // mov r8b, -128 JMP LBB0_12 LBB0_4: WORD $0x8945; BYTE $0xcb // mov r11d, r9d LONG $0xe0e38341 // and r11d, -32 LONG $0xe0438d49 // lea rax, [r11 - 32] WORD $0x8949; BYTE $0xc0 // mov r8, rax LONG $0x05e8c149 // shr r8, 5 LONG $0x01c08349 // add r8, 1 WORD $0x8548; BYTE $0xc0 // test rax, rax JE LBB0_5 WORD $0x894d; BYTE $0xc2 // mov r10, r8 LONG $0xfee28349 // and r10, -2 WORD $0xf749; BYTE $0xda // neg r10 LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI0_0] */ LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI0_1] */ WORD $0xc031 // xor eax, eax LONG $0xd06f0f66 // movdqa xmm2, xmm0 LONG $0xd96f0f66 // movdqa xmm3, xmm1 LBB0_7: LONG $0x246f0ff3; BYTE $0x07 // movdqu xmm4, oword [rdi + rax] LONG $0x6c6f0ff3; WORD $0x1007 // movdqu xmm5, oword [rdi + rax + 16] LONG $0x746f0ff3; WORD $0x2007 // movdqu xmm6, oword [rdi + rax + 32] LONG $0x7c6f0ff3; WORD $0x3007 // movdqu xmm7, oword [rdi + rax + 48] LONG $0x38380f66; BYTE $0xc4 // pminsb xmm0, xmm4 LONG $0x38380f66; BYTE $0xd5 // pminsb xmm2, xmm5 LONG $0x3c380f66; BYTE $0xcc // pmaxsb xmm1, xmm4 LONG $0x3c380f66; BYTE $0xdd // pmaxsb xmm3, xmm5 LONG $0x38380f66; BYTE $0xc6 // pminsb xmm0, xmm6 LONG $0x38380f66; BYTE $0xd7 // pminsb xmm2, xmm7 LONG $0x3c380f66; BYTE $0xce // pmaxsb xmm1, xmm6 LONG $0x3c380f66; BYTE $0xdf // pmaxsb xmm3, xmm7 LONG $0x40c08348 // add rax, 64 LONG $0x02c28349 // add r10, 2 JNE LBB0_7 LONG $0x01c0f641 // test r8b, 1 JE LBB0_10 LBB0_9: LONG $0x246f0ff3; BYTE $0x07 // movdqu xmm4, oword [rdi + rax] LONG $0x6c6f0ff3; WORD $0x1007 // movdqu xmm5, oword [rdi + rax + 16] LONG $0x3c380f66; BYTE $0xdd // pmaxsb xmm3, xmm5 LONG $0x3c380f66; BYTE $0xcc // pmaxsb xmm1, xmm4 LONG $0x38380f66; BYTE $0xd5 // pminsb xmm2, xmm5 LONG $0x38380f66; BYTE $0xc4 // pminsb xmm0, xmm4 LBB0_10: LONG $0x38380f66; BYTE $0xc2 // pminsb xmm0, xmm2 LONG $0x3c380f66; BYTE $0xcb // pmaxsb xmm1, xmm3 LONG $0x4def0f66; BYTE $0x10 // pxor xmm1, oword 16[rbp] /* [rip + .LCPI0_1] */ LONG $0xd16f0f66 // movdqa xmm2, xmm1 LONG $0xd2710f66; BYTE $0x08 // psrlw xmm2, 8 LONG $0xd1da0f66 // pminub xmm2, xmm1 LONG $0x41380f66; BYTE $0xca // phminposuw xmm1, xmm2 LONG $0x7e0f4166; BYTE $0xc8 // movd r8d, xmm1 LONG $0x7ff08041 // xor r8b, 127 LONG $0x45ef0f66; BYTE $0x00 // pxor xmm0, oword 0[rbp] /* [rip + .LCPI0_0] */ LONG $0xc86f0f66 // movdqa xmm1, xmm0 LONG $0xd1710f66; BYTE $0x08 // psrlw xmm1, 8 LONG $0xc8da0f66 // pminub xmm1, xmm0 LONG $0x41380f66; BYTE $0xc1 // phminposuw xmm0, xmm1 LONG $0xc67e0f66 // movd esi, xmm0 LONG $0x80f68040 // xor sil, -128 WORD $0x394d; BYTE $0xcb // cmp r11, r9 JE LBB0_12 LBB0_11: LONG $0x04b60f42; BYTE $0x1f // movzx eax, byte [rdi + r11] WORD $0x3840; BYTE $0xc6 // cmp sil, al LONG $0xf6b60f40 // movzx esi, sil WORD $0x4f0f; BYTE $0xf0 // cmovg esi, eax WORD $0x3841; BYTE $0xc0 // cmp r8b, al LONG $0xc0b60f45 // movzx r8d, r8b LONG $0xc04c0f44 // cmovl r8d, eax LONG $0x01c38349 // add r11, 1 WORD $0x394d; BYTE $0xd9 // cmp r9, r11 JNE LBB0_11 LBB0_12: WORD $0x8844; BYTE $0x01 // mov byte [rcx], r8b WORD $0x8840; BYTE $0x32 // mov byte [rdx], sil RET LBB0_5: LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI0_0] */ LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI0_1] */ WORD $0xc031 // xor eax, eax LONG $0xd06f0f66 // movdqa xmm2, xmm0 LONG $0xd96f0f66 // movdqa xmm3, xmm1 LONG $0x01c0f641 // test r8b, 1 JNE LBB0_9 JMP LBB0_10 TEXT ·_uint8_max_min_sse4(SB), $0-32 MOVQ values+0(FP), DI MOVQ length+8(FP), SI MOVQ minout+16(FP), DX MOVQ maxout+24(FP), CX WORD $0xf685 // test esi, esi JLE LBB1_1 WORD $0x8941; BYTE $0xf1 // mov r9d, esi WORD $0xfe83; BYTE $0x1f // cmp esi, 31 JA LBB1_4 WORD $0xb640; BYTE $0xff // mov sil, -1 WORD $0x3145; BYTE $0xdb // xor r11d, r11d WORD $0xc031 // xor eax, eax JMP LBB1_11 LBB1_1: WORD $0xb640; BYTE $0xff // mov sil, -1 WORD $0xc031 // xor eax, eax JMP LBB1_12 LBB1_4: WORD $0x8945; BYTE $0xcb // mov r11d, r9d LONG $0xe0e38341 // and r11d, -32 LONG $0xe0438d49 // lea rax, [r11 - 32] WORD $0x8949; BYTE $0xc0 // mov r8, rax LONG $0x05e8c149 // shr r8, 5 LONG $0x01c08349 // add r8, 1 WORD $0x8548; BYTE $0xc0 // test rax, rax JE LBB1_5 WORD $0x894d; BYTE $0xc2 // mov r10, r8 LONG $0xfee28349 // and r10, -2 WORD $0xf749; BYTE $0xda // neg r10 LONG $0xc9ef0f66 // pxor xmm1, xmm1 LONG $0xc0760f66 // pcmpeqd xmm0, xmm0 WORD $0xc031 // xor eax, eax LONG $0xd2760f66 // pcmpeqd xmm2, xmm2 LONG $0xdbef0f66 // pxor xmm3, xmm3 LBB1_7: LONG $0x246f0ff3; BYTE $0x07 // movdqu xmm4, oword [rdi + rax] LONG $0x6c6f0ff3; WORD $0x1007 // movdqu xmm5, oword [rdi + rax + 16] LONG $0x746f0ff3; WORD $0x2007 // movdqu xmm6, oword [rdi + rax + 32] LONG $0x7c6f0ff3; WORD $0x3007 // movdqu xmm7, oword [rdi + rax + 48] LONG $0xc4da0f66 // pminub xmm0, xmm4 LONG $0xd5da0f66 // pminub xmm2, xmm5 LONG $0xccde0f66 // pmaxub xmm1, xmm4 LONG $0xddde0f66 // pmaxub xmm3, xmm5 LONG $0xc6da0f66 // pminub xmm0, xmm6 LONG $0xd7da0f66 // pminub xmm2, xmm7 LONG $0xcede0f66 // pmaxub xmm1, xmm6 LONG $0xdfde0f66 // pmaxub xmm3, xmm7 LONG $0x40c08348 // add rax, 64 LONG $0x02c28349 // add r10, 2 JNE LBB1_7 LONG $0x01c0f641 // test r8b, 1 JE LBB1_10 LBB1_9: LONG $0x246f0ff3; BYTE $0x07 // movdqu xmm4, oword [rdi + rax] LONG $0x6c6f0ff3; WORD $0x1007 // movdqu xmm5, oword [rdi + rax + 16] LONG $0xddde0f66 // pmaxub xmm3, xmm5 LONG $0xccde0f66 // pmaxub xmm1, xmm4 LONG $0xd5da0f66 // pminub xmm2, xmm5 LONG $0xc4da0f66 // pminub xmm0, xmm4 LBB1_10: LONG $0xc2da0f66 // pminub xmm0, xmm2 LONG $0xcbde0f66 // pmaxub xmm1, xmm3 LONG $0xd2760f66 // pcmpeqd xmm2, xmm2 LONG $0xd1ef0f66 // pxor xmm2, xmm1 LONG $0xca6f0f66 // movdqa xmm1, xmm2 LONG $0xd1710f66; BYTE $0x08 // psrlw xmm1, 8 LONG $0xcada0f66 // pminub xmm1, xmm2 LONG $0x41380f66; BYTE $0xc9 // phminposuw xmm1, xmm1 LONG $0xc87e0f66 // movd eax, xmm1 WORD $0xd0f6 // not al LONG $0xc86f0f66 // movdqa xmm1, xmm0 LONG $0xd1710f66; BYTE $0x08 // psrlw xmm1, 8 LONG $0xc8da0f66 // pminub xmm1, xmm0 LONG $0x41380f66; BYTE $0xc1 // phminposuw xmm0, xmm1 LONG $0xc67e0f66 // movd esi, xmm0 WORD $0x394d; BYTE $0xcb // cmp r11, r9 JE LBB1_12 LBB1_11: LONG $0x04b60f46; BYTE $0x1f // movzx r8d, byte [rdi + r11] WORD $0x3844; BYTE $0xc6 // cmp sil, r8b LONG $0xf6b60f40 // movzx esi, sil LONG $0xf0430f41 // cmovae esi, r8d WORD $0x3844; BYTE $0xc0 // cmp al, r8b WORD $0xb60f; BYTE $0xc0 // movzx eax, al LONG $0xc0460f41 // cmovbe eax, r8d LONG $0x01c38349 // add r11, 1 WORD $0x394d; BYTE $0xd9 // cmp r9, r11 JNE LBB1_11 LBB1_12: WORD $0x0188 // mov byte [rcx], al WORD $0x8840; BYTE $0x32 // mov byte [rdx], sil RET LBB1_5: LONG $0xc9ef0f66 // pxor xmm1, xmm1 LONG $0xc0760f66 // pcmpeqd xmm0, xmm0 WORD $0xc031 // xor eax, eax LONG $0xd2760f66 // pcmpeqd xmm2, xmm2 LONG $0xdbef0f66 // pxor xmm3, xmm3 LONG $0x01c0f641 // test r8b, 1 JNE LBB1_9 JMP LBB1_10 DATA LCDATA2<>+0x000(SB)/8, $0x8000800080008000 DATA LCDATA2<>+0x008(SB)/8, $0x8000800080008000 DATA LCDATA2<>+0x010(SB)/8, $0x7fff7fff7fff7fff DATA LCDATA2<>+0x018(SB)/8, $0x7fff7fff7fff7fff GLOBL LCDATA2<>(SB), 8, $32 TEXT ·_int16_max_min_sse4(SB), $0-32 MOVQ values+0(FP), DI MOVQ length+8(FP), SI MOVQ minout+16(FP), DX MOVQ maxout+24(FP), CX LEAQ LCDATA2<>(SB), BP WORD $0xf685 // test esi, esi JLE LBB2_1 WORD $0x8941; BYTE $0xf1 // mov r9d, esi WORD $0xfe83; BYTE $0x0f // cmp esi, 15 JA LBB2_4 LONG $0x00b84166; BYTE $0x80 // mov r8w, -32768 LONG $0x7fffbe66 // mov si, 32767 WORD $0x3145; BYTE $0xdb // xor r11d, r11d JMP LBB2_11 LBB2_1: LONG $0x7fffbe66 // mov si, 32767 LONG $0x00b84166; BYTE $0x80 // mov r8w, -32768 JMP LBB2_12 LBB2_4: WORD $0x8945; BYTE $0xcb // mov r11d, r9d LONG $0xf0e38341 // and r11d, -16 LONG $0xf0438d49 // lea rax, [r11 - 16] WORD $0x8949; BYTE $0xc0 // mov r8, rax LONG $0x04e8c149 // shr r8, 4 LONG $0x01c08349 // add r8, 1 WORD $0x8548; BYTE $0xc0 // test rax, rax JE LBB2_5 WORD $0x894d; BYTE $0xc2 // mov r10, r8 LONG $0xfee28349 // and r10, -2 WORD $0xf749; BYTE $0xda // neg r10 LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI2_0] */ LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI2_1] */ WORD $0xc031 // xor eax, eax LONG $0xd06f0f66 // movdqa xmm2, xmm0 LONG $0xd96f0f66 // movdqa xmm3, xmm1 LBB2_7: LONG $0x246f0ff3; BYTE $0x47 // movdqu xmm4, oword [rdi + 2*rax] LONG $0x6c6f0ff3; WORD $0x1047 // movdqu xmm5, oword [rdi + 2*rax + 16] LONG $0x746f0ff3; WORD $0x2047 // movdqu xmm6, oword [rdi + 2*rax + 32] LONG $0x7c6f0ff3; WORD $0x3047 // movdqu xmm7, oword [rdi + 2*rax + 48] LONG $0xc4ea0f66 // pminsw xmm0, xmm4 LONG $0xd5ea0f66 // pminsw xmm2, xmm5 LONG $0xccee0f66 // pmaxsw xmm1, xmm4 LONG $0xddee0f66 // pmaxsw xmm3, xmm5 LONG $0xc6ea0f66 // pminsw xmm0, xmm6 LONG $0xd7ea0f66 // pminsw xmm2, xmm7 LONG $0xceee0f66 // pmaxsw xmm1, xmm6 LONG $0xdfee0f66 // pmaxsw xmm3, xmm7 LONG $0x20c08348 // add rax, 32 LONG $0x02c28349 // add r10, 2 JNE LBB2_7 LONG $0x01c0f641 // test r8b, 1 JE LBB2_10 LBB2_9: LONG $0x246f0ff3; BYTE $0x47 // movdqu xmm4, oword [rdi + 2*rax] LONG $0x6c6f0ff3; WORD $0x1047 // movdqu xmm5, oword [rdi + 2*rax + 16] LONG $0xddee0f66 // pmaxsw xmm3, xmm5 LONG $0xccee0f66 // pmaxsw xmm1, xmm4 LONG $0xd5ea0f66 // pminsw xmm2, xmm5 LONG $0xc4ea0f66 // pminsw xmm0, xmm4 LBB2_10: LONG $0xc2ea0f66 // pminsw xmm0, xmm2 LONG $0xcbee0f66 // pmaxsw xmm1, xmm3 LONG $0x4def0f66; BYTE $0x10 // pxor xmm1, oword 16[rbp] /* [rip + .LCPI2_1] */ LONG $0x41380f66; BYTE $0xc9 // phminposuw xmm1, xmm1 LONG $0x7e0f4166; BYTE $0xc8 // movd r8d, xmm1 LONG $0xfff08141; WORD $0x007f; BYTE $0x00 // xor r8d, 32767 LONG $0x45ef0f66; BYTE $0x00 // pxor xmm0, oword 0[rbp] /* [rip + .LCPI2_0] */ LONG $0x41380f66; BYTE $0xc0 // phminposuw xmm0, xmm0 LONG $0xc67e0f66 // movd esi, xmm0 LONG $0x8000f681; WORD $0x0000 // xor esi, 32768 WORD $0x394d; BYTE $0xcb // cmp r11, r9 JE LBB2_12 LBB2_11: LONG $0x04b70f42; BYTE $0x5f // movzx eax, word [rdi + 2*r11] WORD $0x3966; BYTE $0xc6 // cmp si, ax WORD $0x4f0f; BYTE $0xf0 // cmovg esi, eax LONG $0xc0394166 // cmp r8w, ax LONG $0xc04c0f44 // cmovl r8d, eax LONG $0x01c38349 // add r11, 1 WORD $0x394d; BYTE $0xd9 // cmp r9, r11 JNE LBB2_11 LBB2_12: LONG $0x01894466 // mov word [rcx], r8w WORD $0x8966; BYTE $0x32 // mov word [rdx], si RET LBB2_5: LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI2_0] */ LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI2_1] */ WORD $0xc031 // xor eax, eax LONG $0xd06f0f66 // movdqa xmm2, xmm0 LONG $0xd96f0f66 // movdqa xmm3, xmm1 LONG $0x01c0f641 // test r8b, 1 JNE LBB2_9 JMP LBB2_10 TEXT ·_uint16_max_min_sse4(SB), $0-32 MOVQ values+0(FP), DI MOVQ length+8(FP), SI MOVQ minout+16(FP), DX MOVQ maxout+24(FP), CX WORD $0xf685 // test esi, esi JLE LBB3_1 WORD $0x8941; BYTE $0xf1 // mov r9d, esi WORD $0xfe83; BYTE $0x0f // cmp esi, 15 JA LBB3_4 LONG $0xffb84166; BYTE $0xff // mov r8w, -1 WORD $0x3145; BYTE $0xdb // xor r11d, r11d WORD $0xf631 // xor esi, esi JMP LBB3_11 LBB3_1: LONG $0xffb84166; BYTE $0xff // mov r8w, -1 WORD $0xf631 // xor esi, esi JMP LBB3_12 LBB3_4: WORD $0x8945; BYTE $0xcb // mov r11d, r9d LONG $0xf0e38341 // and r11d, -16 LONG $0xf0438d49 // lea rax, [r11 - 16] WORD $0x8949; BYTE $0xc0 // mov r8, rax LONG $0x04e8c149 // shr r8, 4 LONG $0x01c08349 // add r8, 1 WORD $0x8548; BYTE $0xc0 // test rax, rax JE LBB3_5 WORD $0x894d; BYTE $0xc2 // mov r10, r8 LONG $0xfee28349 // and r10, -2 WORD $0xf749; BYTE $0xda // neg r10 LONG $0xc9ef0f66 // pxor xmm1, xmm1 LONG $0xc0760f66 // pcmpeqd xmm0, xmm0 WORD $0xc031 // xor eax, eax LONG $0xd2760f66 // pcmpeqd xmm2, xmm2 LONG $0xdbef0f66 // pxor xmm3, xmm3 LBB3_7: LONG $0x246f0ff3; BYTE $0x47 // movdqu xmm4, oword [rdi + 2*rax] LONG $0x6c6f0ff3; WORD $0x1047 // movdqu xmm5, oword [rdi + 2*rax + 16] LONG $0x746f0ff3; WORD $0x2047 // movdqu xmm6, oword [rdi + 2*rax + 32] LONG $0x7c6f0ff3; WORD $0x3047 // movdqu xmm7, oword [rdi + 2*rax + 48] LONG $0x3a380f66; BYTE $0xc4 // pminuw xmm0, xmm4 LONG $0x3a380f66; BYTE $0xd5 // pminuw xmm2, xmm5 LONG $0x3e380f66; BYTE $0xcc // pmaxuw xmm1, xmm4 LONG $0x3e380f66; BYTE $0xdd // pmaxuw xmm3, xmm5 LONG $0x3a380f66; BYTE $0xc6 // pminuw xmm0, xmm6 LONG $0x3a380f66; BYTE $0xd7 // pminuw xmm2, xmm7 LONG $0x3e380f66; BYTE $0xce // pmaxuw xmm1, xmm6 LONG $0x3e380f66; BYTE $0xdf // pmaxuw xmm3, xmm7 LONG $0x20c08348 // add rax, 32 LONG $0x02c28349 // add r10, 2 JNE LBB3_7 LONG $0x01c0f641 // test r8b, 1 JE LBB3_10 LBB3_9: LONG $0x246f0ff3; BYTE $0x47 // movdqu xmm4, oword [rdi + 2*rax] LONG $0x6c6f0ff3; WORD $0x1047 // movdqu xmm5, oword [rdi + 2*rax + 16] LONG $0x3e380f66; BYTE $0xdd // pmaxuw xmm3, xmm5 LONG $0x3e380f66; BYTE $0xcc // pmaxuw xmm1, xmm4 LONG $0x3a380f66; BYTE $0xd5 // pminuw xmm2, xmm5 LONG $0x3a380f66; BYTE $0xc4 // pminuw xmm0, xmm4 LBB3_10: LONG $0x3a380f66; BYTE $0xc2 // pminuw xmm0, xmm2 LONG $0x3e380f66; BYTE $0xcb // pmaxuw xmm1, xmm3 LONG $0xd2760f66 // pcmpeqd xmm2, xmm2 LONG $0xd1ef0f66 // pxor xmm2, xmm1 LONG $0x41380f66; BYTE $0xca // phminposuw xmm1, xmm2 LONG $0xce7e0f66 // movd esi, xmm1 WORD $0xd6f7 // not esi LONG $0x41380f66; BYTE $0xc0 // phminposuw xmm0, xmm0 LONG $0x7e0f4166; BYTE $0xc0 // movd r8d, xmm0 WORD $0x394d; BYTE $0xcb // cmp r11, r9 JE LBB3_12 LBB3_11: LONG $0x04b70f42; BYTE $0x5f // movzx eax, word [rdi + 2*r11] LONG $0xc0394166 // cmp r8w, ax LONG $0xc0430f44 // cmovae r8d, eax WORD $0x3966; BYTE $0xc6 // cmp si, ax WORD $0x460f; BYTE $0xf0 // cmovbe esi, eax LONG $0x01c38349 // add r11, 1 WORD $0x394d; BYTE $0xd9 // cmp r9, r11 JNE LBB3_11 LBB3_12: WORD $0x8966; BYTE $0x31 // mov word [rcx], si LONG $0x02894466 // mov word [rdx], r8w RET LBB3_5: LONG $0xc9ef0f66 // pxor xmm1, xmm1 LONG $0xc0760f66 // pcmpeqd xmm0, xmm0 WORD $0xc031 // xor eax, eax LONG $0xd2760f66 // pcmpeqd xmm2, xmm2 LONG $0xdbef0f66 // pxor xmm3, xmm3 LONG $0x01c0f641 // test r8b, 1 JNE LBB3_9 JMP LBB3_10 DATA LCDATA3<>+0x000(SB)/8, $0x8000000080000000 DATA LCDATA3<>+0x008(SB)/8, $0x8000000080000000 DATA LCDATA3<>+0x010(SB)/8, $0x7fffffff7fffffff DATA LCDATA3<>+0x018(SB)/8, $0x7fffffff7fffffff GLOBL LCDATA3<>(SB), 8, $32 TEXT ·_int32_max_min_sse4(SB), $0-32 MOVQ values+0(FP), DI MOVQ length+8(FP), SI MOVQ minout+16(FP), DX MOVQ maxout+24(FP), CX LEAQ LCDATA3<>(SB), BP WORD $0xf685 // test esi, esi JLE LBB4_1 WORD $0x8941; BYTE $0xf1 // mov r9d, esi WORD $0xfe83; BYTE $0x07 // cmp esi, 7 JA LBB4_6 LONG $0x000000b8; BYTE $0x80 // mov eax, -2147483648 LONG $0xffffb841; WORD $0x7fff // mov r8d, 2147483647 WORD $0x3145; BYTE $0xdb // xor r11d, r11d JMP LBB4_4 LBB4_1: LONG $0xffffb841; WORD $0x7fff // mov r8d, 2147483647 LONG $0x000000b8; BYTE $0x80 // mov eax, -2147483648 JMP LBB4_13 LBB4_6: WORD $0x8945; BYTE $0xcb // mov r11d, r9d LONG $0xf8e38341 // and r11d, -8 LONG $0xf8438d49 // lea rax, [r11 - 8] WORD $0x8949; BYTE $0xc0 // mov r8, rax LONG $0x03e8c149 // shr r8, 3 LONG $0x01c08349 // add r8, 1 WORD $0x8548; BYTE $0xc0 // test rax, rax JE LBB4_7 WORD $0x894d; BYTE $0xc2 // mov r10, r8 LONG $0xfee28349 // and r10, -2 WORD $0xf749; BYTE $0xda // neg r10 LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI4_0] */ LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI4_1] */ WORD $0xc031 // xor eax, eax LONG $0xd06f0f66 // movdqa xmm2, xmm0 LONG $0xd96f0f66 // movdqa xmm3, xmm1 LBB4_9: LONG $0x246f0ff3; BYTE $0x87 // movdqu xmm4, oword [rdi + 4*rax] LONG $0x6c6f0ff3; WORD $0x1087 // movdqu xmm5, oword [rdi + 4*rax + 16] LONG $0x746f0ff3; WORD $0x2087 // movdqu xmm6, oword [rdi + 4*rax + 32] LONG $0x7c6f0ff3; WORD $0x3087 // movdqu xmm7, oword [rdi + 4*rax + 48] LONG $0x39380f66; BYTE $0xc4 // pminsd xmm0, xmm4 LONG $0x39380f66; BYTE $0xd5 // pminsd xmm2, xmm5 LONG $0x3d380f66; BYTE $0xcc // pmaxsd xmm1, xmm4 LONG $0x3d380f66; BYTE $0xdd // pmaxsd xmm3, xmm5 LONG $0x39380f66; BYTE $0xc6 // pminsd xmm0, xmm6 LONG $0x39380f66; BYTE $0xd7 // pminsd xmm2, xmm7 LONG $0x3d380f66; BYTE $0xce // pmaxsd xmm1, xmm6 LONG $0x3d380f66; BYTE $0xdf // pmaxsd xmm3, xmm7 LONG $0x10c08348 // add rax, 16 LONG $0x02c28349 // add r10, 2 JNE LBB4_9 LONG $0x01c0f641 // test r8b, 1 JE LBB4_12 LBB4_11: LONG $0x246f0ff3; BYTE $0x87 // movdqu xmm4, oword [rdi + 4*rax] LONG $0x6c6f0ff3; WORD $0x1087 // movdqu xmm5, oword [rdi + 4*rax + 16] LONG $0x3d380f66; BYTE $0xdd // pmaxsd xmm3, xmm5 LONG $0x3d380f66; BYTE $0xcc // pmaxsd xmm1, xmm4 LONG $0x39380f66; BYTE $0xd5 // pminsd xmm2, xmm5 LONG $0x39380f66; BYTE $0xc4 // pminsd xmm0, xmm4 LBB4_12: LONG $0x39380f66; BYTE $0xc2 // pminsd xmm0, xmm2 LONG $0x3d380f66; BYTE $0xcb // pmaxsd xmm1, xmm3 LONG $0xd1700f66; BYTE $0x4e // pshufd xmm2, xmm1, 78 LONG $0x3d380f66; BYTE $0xd1 // pmaxsd xmm2, xmm1 LONG $0xca700f66; BYTE $0xe5 // pshufd xmm1, xmm2, 229 LONG $0x3d380f66; BYTE $0xca // pmaxsd xmm1, xmm2 LONG $0xc87e0f66 // movd eax, xmm1 LONG $0xc8700f66; BYTE $0x4e // pshufd xmm1, xmm0, 78 LONG $0x39380f66; BYTE $0xc8 // pminsd xmm1, xmm0 LONG $0xc1700f66; BYTE $0xe5 // pshufd xmm0, xmm1, 229 LONG $0x39380f66; BYTE $0xc1 // pminsd xmm0, xmm1 LONG $0x7e0f4166; BYTE $0xc0 // movd r8d, xmm0 WORD $0x394d; BYTE $0xcb // cmp r11, r9 JE LBB4_13 LBB4_4: WORD $0xc689 // mov esi, eax LBB4_5: LONG $0x9f048b42 // mov eax, dword [rdi + 4*r11] WORD $0x3941; BYTE $0xc0 // cmp r8d, eax LONG $0xc04f0f44 // cmovg r8d, eax WORD $0xc639 // cmp esi, eax WORD $0x4d0f; BYTE $0xc6 // cmovge eax, esi LONG $0x01c38349 // add r11, 1 WORD $0xc689 // mov esi, eax WORD $0x394d; BYTE $0xd9 // cmp r9, r11 JNE LBB4_5 LBB4_13: WORD $0x0189 // mov dword [rcx], eax WORD $0x8944; BYTE $0x02 // mov dword [rdx], r8d RET LBB4_7: LONG $0x4d6f0f66; BYTE $0x00 // movdqa xmm1, oword 0[rbp] /* [rip + .LCPI4_0] */ LONG $0x456f0f66; BYTE $0x10 // movdqa xmm0, oword 16[rbp] /* [rip + .LCPI4_1] */ WORD $0xc031 // xor eax, eax LONG $0xd06f0f66 // movdqa xmm2, xmm0 LONG $0xd96f0f66 // movdqa xmm3, xmm1 LONG $0x01c0f641 // test r8b, 1 JNE LBB4_11 JMP LBB4_12 TEXT ·_uint32_max_min_sse4(SB), $0-32 MOVQ values+0(FP), DI MOVQ length+8(FP), SI MOVQ minout+16(FP), DX MOVQ maxout+24(FP), CX WORD $0xf685 // test esi, esi JLE LBB5_1 WORD $0x8941; BYTE $0xf1 // mov r9d, esi WORD $0xfe83; BYTE $0x07 // cmp esi, 7 JA LBB5_6 WORD $0x3145; BYTE $0xdb // xor r11d, r11d LONG $0xffffb841; WORD $0xffff // mov r8d, -1 WORD $0xf631 // xor esi, esi JMP LBB5_4 LBB5_1: LONG $0xffffb841; WORD $0xffff // mov r8d, -1 WORD $0xf631 // xor esi, esi JMP LBB5_13 LBB5_6: WORD $0x8945; BYTE $0xcb // mov r11d, r9d LONG $0xf8e38341 // and r11d, -8 LONG $0xf8438d49 // lea rax, [r11 - 8] WORD $0x8949; BYTE $0xc0 // mov r8, rax LONG $0x03e8c149 // shr r8, 3 LONG $0x01c08349 // add r8, 1 WORD $0x8548; BYTE $0xc0 // test rax, rax JE LBB5_7 WORD $0x894d; BYTE $0xc2 // mov r10, r8 LONG $0xfee28349 // and r10, -2 WORD $0xf749; BYTE $0xda // neg r10 LONG $0xc9ef0f66 // pxor xmm1, xmm1 LONG $0xc0760f66 // pcmpeqd xmm0, xmm0 WORD $0xc031 // xor eax, eax LONG $0xd2760f66 // pcmpeqd xmm2, xmm2 LONG $0xdbef0f66 // pxor xmm3, xmm3 LBB5_9: LONG $0x246f0ff3; BYTE $0x87 // movdqu xmm4, oword [rdi + 4*rax] LONG $0x6c6f0ff3; WORD $0x1087 // movdqu xmm5, oword [rdi + 4*rax + 16] LONG $0x746f0ff3; WORD $0x2087 // movdqu xmm6, oword [rdi + 4*rax + 32] LONG $0x7c6f0ff3; WORD $0x3087 // movdqu xmm7, oword [rdi + 4*rax + 48] LONG $0x3b380f66; BYTE $0xc4 // pminud xmm0, xmm4 LONG $0x3b380f66; BYTE $0xd5 // pminud xmm2, xmm5 LONG $0x3f380f66; BYTE $0xcc // pmaxud xmm1, xmm4 LONG $0x3f380f66; BYTE $0xdd // pmaxud xmm3, xmm5 LONG $0x3b380f66; BYTE $0xc6 // pminud xmm0, xmm6 LONG $0x3b380f66; BYTE $0xd7 // pminud xmm2, xmm7 LONG $0x3f380f66; BYTE $0xce // pmaxud xmm1, xmm6 LONG $0x3f380f66; BYTE $0xdf // pmaxud xmm3, xmm7 LONG $0x10c08348 // add rax, 16 LONG $0x02c28349 // add r10, 2 JNE LBB5_9 LONG $0x01c0f641 // test r8b, 1 JE LBB5_12 LBB5_11: LONG $0x246f0ff3; BYTE $0x87 // movdqu xmm4, oword [rdi + 4*rax] LONG $0x6c6f0ff3; WORD $0x1087 // movdqu xmm5, oword [rdi + 4*rax + 16] LONG $0x3f380f66; BYTE $0xdd // pmaxud xmm3, xmm5 LONG $0x3f380f66; BYTE $0xcc // pmaxud xmm1, xmm4 LONG $0x3b380f66; BYTE $0xd5 // pminud xmm2, xmm5 LONG $0x3b380f66; BYTE $0xc4 // pminud xmm0, xmm4 LBB5_12: LONG $0x3b380f66; BYTE $0xc2 // pminud xmm0, xmm2 LONG $0x3f380f66; BYTE $0xcb // pmaxud xmm1, xmm3 LONG $0xd1700f66; BYTE $0x4e // pshufd xmm2, xmm1, 78 LONG $0x3f380f66; BYTE $0xd1 // pmaxud xmm2, xmm1 LONG $0xca700f66; BYTE $0xe5 // pshufd xmm1, xmm2, 229 LONG $0x3f380f66; BYTE $0xca // pmaxud xmm1, xmm2 LONG $0xce7e0f66 // movd esi, xmm1 LONG $0xc8700f66; BYTE $0x4e // pshufd xmm1, xmm0, 78 LONG $0x3b380f66; BYTE $0xc8 // pminud xmm1, xmm0 LONG $0xc1700f66; BYTE $0xe5 // pshufd xmm0, xmm1, 229 LONG $0x3b380f66; BYTE $0xc1 // pminud xmm0, xmm1 LONG $0x7e0f4166; BYTE $0xc0 // movd r8d, xmm0 WORD $0x394d; BYTE $0xcb // cmp r11, r9 JE LBB5_13 LBB5_4: WORD $0xf089 // mov eax, esi LBB5_5: LONG $0x9f348b42 // mov esi, dword [rdi + 4*r11] WORD $0x3941; BYTE $0xf0 // cmp r8d, esi LONG $0xc6430f44 // cmovae r8d, esi WORD $0xf039 // cmp eax, esi WORD $0x470f; BYTE $0xf0 // cmova esi, eax LONG $0x01c38349 // add r11, 1 WORD $0xf089 // mov eax, esi WORD $0x394d; BYTE $0xd9 // cmp r9, r11 JNE LBB5_5 LBB5_13: WORD $0x3189 // mov dword [rcx], esi WORD $0x8944; BYTE $0x02 // mov dword [rdx], r8d RET LBB5_7: LONG $0xc9ef0f66 // pxor xmm1, xmm1 LONG $0xc0760f66 // pcmpeqd xmm0, xmm0 WORD $0xc031 // xor eax, eax LONG $0xd2760f66 // pcmpeqd xmm2, xmm2 LONG $0xdbef0f66 // pxor xmm3, xmm3 LONG $0x01c0f641 // test r8b, 1 JNE LBB5_11 JMP LBB5_12 DATA LCDATA4<>+0x000(SB)/8, $0x8000000000000000 DATA LCDATA4<>+0x008(SB)/8, $0x8000000000000000 DATA LCDATA4<>+0x010(SB)/8, $0x7fffffffffffffff DATA LCDATA4<>+0x018(SB)/8, $0x7fffffffffffffff GLOBL LCDATA4<>(SB), 8, $32 TEXT ·_int64_max_min_sse4(SB), $0-32 MOVQ values+0(FP), DI MOVQ length+8(FP), SI MOVQ minout+16(FP), DX MOVQ maxout+24(FP), CX LEAQ LCDATA4<>(SB), BP QUAD $0xffffffffffffb849; WORD $0x7fff // mov r8, 9223372036854775807 WORD $0xf685 // test esi, esi JLE LBB6_1 WORD $0x8941; BYTE $0xf1 // mov r9d, esi WORD $0xfe83; BYTE $0x03 // cmp esi, 3 JA LBB6_6 LONG $0x01708d49 // lea rsi, [r8 + 1] WORD $0x3145; BYTE $0xdb // xor r11d, r11d JMP LBB6_4 LBB6_1: LONG $0x01708d49 // lea rsi, [r8 + 1] JMP LBB6_13 LBB6_6: WORD $0x8945; BYTE $0xcb // mov r11d, r9d LONG $0xfce38341 // and r11d, -4 LONG $0xfc438d49 // lea rax, [r11 - 4] WORD $0x8949; BYTE $0xc0 // mov r8, rax LONG $0x02e8c149 // shr r8, 2 LONG $0x01c08349 // add r8, 1 WORD $0x8548; BYTE $0xc0 // test rax, rax JE LBB6_7 WORD $0x894d; BYTE $0xc2 // mov r10, r8 LONG $0xfee28349 // and r10, -2 WORD $0xf749; BYTE $0xda // neg r10 LONG $0x6f0f4466; WORD $0x004d // movdqa xmm9, oword 0[rbp] /* [rip + .LCPI6_0] */ LONG $0x6f0f4466; WORD $0x1045 // movdqa xmm8, oword 16[rbp] /* [rip + .LCPI6_1] */ WORD $0xc031 // xor eax, eax LONG $0x6f0f4166; BYTE $0xd0 // movdqa xmm2, xmm8 LONG $0x6f0f4166; BYTE $0xf1 // movdqa xmm6, xmm9 LBB6_9: LONG $0x3c6f0ff3; BYTE $0xc7 // movdqu xmm7, oword [rdi + 8*rax] LONG $0xc76f0f66 // movdqa xmm0, xmm7 LONG $0x380f4166; WORD $0xc037 // pcmpgtq xmm0, xmm8 LONG $0xe76f0f66 // movdqa xmm4, xmm7 LONG $0x380f4166; WORD $0xe015 // blendvpd xmm4, xmm8, xmm0 LONG $0x4c6f0ff3; WORD $0x10c7 // movdqu xmm1, oword [rdi + 8*rax + 16] LONG $0xc16f0f66 // movdqa xmm0, xmm1 LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2 LONG $0xe96f0f66 // movdqa xmm5, xmm1 LONG $0x15380f66; BYTE $0xea // blendvpd xmm5, xmm2, xmm0 LONG $0x6f0f4166; BYTE $0xc1 // movdqa xmm0, xmm9 LONG $0x37380f66; BYTE $0xc7 // pcmpgtq xmm0, xmm7 LONG $0x380f4166; WORD $0xf915 // blendvpd xmm7, xmm9, xmm0 LONG $0xc66f0f66 // movdqa xmm0, xmm6 LONG $0x37380f66; BYTE $0xc1 // pcmpgtq xmm0, xmm1 LONG $0x15380f66; BYTE $0xce // blendvpd xmm1, xmm6, xmm0 LONG $0x5c6f0ff3; WORD $0x20c7 // movdqu xmm3, oword [rdi + 8*rax + 32] LONG $0xc36f0f66 // movdqa xmm0, xmm3 LONG $0x37380f66; BYTE $0xc4 // pcmpgtq xmm0, xmm4 LONG $0x6f0f4466; BYTE $0xc3 // movdqa xmm8, xmm3 LONG $0x380f4466; WORD $0xc415 // blendvpd xmm8, xmm4, xmm0 LONG $0x646f0ff3; WORD $0x30c7 // movdqu xmm4, oword [rdi + 8*rax + 48] LONG $0xc46f0f66 // movdqa xmm0, xmm4 LONG $0x37380f66; BYTE $0xc5 // pcmpgtq xmm0, xmm5 LONG $0xd46f0f66 // movdqa xmm2, xmm4 LONG $0x15380f66; BYTE $0xd5 // blendvpd xmm2, xmm5, xmm0 LONG $0xc7280f66 // movapd xmm0, xmm7 LONG $0x37380f66; BYTE $0xc3 // pcmpgtq xmm0, xmm3 LONG $0x15380f66; BYTE $0xdf // blendvpd xmm3, xmm7, xmm0 LONG $0xc1280f66 // movapd xmm0, xmm1 LONG $0x37380f66; BYTE $0xc4 // pcmpgtq xmm0, xmm4 LONG $0x15380f66; BYTE $0xe1 // blendvpd xmm4, xmm1, xmm0 LONG $0x08c08348 // add rax, 8 LONG $0x280f4466; BYTE $0xcb // movapd xmm9, xmm3 LONG $0xf4280f66 // movapd xmm6, xmm4 LONG $0x02c28349 // add r10, 2 JNE LBB6_9 LONG $0x01c0f641 // test r8b, 1 JE LBB6_12 LBB6_11: LONG $0x4c6f0ff3; WORD $0x10c7 // movdqu xmm1, oword [rdi + 8*rax + 16] LONG $0xc4280f66 // movapd xmm0, xmm4 LONG $0x37380f66; BYTE $0xc1 // pcmpgtq xmm0, xmm1 LONG $0xe96f0f66 // movdqa xmm5, xmm1 LONG $0x15380f66; BYTE $0xec // blendvpd xmm5, xmm4, xmm0 LONG $0x246f0ff3; BYTE $0xc7 // movdqu xmm4, oword [rdi + 8*rax] LONG $0xc3280f66 // movapd xmm0, xmm3 LONG $0x37380f66; BYTE $0xc4 // pcmpgtq xmm0, xmm4 LONG $0xf46f0f66 // movdqa xmm6, xmm4 LONG $0x15380f66; BYTE $0xf3 // blendvpd xmm6, xmm3, xmm0 LONG $0xc16f0f66 // movdqa xmm0, xmm1 LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2 LONG $0x15380f66; BYTE $0xca // blendvpd xmm1, xmm2, xmm0 LONG $0xc46f0f66 // movdqa xmm0, xmm4 LONG $0x380f4166; WORD $0xc037 // pcmpgtq xmm0, xmm8 LONG $0x380f4166; WORD $0xe015 // blendvpd xmm4, xmm8, xmm0 LONG $0x280f4466; BYTE $0xc4 // movapd xmm8, xmm4 LONG $0xd1280f66 // movapd xmm2, xmm1 LONG $0xde280f66 // movapd xmm3, xmm6 LONG $0xe5280f66 // movapd xmm4, xmm5 LBB6_12: LONG $0xc3280f66 // movapd xmm0, xmm3 LONG $0x37380f66; BYTE $0xc4 // pcmpgtq xmm0, xmm4 LONG $0x15380f66; BYTE $0xe3 // blendvpd xmm4, xmm3, xmm0 LONG $0xcc700f66; BYTE $0x4e // pshufd xmm1, xmm4, 78 LONG $0xc46f0f66 // movdqa xmm0, xmm4 LONG $0x37380f66; BYTE $0xc1 // pcmpgtq xmm0, xmm1 LONG $0x15380f66; BYTE $0xcc // blendvpd xmm1, xmm4, xmm0 LONG $0x7e0f4866; BYTE $0xce // movq rsi, xmm1 LONG $0xc26f0f66 // movdqa xmm0, xmm2 LONG $0x380f4166; WORD $0xc037 // pcmpgtq xmm0, xmm8 LONG $0x380f4166; WORD $0xd015 // blendvpd xmm2, xmm8, xmm0 LONG $0xca700f66; BYTE $0x4e // pshufd xmm1, xmm2, 78 LONG $0xc16f0f66 // movdqa xmm0, xmm1 LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2 LONG $0x15380f66; BYTE $0xca // blendvpd xmm1, xmm2, xmm0 LONG $0x7e0f4966; BYTE $0xc8 // movq r8, xmm1 WORD $0x394d; BYTE $0xcb // cmp r11, r9 JE LBB6_13 LBB6_4: WORD $0x8948; BYTE $0xf0 // mov rax, rsi LBB6_5: LONG $0xdf348b4a // mov rsi, qword [rdi + 8*r11] WORD $0x3949; BYTE $0xf0 // cmp r8, rsi LONG $0xc64f0f4c // cmovg r8, rsi WORD $0x3948; BYTE $0xf0 // cmp rax, rsi LONG $0xf04d0f48 // cmovge rsi, rax LONG $0x01c38349 // add r11, 1 WORD $0x8948; BYTE $0xf0 // mov rax, rsi WORD $0x394d; BYTE $0xd9 // cmp r9, r11 JNE LBB6_5 LBB6_13: WORD $0x8948; BYTE $0x31 // mov qword [rcx], rsi WORD $0x894c; BYTE $0x02 // mov qword [rdx], r8 RET LBB6_7: LONG $0x5d280f66; BYTE $0x00 // movapd xmm3, oword 0[rbp] /* [rip + .LCPI6_0] */ LONG $0x6f0f4466; WORD $0x1045 // movdqa xmm8, oword 16[rbp] /* [rip + .LCPI6_1] */ WORD $0xc031 // xor eax, eax LONG $0x6f0f4166; BYTE $0xd0 // movdqa xmm2, xmm8 LONG $0xe3280f66 // movapd xmm4, xmm3 LONG $0x01c0f641 // test r8b, 1 JNE LBB6_11 JMP LBB6_12 DATA LCDATA5<>+0x000(SB)/8, $0x8000000000000000 DATA LCDATA5<>+0x008(SB)/8, $0x8000000000000000 GLOBL LCDATA5<>(SB), 8, $16 TEXT ·_uint64_max_min_sse4(SB), $0-32 MOVQ values+0(FP), DI MOVQ length+8(FP), SI MOVQ minout+16(FP), DX MOVQ maxout+24(FP), CX LEAQ LCDATA5<>(SB), BP WORD $0xf685 // test esi, esi JLE LBB7_1 WORD $0x8941; BYTE $0xf1 // mov r9d, esi WORD $0xfe83; BYTE $0x03 // cmp esi, 3 JA LBB7_6 LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1 WORD $0x3145; BYTE $0xdb // xor r11d, r11d WORD $0xc031 // xor eax, eax JMP LBB7_4 LBB7_1: LONG $0xffc0c749; WORD $0xffff; BYTE $0xff // mov r8, -1 WORD $0xc031 // xor eax, eax JMP LBB7_13 LBB7_6: WORD $0x8945; BYTE $0xcb // mov r11d, r9d LONG $0xfce38341 // and r11d, -4 LONG $0xfc438d49 // lea rax, [r11 - 4] WORD $0x8949; BYTE $0xc0 // mov r8, rax LONG $0x02e8c149 // shr r8, 2 LONG $0x01c08349 // add r8, 1 WORD $0x8548; BYTE $0xc0 // test rax, rax JE LBB7_7 WORD $0x894d; BYTE $0xc2 // mov r10, r8 LONG $0xfee28349 // and r10, -2 WORD $0xf749; BYTE $0xda // neg r10 LONG $0xef0f4566; BYTE $0xc9 // pxor xmm9, xmm9 LONG $0x760f4566; BYTE $0xd2 // pcmpeqd xmm10, xmm10 WORD $0xc031 // xor eax, eax LONG $0x6f0f4466; WORD $0x0045 // movdqa xmm8, oword 0[rbp] /* [rip + .LCPI7_0] */ LONG $0x760f4566; BYTE $0xdb // pcmpeqd xmm11, xmm11 LONG $0xef0f4566; BYTE $0xe4 // pxor xmm12, xmm12 LBB7_9: LONG $0x6f0f4166; BYTE $0xd2 // movdqa xmm2, xmm10 LONG $0xef0f4166; BYTE $0xd0 // pxor xmm2, xmm8 LONG $0x246f0ff3; BYTE $0xc7 // movdqu xmm4, oword [rdi + 8*rax] LONG $0x6c6f0ff3; WORD $0x10c7 // movdqu xmm5, oword [rdi + 8*rax + 16] LONG $0x6f0f44f3; WORD $0xc76c; BYTE $0x20 // movdqu xmm13, oword [rdi + 8*rax + 32] LONG $0xc46f0f66 // movdqa xmm0, xmm4 LONG $0xef0f4166; BYTE $0xc0 // pxor xmm0, xmm8 LONG $0x6f0f4166; BYTE $0xc9 // movdqa xmm1, xmm9 LONG $0xef0f4166; BYTE $0xc8 // pxor xmm1, xmm8 LONG $0x37380f66; BYTE $0xc8 // pcmpgtq xmm1, xmm0 LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2 LONG $0xdc6f0f66 // movdqa xmm3, xmm4 LONG $0x380f4166; WORD $0xda15 // blendvpd xmm3, xmm10, xmm0 LONG $0x746f0ff3; WORD $0x30c7 // movdqu xmm6, oword [rdi + 8*rax + 48] LONG $0x6f0f4166; BYTE $0xfb // movdqa xmm7, xmm11 LONG $0xef0f4166; BYTE $0xf8 // pxor xmm7, xmm8 LONG $0xc56f0f66 // movdqa xmm0, xmm5 LONG $0xef0f4166; BYTE $0xc0 // pxor xmm0, xmm8 LONG $0x6f0f4166; BYTE $0xd4 // movdqa xmm2, xmm12 LONG $0xef0f4166; BYTE $0xd0 // pxor xmm2, xmm8 LONG $0x37380f66; BYTE $0xd0 // pcmpgtq xmm2, xmm0 LONG $0x37380f66; BYTE $0xc7 // pcmpgtq xmm0, xmm7 LONG $0xfd6f0f66 // movdqa xmm7, xmm5 LONG $0x380f4166; WORD $0xfb15 // blendvpd xmm7, xmm11, xmm0 LONG $0xc16f0f66 // movdqa xmm0, xmm1 LONG $0x380f4166; WORD $0xe115 // blendvpd xmm4, xmm9, xmm0 LONG $0xc26f0f66 // movdqa xmm0, xmm2 LONG $0x380f4166; WORD $0xec15 // blendvpd xmm5, xmm12, xmm0 LONG $0xd3280f66 // movapd xmm2, xmm3 LONG $0x570f4166; BYTE $0xd0 // xorpd xmm2, xmm8 LONG $0x6f0f4166; BYTE $0xc5 // movdqa xmm0, xmm13 LONG $0xef0f4166; BYTE $0xc0 // pxor xmm0, xmm8 LONG $0xcc280f66 // movapd xmm1, xmm4 LONG $0x570f4166; BYTE $0xc8 // xorpd xmm1, xmm8 LONG $0x37380f66; BYTE $0xc8 // pcmpgtq xmm1, xmm0 LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2 LONG $0x6f0f4566; BYTE $0xd5 // movdqa xmm10, xmm13 LONG $0x380f4466; WORD $0xd315 // blendvpd xmm10, xmm3, xmm0 LONG $0xdf280f66 // movapd xmm3, xmm7 LONG $0x570f4166; BYTE $0xd8 // xorpd xmm3, xmm8 LONG $0xc66f0f66 // movdqa xmm0, xmm6 LONG $0xef0f4166; BYTE $0xc0 // pxor xmm0, xmm8 LONG $0xd5280f66 // movapd xmm2, xmm5 LONG $0x570f4166; BYTE $0xd0 // xorpd xmm2, xmm8 LONG $0x37380f66; BYTE $0xd0 // pcmpgtq xmm2, xmm0 LONG $0x37380f66; BYTE $0xc3 // pcmpgtq xmm0, xmm3 LONG $0x6f0f4466; BYTE $0xde // movdqa xmm11, xmm6 LONG $0x380f4466; WORD $0xdf15 // blendvpd xmm11, xmm7, xmm0 LONG $0xc16f0f66 // movdqa xmm0, xmm1 LONG $0x380f4466; WORD $0xec15 // blendvpd xmm13, xmm4, xmm0 LONG $0xc26f0f66 // movdqa xmm0, xmm2 LONG $0x15380f66; BYTE $0xf5 // blendvpd xmm6, xmm5, xmm0 LONG $0x08c08348 // add rax, 8 LONG $0x280f4566; BYTE $0xcd // movapd xmm9, xmm13 LONG $0x280f4466; BYTE $0xe6 // movapd xmm12, xmm6 LONG $0x02c28349 // add r10, 2 JNE LBB7_9 LONG $0x01c0f641 // test r8b, 1 JE LBB7_12 LBB7_11: LONG $0x24100f66; BYTE $0xc7 // movupd xmm4, oword [rdi + 8*rax] LONG $0x5c100f66; WORD $0x10c7 // movupd xmm3, oword [rdi + 8*rax + 16] LONG $0x6d280f66; BYTE $0x00 // movapd xmm5, oword 0[rbp] /* [rip + .LCPI7_0] */ LONG $0xc6280f66 // movapd xmm0, xmm6 LONG $0xc5570f66 // xorpd xmm0, xmm5 LONG $0xcb280f66 // movapd xmm1, xmm3 LONG $0xcd570f66 // xorpd xmm1, xmm5 LONG $0x37380f66; BYTE $0xc1 // pcmpgtq xmm0, xmm1 LONG $0xfb280f66 // movapd xmm7, xmm3 LONG $0x15380f66; BYTE $0xfe // blendvpd xmm7, xmm6, xmm0 LONG $0x280f4166; BYTE $0xc5 // movapd xmm0, xmm13 LONG $0xc5570f66 // xorpd xmm0, xmm5 LONG $0xd4280f66 // movapd xmm2, xmm4 LONG $0xd5570f66 // xorpd xmm2, xmm5 LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2 LONG $0xf4280f66 // movapd xmm6, xmm4 LONG $0x380f4166; WORD $0xf515 // blendvpd xmm6, xmm13, xmm0 LONG $0x280f4166; BYTE $0xc3 // movapd xmm0, xmm11 LONG $0xc5570f66 // xorpd xmm0, xmm5 LONG $0x37380f66; BYTE $0xc8 // pcmpgtq xmm1, xmm0 LONG $0xc16f0f66 // movdqa xmm0, xmm1 LONG $0x380f4166; WORD $0xdb15 // blendvpd xmm3, xmm11, xmm0 LONG $0x570f4166; BYTE $0xea // xorpd xmm5, xmm10 LONG $0x37380f66; BYTE $0xd5 // pcmpgtq xmm2, xmm5 LONG $0xc26f0f66 // movdqa xmm0, xmm2 LONG $0x380f4166; WORD $0xe215 // blendvpd xmm4, xmm10, xmm0 LONG $0x280f4466; BYTE $0xd4 // movapd xmm10, xmm4 LONG $0x280f4466; BYTE $0xdb // movapd xmm11, xmm3 LONG $0x280f4466; BYTE $0xee // movapd xmm13, xmm6 LONG $0xf7280f66 // movapd xmm6, xmm7 LBB7_12: LONG $0x4d280f66; BYTE $0x00 // movapd xmm1, oword 0[rbp] /* [rip + .LCPI7_0] */ LONG $0xd6280f66 // movapd xmm2, xmm6 LONG $0xd1570f66 // xorpd xmm2, xmm1 LONG $0x280f4166; BYTE $0xc5 // movapd xmm0, xmm13 LONG $0xc1570f66 // xorpd xmm0, xmm1 LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2 LONG $0x380f4166; WORD $0xf515 // blendvpd xmm6, xmm13, xmm0 LONG $0xd6700f66; BYTE $0x4e // pshufd xmm2, xmm6, 78 LONG $0xc6280f66 // movapd xmm0, xmm6 LONG $0xc1570f66 // xorpd xmm0, xmm1 LONG $0xda6f0f66 // movdqa xmm3, xmm2 LONG $0xd9ef0f66 // pxor xmm3, xmm1 LONG $0x37380f66; BYTE $0xc3 // pcmpgtq xmm0, xmm3 LONG $0x15380f66; BYTE $0xd6 // blendvpd xmm2, xmm6, xmm0 LONG $0x7e0f4866; BYTE $0xd0 // movq rax, xmm2 LONG $0x6f0f4166; BYTE $0xd2 // movdqa xmm2, xmm10 LONG $0xd1ef0f66 // pxor xmm2, xmm1 LONG $0x6f0f4166; BYTE $0xc3 // movdqa xmm0, xmm11 LONG $0xc1ef0f66 // pxor xmm0, xmm1 LONG $0x37380f66; BYTE $0xc2 // pcmpgtq xmm0, xmm2 LONG $0x380f4566; WORD $0xda15 // blendvpd xmm11, xmm10, xmm0 LONG $0x700f4166; WORD $0x4ed3 // pshufd xmm2, xmm11, 78 LONG $0x6f0f4166; BYTE $0xc3 // movdqa xmm0, xmm11 LONG $0xc1ef0f66 // pxor xmm0, xmm1 LONG $0xcaef0f66 // pxor xmm1, xmm2 LONG $0x37380f66; BYTE $0xc8 // pcmpgtq xmm1, xmm0 LONG $0xc16f0f66 // movdqa xmm0, xmm1 LONG $0x380f4166; WORD $0xd315 // blendvpd xmm2, xmm11, xmm0 LONG $0x7e0f4966; BYTE $0xd0 // movq r8, xmm2 WORD $0x394d; BYTE $0xcb // cmp r11, r9 JE LBB7_13 LBB7_4: WORD $0x8948; BYTE $0xc6 // mov rsi, rax LBB7_5: LONG $0xdf048b4a // mov rax, qword [rdi + 8*r11] WORD $0x3949; BYTE $0xc0 // cmp r8, rax LONG $0xc0430f4c // cmovae r8, rax WORD $0x3948; BYTE $0xc6 // cmp rsi, rax LONG $0xc6470f48 // cmova rax, rsi LONG $0x01c38349 // add r11, 1 WORD $0x8948; BYTE $0xc6 // mov rsi, rax WORD $0x394d; BYTE $0xd9 // cmp r9, r11 JNE LBB7_5 LBB7_13: WORD $0x8948; BYTE $0x01 // mov qword [rcx], rax WORD $0x894c; BYTE $0x02 // mov qword [rdx], r8 RET LBB7_7: LONG $0x570f4566; BYTE $0xed // xorpd xmm13, xmm13 LONG $0x760f4566; BYTE $0xd2 // pcmpeqd xmm10, xmm10 WORD $0xc031 // xor eax, eax LONG $0x760f4566; BYTE $0xdb // pcmpeqd xmm11, xmm11 LONG $0xf6570f66 // xorpd xmm6, xmm6 LONG $0x01c0f641 // test r8b, 1 JNE LBB7_11 JMP LBB7_12