+ /* argument list */
+
+#define __lst_6(x,a1,a2,a3,a4,a5,a6) __lst_5(x,a1,a2,a3,a4,a5),x(6,a6)
+#define __lst_5(x,a1,a2,a3,a4,a5) __lst_4(x,a1,a2,a3,a4),x(5,a5)
+#define __lst_4(x,a1,a2,a3,a4) __lst_3(x,a1,a2,a3),x(4,a4)
+#define __lst_3(x,a1,a2,a3) __lst_2(x,a1,a2),x(3,a3)
+#define __lst_2(x,a1,a2) __lst_1(x,a1),x(2,a2)
+#define __lst_1(x,a1) __lst_0(x,*),x(1,a1)
+#define __lst_0(x,a0)
+
+ /* argument concatenation */
+
+#define __con_6(x,a1,a2,a3,a4,a5,a6) __con_5(x,a1,a2,a3,a4,a5)x(6,a6)
+#define __con_5(x,a1,a2,a3,a4,a5) __con_4(x,a1,a2,a3,a4)x(5,a5)
+#define __con_4(x,a1,a2,a3,a4) __con_3(x,a1,a2,a3)x(4,a4)
+#define __con_3(x,a1,a2,a3) __con_2(x,a1,a2)x(3,a3)
+#define __con_2(x,a1,a2) __con_1(x,a1)x(2,a2)
+#define __con_1(x,a1) __con_0(x,*)x(1,a1)
+#define __con_0(x,a0)
+
+ /* argument selection */
+
+#define __arg_0(...)
+#define __arg_1(a1,...) a1
+#define __arg_2(a1,a2,...) a2
+#define __arg_3(a1,a2,a3,...) a3
+#define __arg_4(a1,a2,a3,a4,...) a4
+#define __arg_5(a1,a2,a3,a4,a5,...) a5
+#define __arg_6(a1,a2,a3,a4,a5,a6,...) a6
+
+ /* list remainder */
+
+#define __rem_0(a1,a2,a3,a4,a5,a6) ,a1,a2,a3,a4,a5,a6
+#define __rem_1(a1,a2,a3,a4,a5,a6) ,a2,a3,a4,a5,a6
+#define __rem_2(a1,a2,a3,a4,a5,a6) ,a3,a4,a5,a6
+#define __rem_3(a1,a2,a3,a4,a5,a6) ,a4,a5,a6
+#define __rem_4(a1,a2,a3,a4,a5,a6) ,a5,a6
+#define __rem_5(a1,a2,a3,a4,a5,a6) ,a6
+#define __rem_6(...)
+
+
+ /* conditional asm */
+
+#define __casm_use(q,r,v) v __casm_use_##q##r(__casm_nl(""))
+
+#define __casm_use_10(v)
+#define __casm_use_11(v) v
+#define __casm_use_12(v)
+#define __casm_use_13(v) v
+
+#define __casm_use_20(v)
+#define __casm_use_21(v)
+#define __casm_use_22(v) v
+#define __casm_use_23(v) v
+
+
+#define __casm_00(v,w,r) __casm_use(1,r,v)
+#define __casm_01(v,w,r) __casm_use(2,r,w)
+#define __casm_02(v,w,r) __casm_use(2,r,w)
+#define __casm_03(v,w,r) __casm_use(2,r,w)
+#define __casm_04(v,w,r) __casm_use(2,r,w)
+#define __casm_05(v,w,r) __casm_use(2,r,w)
+#define __casm_06(v,w,r) __casm_use(2,r,w)
+
+#define __casm_10(v,w,r) __casm_use(1,r,v)
+#define __casm_11(v,w,r) __casm_use(1,r,v)
+#define __casm_12(v,w,r) __casm_use(2,r,w)
+#define __casm_13(v,w,r) __casm_use(2,r,w)
+#define __casm_14(v,w,r) __casm_use(2,r,w)
+#define __casm_15(v,w,r) __casm_use(2,r,w)
+#define __casm_16(v,w,r) __casm_use(2,r,w)
+
+#define __casm_20(v,w,r) __casm_use(1,r,v)
+#define __casm_21(v,w,r) __casm_use(1,r,v)
+#define __casm_22(v,w,r) __casm_use(1,r,v)
+#define __casm_23(v,w,r) __casm_use(2,r,w)
+#define __casm_24(v,w,r) __casm_use(2,r,w)
+#define __casm_25(v,w,r) __casm_use(2,r,w)
+#define __casm_26(v,w,r) __casm_use(2,r,w)
+
+#define __casm_30(v,w,r) __casm_use(1,r,v)
+#define __casm_31(v,w,r) __casm_use(1,r,v)
+#define __casm_32(v,w,r) __casm_use(1,r,v)
+#define __casm_33(v,w,r) __casm_use(1,r,v)
+#define __casm_34(v,w,r) __casm_use(2,r,w)
+#define __casm_35(v,w,r) __casm_use(2,r,w)
+#define __casm_36(v,w,r) __casm_use(2,r,w)
+
+#define __casm_40(v,w,r) __casm_use(1,r,v)
+#define __casm_41(v,w,r) __casm_use(1,r,v)
+#define __casm_42(v,w,r) __casm_use(1,r,v)
+#define __casm_43(v,w,r) __casm_use(1,r,v)
+#define __casm_44(v,w,r) __casm_use(1,r,v)
+#define __casm_45(v,w,r) __casm_use(2,r,w)
+#define __casm_46(v,w,r) __casm_use(2,r,w)
+
+#define __casm_50(v,w,r) __casm_use(1,r,v)
+#define __casm_51(v,w,r) __casm_use(1,r,v)
+#define __casm_52(v,w,r) __casm_use(1,r,v)
+#define __casm_53(v,w,r) __casm_use(1,r,v)
+#define __casm_54(v,w,r) __casm_use(1,r,v)
+#define __casm_55(v,w,r) __casm_use(1,r,v)
+#define __casm_56(v,w,r) __casm_use(2,r,w)
+
+#define __casm_60(v,w,r) __casm_use(1,r,v)
+#define __casm_61(v,w,r) __casm_use(1,r,v)
+#define __casm_62(v,w,r) __casm_use(1,r,v)
+#define __casm_63(v,w,r) __casm_use(1,r,v)
+#define __casm_64(v,w,r) __casm_use(1,r,v)
+#define __casm_65(v,w,r) __casm_use(1,r,v)
+#define __casm_66(v,w,r) __casm_use(1,r,v)
+
+
+ /* special PIC handling */
+
+#ifdef __PIC__
+#define __pic(v) v
+#define __nopic(v)
+#else
+#define __pic(v)
+#define __nopic(v) v
+#endif