フリーみたいですねー(制約などはあんまりなかったと思います)
まぁ、説明を読んでください。全部ではないですが、APIの自動検索
もできますしね。
 しかし、浮動小数点を実数で(つまりopenglなどの関数で、
invoke glcolor3f,0.1f,0.1f,0.1f
というように小数点をそのまま使うとエラーになり、.dataセグメント内でほかの代数で
たとえば
 .data
3dvector real4 <1.0,0.0,0.0,0.1,0.1,0.1,1.0>
などとして<>内は<vectx,vecty,vectz,x,y,z,α,>
など、vectx,y,z=は単位ベクトルの方向、x,y,zはベクトルの原点
などとして、 マクロを使って

coinvoke MACRO pInterface:REQ, Interface:REQ, Function:REQ, args:VARARG
LOCAL istatement, arg
FOR arg, <args> ;; run thru args to see if edx is lurking in there
IFIDNI <&arg>, <edx>
.ERR <edx is not allowed as a coinvoke parameter>
ENDIF
ENDM
IFIDNI <&pInterface>, <edx>
.ERR <edx is not allowed as a coinvoke parameter>
ENDIF
istatement CATSTR <invoke (Interface PTR[edx]).&Interface>,<_>,<&Function, pInterface>
IFNB <args> ;; add the list of parameter arguments if any
istatement CATSTR istatement, <, >, <&args>
ENDIF
mov edx, pInterface
mov edx, [edx]
istatement
ENDM
などとしているみたいですね。