It you trace EXTRACT-FUNCTION-NAME and then evaluate a CASE-USING form with #'STRING= or #'EQL, you will find EXTRACT-FUNCTION-NAME is applied to some gensymed variable, not to the value of PRED. So, those two branches of the CASE form in the macro function's body never apply.
It you trace EXTRACT-FUNCTION-NAME and then evaluate a CASE-USING form with #'STRING= or #'EQL, you will find EXTRACT-FUNCTION-NAME is applied to some gensymed variable, not to the value of PRED. So, those two branches of the CASE form in the macro function's body never apply.