arrow/compute/internal/kernels/constant_factor_sse4_amd64.s (507 lines of code) (raw):

//go:build go1.18 && !noasm && !appengine // AUTO-GENERATED BY C2GOASM -- DO NOT EDIT TEXT ·_multiply_constant_int32_int32_sse4(SB), $0-32 MOVQ src+0(FP), DI MOVQ dest+8(FP), SI MOVQ len+16(FP), DX MOVQ factor+24(FP), CX WORD $0xd285 // test edx, edx JLE LBB0_16 WORD $0x8941; BYTE $0xd1 // mov r9d, edx WORD $0xfa83; BYTE $0x07 // cmp edx, 7 JBE LBB0_2 LONG $0x8f048d4a // lea rax, [rdi + 4*r9] WORD $0x3948; BYTE $0xf0 // cmp rax, rsi JBE LBB0_9 LONG $0x8e048d4a // lea rax, [rsi + 4*r9] WORD $0x3948; BYTE $0xf8 // cmp rax, rdi JBE LBB0_9 LBB0_2: WORD $0x3145; BYTE $0xdb // xor r11d, r11d LBB0_3: WORD $0x894d; BYTE $0xd8 // mov r8, r11 WORD $0xf749; BYTE $0xd0 // not r8 WORD $0x014d; BYTE $0xc8 // add r8, r9 WORD $0x894c; BYTE $0xc8 // mov rax, r9 LONG $0x03e08348 // and rax, 3 JE LBB0_5 LBB0_4: LONG $0x9f148b42 // mov edx, dword [rdi + 4*r11] WORD $0xaf0f; BYTE $0xd1 // imul edx, ecx LONG $0x9e148942 // mov dword [rsi + 4*r11], edx LONG $0x01c38349 // add r11, 1 LONG $0xffc08348 // add rax, -1 JNE LBB0_4 LBB0_5: LONG $0x03f88349 // cmp r8, 3 JB LBB0_16 LBB0_6: LONG $0x9f048b42 // mov eax, dword [rdi + 4*r11] WORD $0xaf0f; BYTE $0xc1 // imul eax, ecx LONG $0x9e048942 // mov dword [rsi + 4*r11], eax LONG $0x9f448b42; BYTE $0x04 // mov eax, dword [rdi + 4*r11 + 4] WORD $0xaf0f; BYTE $0xc1 // imul eax, ecx LONG $0x9e448942; BYTE $0x04 // mov dword [rsi + 4*r11 + 4], eax LONG $0x9f448b42; BYTE $0x08 // mov eax, dword [rdi + 4*r11 + 8] WORD $0xaf0f; BYTE $0xc1 // imul eax, ecx LONG $0x9e448942; BYTE $0x08 // mov dword [rsi + 4*r11 + 8], eax LONG $0x9f448b42; BYTE $0x0c // mov eax, dword [rdi + 4*r11 + 12] WORD $0xaf0f; BYTE $0xc1 // imul eax, ecx LONG $0x9e448942; BYTE $0x0c // mov dword [rsi + 4*r11 + 12], eax LONG $0x04c38349 // add r11, 4 WORD $0x394d; BYTE $0xd9 // cmp r9, r11 JNE LBB0_6 JMP LBB0_16 LBB0_9: WORD $0x8945; BYTE $0xcb // mov r11d, r9d LONG $0xf8e38341 // and r11d, -8 LONG $0xc16e0f66 // movd xmm0, ecx LONG $0xc0700f66; BYTE $0x00 // pshufd xmm0, xmm0, 0 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 LBB0_10 WORD $0x894d; BYTE $0xc2 // mov r10, r8 LONG $0xfee28349 // and r10, -2 WORD $0xf749; BYTE $0xda // neg r10 WORD $0xc031 // xor eax, eax LBB0_12: LONG $0x0c6f0ff3; BYTE $0x87 // movdqu xmm1, oword [rdi + 4*rax] LONG $0x546f0ff3; WORD $0x1087 // movdqu xmm2, oword [rdi + 4*rax + 16] LONG $0x40380f66; BYTE $0xc8 // pmulld xmm1, xmm0 LONG $0x40380f66; BYTE $0xd0 // pmulld xmm2, xmm0 LONG $0x0c7f0ff3; BYTE $0x86 // movdqu oword [rsi + 4*rax], xmm1 LONG $0x547f0ff3; WORD $0x1086 // movdqu oword [rsi + 4*rax + 16], xmm2 LONG $0x4c6f0ff3; WORD $0x2087 // movdqu xmm1, oword [rdi + 4*rax + 32] LONG $0x546f0ff3; WORD $0x3087 // movdqu xmm2, oword [rdi + 4*rax + 48] LONG $0x40380f66; BYTE $0xc8 // pmulld xmm1, xmm0 LONG $0x40380f66; BYTE $0xd0 // pmulld xmm2, xmm0 LONG $0x4c7f0ff3; WORD $0x2086 // movdqu oword [rsi + 4*rax + 32], xmm1 LONG $0x547f0ff3; WORD $0x3086 // movdqu oword [rsi + 4*rax + 48], xmm2 LONG $0x10c08348 // add rax, 16 LONG $0x02c28349 // add r10, 2 JNE LBB0_12 LONG $0x01c0f641 // test r8b, 1 JE LBB0_15 LBB0_14: LONG $0x0c6f0ff3; BYTE $0x87 // movdqu xmm1, oword [rdi + 4*rax] LONG $0x546f0ff3; WORD $0x1087 // movdqu xmm2, oword [rdi + 4*rax + 16] LONG $0x40380f66; BYTE $0xc8 // pmulld xmm1, xmm0 LONG $0x40380f66; BYTE $0xd0 // pmulld xmm2, xmm0 LONG $0x0c7f0ff3; BYTE $0x86 // movdqu oword [rsi + 4*rax], xmm1 LONG $0x547f0ff3; WORD $0x1086 // movdqu oword [rsi + 4*rax + 16], xmm2 LBB0_15: WORD $0x394d; BYTE $0xcb // cmp r11, r9 JNE LBB0_3 LBB0_16: RET LBB0_10: WORD $0xc031 // xor eax, eax LONG $0x01c0f641 // test r8b, 1 JNE LBB0_14 JMP LBB0_15 TEXT ·_divide_constant_int32_int32_sse4(SB), $0-32 MOVQ src+0(FP), DI MOVQ dest+8(FP), SI MOVQ len+16(FP), DX MOVQ factor+24(FP), CX WORD $0xd285 // test edx, edx JLE LBB1_8 WORD $0x8941; BYTE $0xd1 // mov r9d, edx WORD $0xfa83; BYTE $0x01 // cmp edx, 1 JNE LBB1_9 WORD $0x3145; BYTE $0xc0 // xor r8d, r8d LBB1_3: LONG $0x01c1f641 // test r9b, 1 JE LBB1_8 LONG $0x8704634a // movsxd rax, dword [rdi + 4*r8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JE LBB1_5 WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx JMP LBB1_7 LBB1_9: WORD $0x8945; BYTE $0xca // mov r10d, r9d LONG $0xfee28341 // and r10d, -2 WORD $0x3145; BYTE $0xc0 // xor r8d, r8d JMP LBB1_10 LBB1_15: WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx LBB1_16: LONG $0x86448942; BYTE $0x04 // mov dword [rsi + 4*r8 + 4], eax LONG $0x02c08349 // add r8, 2 WORD $0x394d; BYTE $0xc2 // cmp r10, r8 JE LBB1_3 LBB1_10: LONG $0x8704634a // movsxd rax, dword [rdi + 4*r8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JE LBB1_11 WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx JMP LBB1_13 LBB1_11: WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx LBB1_13: LONG $0x86048942 // mov dword [rsi + 4*r8], eax LONG $0x8744634a; BYTE $0x04 // movsxd rax, dword [rdi + 4*r8 + 4] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JNE LBB1_15 WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx JMP LBB1_16 LBB1_5: WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx LBB1_7: LONG $0x86048942 // mov dword [rsi + 4*r8], eax LBB1_8: RET TEXT ·_multiply_constant_int32_int64_sse4(SB), $0-32 MOVQ src+0(FP), DI MOVQ dest+8(FP), SI MOVQ len+16(FP), DX MOVQ factor+24(FP), CX WORD $0xd285 // test edx, edx JLE LBB2_6 WORD $0x8941; BYTE $0xd1 // mov r9d, edx LONG $0xff418d49 // lea rax, [r9 - 1] WORD $0x8945; BYTE $0xc8 // mov r8d, r9d LONG $0x03e08341 // and r8d, 3 LONG $0x03f88348 // cmp rax, 3 JAE LBB2_7 WORD $0xc031 // xor eax, eax JMP LBB2_3 LBB2_7: LONG $0xfce18341 // and r9d, -4 WORD $0xc031 // xor eax, eax LBB2_8: LONG $0x87146348 // movsxd rdx, dword [rdi + 4*rax] LONG $0xd1af0f48 // imul rdx, rcx LONG $0xc6148948 // mov qword [rsi + 8*rax], rdx LONG $0x87546348; BYTE $0x04 // movsxd rdx, dword [rdi + 4*rax + 4] LONG $0xd1af0f48 // imul rdx, rcx LONG $0xc6548948; BYTE $0x08 // mov qword [rsi + 8*rax + 8], rdx LONG $0x87546348; BYTE $0x08 // movsxd rdx, dword [rdi + 4*rax + 8] LONG $0xd1af0f48 // imul rdx, rcx LONG $0xc6548948; BYTE $0x10 // mov qword [rsi + 8*rax + 16], rdx LONG $0x87546348; BYTE $0x0c // movsxd rdx, dword [rdi + 4*rax + 12] LONG $0xd1af0f48 // imul rdx, rcx LONG $0xc6548948; BYTE $0x18 // mov qword [rsi + 8*rax + 24], rdx LONG $0x04c08348 // add rax, 4 WORD $0x3949; BYTE $0xc1 // cmp r9, rax JNE LBB2_8 LBB2_3: WORD $0x854d; BYTE $0xc0 // test r8, r8 JE LBB2_6 LONG $0xc6148d48 // lea rdx, [rsi + 8*rax] LONG $0x87048d48 // lea rax, [rdi + 4*rax] WORD $0xf631 // xor esi, esi LBB2_5: LONG $0xb03c6348 // movsxd rdi, dword [rax + 4*rsi] LONG $0xf9af0f48 // imul rdi, rcx LONG $0xf23c8948 // mov qword [rdx + 8*rsi], rdi LONG $0x01c68348 // add rsi, 1 WORD $0x3949; BYTE $0xf0 // cmp r8, rsi JNE LBB2_5 LBB2_6: RET TEXT ·_divide_constant_int32_int64_sse4(SB), $0-32 MOVQ src+0(FP), DI MOVQ dest+8(FP), SI MOVQ len+16(FP), DX MOVQ factor+24(FP), CX WORD $0xd285 // test edx, edx JLE LBB3_8 WORD $0x8941; BYTE $0xd1 // mov r9d, edx WORD $0xfa83; BYTE $0x01 // cmp edx, 1 JNE LBB3_9 WORD $0x3145; BYTE $0xc0 // xor r8d, r8d LBB3_3: LONG $0x01c1f641 // test r9b, 1 JE LBB3_8 LONG $0x8704634a // movsxd rax, dword [rdi + 4*r8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JE LBB3_5 WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx JMP LBB3_7 LBB3_9: WORD $0x8945; BYTE $0xca // mov r10d, r9d LONG $0xfee28341 // and r10d, -2 WORD $0x3145; BYTE $0xc0 // xor r8d, r8d JMP LBB3_10 LBB3_15: WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx LBB3_16: LONG $0xc644894a; BYTE $0x08 // mov qword [rsi + 8*r8 + 8], rax LONG $0x02c08349 // add r8, 2 WORD $0x394d; BYTE $0xc2 // cmp r10, r8 JE LBB3_3 LBB3_10: LONG $0x8704634a // movsxd rax, dword [rdi + 4*r8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JE LBB3_11 WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx JMP LBB3_13 LBB3_11: WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx LBB3_13: LONG $0xc604894a // mov qword [rsi + 8*r8], rax LONG $0x8744634a; BYTE $0x04 // movsxd rax, dword [rdi + 4*r8 + 4] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JNE LBB3_15 WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx JMP LBB3_16 LBB3_5: WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx LBB3_7: LONG $0xc604894a // mov qword [rsi + 8*r8], rax LBB3_8: RET TEXT ·_multiply_constant_int64_int32_sse4(SB), $0-32 MOVQ src+0(FP), DI MOVQ dest+8(FP), SI MOVQ len+16(FP), DX MOVQ factor+24(FP), CX WORD $0xd285 // test edx, edx JLE LBB4_6 WORD $0x8941; BYTE $0xd1 // mov r9d, edx LONG $0xff418d49 // lea rax, [r9 - 1] WORD $0x8945; BYTE $0xc8 // mov r8d, r9d LONG $0x03e08341 // and r8d, 3 LONG $0x03f88348 // cmp rax, 3 JAE LBB4_7 WORD $0xc031 // xor eax, eax JMP LBB4_3 LBB4_7: LONG $0xfce18341 // and r9d, -4 WORD $0xc031 // xor eax, eax LBB4_8: WORD $0x148b; BYTE $0xc7 // mov edx, dword [rdi + 8*rax] WORD $0xaf0f; BYTE $0xd1 // imul edx, ecx WORD $0x1489; BYTE $0x86 // mov dword [rsi + 4*rax], edx LONG $0x08c7548b // mov edx, dword [rdi + 8*rax + 8] WORD $0xaf0f; BYTE $0xd1 // imul edx, ecx LONG $0x04865489 // mov dword [rsi + 4*rax + 4], edx LONG $0x10c7548b // mov edx, dword [rdi + 8*rax + 16] WORD $0xaf0f; BYTE $0xd1 // imul edx, ecx LONG $0x08865489 // mov dword [rsi + 4*rax + 8], edx LONG $0x18c7548b // mov edx, dword [rdi + 8*rax + 24] WORD $0xaf0f; BYTE $0xd1 // imul edx, ecx LONG $0x0c865489 // mov dword [rsi + 4*rax + 12], edx LONG $0x04c08348 // add rax, 4 WORD $0x3949; BYTE $0xc1 // cmp r9, rax JNE LBB4_8 LBB4_3: WORD $0x854d; BYTE $0xc0 // test r8, r8 JE LBB4_6 LONG $0x86148d48 // lea rdx, [rsi + 4*rax] LONG $0xc7048d48 // lea rax, [rdi + 8*rax] WORD $0xf631 // xor esi, esi LBB4_5: WORD $0x3c8b; BYTE $0xf0 // mov edi, dword [rax + 8*rsi] WORD $0xaf0f; BYTE $0xf9 // imul edi, ecx WORD $0x3c89; BYTE $0xb2 // mov dword [rdx + 4*rsi], edi LONG $0x01c68348 // add rsi, 1 WORD $0x3949; BYTE $0xf0 // cmp r8, rsi JNE LBB4_5 LBB4_6: RET TEXT ·_divide_constant_int64_int32_sse4(SB), $0-32 MOVQ src+0(FP), DI MOVQ dest+8(FP), SI MOVQ len+16(FP), DX MOVQ factor+24(FP), CX WORD $0xd285 // test edx, edx JLE LBB5_8 WORD $0x8941; BYTE $0xd1 // mov r9d, edx WORD $0xfa83; BYTE $0x01 // cmp edx, 1 JNE LBB5_9 WORD $0x3145; BYTE $0xc0 // xor r8d, r8d LBB5_3: LONG $0x01c1f641 // test r9b, 1 JE LBB5_8 LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JE LBB5_5 WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx JMP LBB5_7 LBB5_9: WORD $0x8945; BYTE $0xca // mov r10d, r9d LONG $0xfee28341 // and r10d, -2 WORD $0x3145; BYTE $0xc0 // xor r8d, r8d JMP LBB5_10 LBB5_15: WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx LBB5_16: LONG $0x86448942; BYTE $0x04 // mov dword [rsi + 4*r8 + 4], eax LONG $0x02c08349 // add r8, 2 WORD $0x394d; BYTE $0xc2 // cmp r10, r8 JE LBB5_3 LBB5_10: LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JE LBB5_11 WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx JMP LBB5_13 LBB5_11: WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx LBB5_13: LONG $0x86048942 // mov dword [rsi + 4*r8], eax LONG $0xc7448b4a; BYTE $0x08 // mov rax, qword [rdi + 8*r8 + 8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JNE LBB5_15 WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx JMP LBB5_16 LBB5_5: WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx LBB5_7: LONG $0x86048942 // mov dword [rsi + 4*r8], eax LBB5_8: RET TEXT ·_multiply_constant_int64_int64_sse4(SB), $0-32 MOVQ src+0(FP), DI MOVQ dest+8(FP), SI MOVQ len+16(FP), DX MOVQ factor+24(FP), CX WORD $0xd285 // test edx, edx JLE LBB6_6 WORD $0x8941; BYTE $0xd1 // mov r9d, edx LONG $0xff418d49 // lea rax, [r9 - 1] WORD $0x8945; BYTE $0xc8 // mov r8d, r9d LONG $0x03e08341 // and r8d, 3 LONG $0x03f88348 // cmp rax, 3 JAE LBB6_7 WORD $0xc031 // xor eax, eax JMP LBB6_3 LBB6_7: LONG $0xfce18341 // and r9d, -4 WORD $0xc031 // xor eax, eax LBB6_8: LONG $0xc7148b48 // mov rdx, qword [rdi + 8*rax] LONG $0xd1af0f48 // imul rdx, rcx LONG $0xc6148948 // mov qword [rsi + 8*rax], rdx LONG $0xc7548b48; BYTE $0x08 // mov rdx, qword [rdi + 8*rax + 8] LONG $0xd1af0f48 // imul rdx, rcx LONG $0xc6548948; BYTE $0x08 // mov qword [rsi + 8*rax + 8], rdx LONG $0xc7548b48; BYTE $0x10 // mov rdx, qword [rdi + 8*rax + 16] LONG $0xd1af0f48 // imul rdx, rcx LONG $0xc6548948; BYTE $0x10 // mov qword [rsi + 8*rax + 16], rdx LONG $0xc7548b48; BYTE $0x18 // mov rdx, qword [rdi + 8*rax + 24] LONG $0xd1af0f48 // imul rdx, rcx LONG $0xc6548948; BYTE $0x18 // mov qword [rsi + 8*rax + 24], rdx LONG $0x04c08348 // add rax, 4 WORD $0x3949; BYTE $0xc1 // cmp r9, rax JNE LBB6_8 LBB6_3: WORD $0x854d; BYTE $0xc0 // test r8, r8 JE LBB6_6 LONG $0xc6148d48 // lea rdx, [rsi + 8*rax] LONG $0xc7048d48 // lea rax, [rdi + 8*rax] WORD $0xf631 // xor esi, esi LBB6_5: LONG $0xf03c8b48 // mov rdi, qword [rax + 8*rsi] LONG $0xf9af0f48 // imul rdi, rcx LONG $0xf23c8948 // mov qword [rdx + 8*rsi], rdi LONG $0x01c68348 // add rsi, 1 WORD $0x3949; BYTE $0xf0 // cmp r8, rsi JNE LBB6_5 LBB6_6: RET TEXT ·_divide_constant_int64_int64_sse4(SB), $0-32 MOVQ src+0(FP), DI MOVQ dest+8(FP), SI MOVQ len+16(FP), DX MOVQ factor+24(FP), CX WORD $0xd285 // test edx, edx JLE LBB7_8 WORD $0x8941; BYTE $0xd1 // mov r9d, edx WORD $0xfa83; BYTE $0x01 // cmp edx, 1 JNE LBB7_9 WORD $0x3145; BYTE $0xc0 // xor r8d, r8d LBB7_3: LONG $0x01c1f641 // test r9b, 1 JE LBB7_8 LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JE LBB7_5 WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx JMP LBB7_7 LBB7_9: WORD $0x8945; BYTE $0xca // mov r10d, r9d LONG $0xfee28341 // and r10d, -2 WORD $0x3145; BYTE $0xc0 // xor r8d, r8d JMP LBB7_10 LBB7_15: WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx LBB7_16: LONG $0xc644894a; BYTE $0x08 // mov qword [rsi + 8*r8 + 8], rax LONG $0x02c08349 // add r8, 2 WORD $0x394d; BYTE $0xc2 // cmp r10, r8 JE LBB7_3 LBB7_10: LONG $0xc7048b4a // mov rax, qword [rdi + 8*r8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JE LBB7_11 WORD $0x9948 // cqo WORD $0xf748; BYTE $0xf9 // idiv rcx JMP LBB7_13 LBB7_11: WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx LBB7_13: LONG $0xc604894a // mov qword [rsi + 8*r8], rax LONG $0xc7448b4a; BYTE $0x08 // mov rax, qword [rdi + 8*r8 + 8] WORD $0x8948; BYTE $0xc2 // mov rdx, rax WORD $0x0948; BYTE $0xca // or rdx, rcx LONG $0x20eac148 // shr rdx, 32 JNE LBB7_15 WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx JMP LBB7_16 LBB7_5: WORD $0xd231 // xor edx, edx WORD $0xf1f7 // div ecx LBB7_7: LONG $0xc604894a // mov qword [rsi + 8*r8], rax LBB7_8: RET