## imul - 2 operand signed multiply

    dest = dest * source

The 2 operand imul instruction has a destination register as its first operand and a register, memory location or an immediate value as the second operand (source). The destination register value is multiplied by the source operand and the product is placed in the destination register. The product may be truncated.

            imul    r10, 13         ; multiply r10 by 13
            imul    r8d, 12         ; multiply r8d by 12
                                    ; top half of r8 will be 0
            imul    rdx, rax        ; multiply rdx by rax
            imul    rdx, [x]        ; multiply rdx by 64 bit variable x
            shl     rax, 4          ; shift right 4 (quick multiply by 16)

### flags: OF CF

OF and CF are set to 0 if the upper half of the product is 0 and 1 otherwise.