}
 ```
 
+**maddx RT, RA, RB, RC** (RS=RT+VL for SVP64, RS=RT+1 for scalar)
+
+    prod[0:127] = (RA) * (RB)
+    sub[0:127] = EXTZ(RC) + prod
+    RT <- sub[64:127]
+    RS <- sub[0:63]
+
+**weirdaddx RT, RA, RB** (RS=RB+VL for SVP64, RS=RB+1 for scalar)
+
+    cat[0:127] = (RS) || (RB)
+    sum[0:127] = cat + EXTZ(RA)
+    rhi[0:63] = sum[0:63]
+    RA = rhi
+    RT = sum[64:127]
+
+These two combine as, simply:
+
+    # assume VL=8, therefore RS starts at r8.v
+    # q       : r16
+    # dividend: r20.v
+    # divisor : r28.v
+    # carry   : r40
+    li r17, 0
+    sv.msubx r0.v, r16, r20.v, r28.v
+    # here, RS=RB+VL, therefore again RS starts at r8.v
+    sv.weirdsubx r0.v, r17, r0.v
+
 # big integer division
 
 links
     RT <- sub[64:127]
     RS <- sub[0:63]
 
-**weirdaddx RT, RA, RB** (RS=RB+VL for SVP64, RS=RB+1 for scalar)
+**weirdsubx RT, RA, RB** (RS=RB+VL for SVP64, RS=RB+1 for scalar)
 
     cat[0:127] = (RS) || (RB)
-    sum[0:127] = cat - EXTZ(RA)
+    sum[0:127] = cat - EXTS(RA)
     rhi[0:63] = sum[0:63]
     RA = ~rhi + 1
     RT = sum[64:127]
     li r17, 0
     sv.msubx r0.v, r16, r20.v, r28.v
     # here, RS=RB+VL, therefore again RS starts at r8.v
-    sv.weirdaddx r0.v, r17, r0.v
+    sv.weirdsubx r0.v, r17, r0.v
 
 As a result, a big-integer subtract and multiply may be carried out
 in only 3 instructions, one of which is setting a scalar integer to