Declaración de variables entre el nombre de la función y la primera llave

Estoy leyendo un articulo sobreofuscación de código en C, y uno de los ejemplos declara la función principal como:

int main(c,v) char *v; int c;{...}

Nunca he visto algo como esto,v yc son las variables globales?

El ejemplo completo es este:

#include <stdio.h>

#define THIS printf(
#define IS "%s\n"
#define OBFUSCATION ,v);

int main(c, v) char *v; int c; {
   int a = 0; char f[32];
   switch (c) {
      case 0:
         THIS IS OBFUSCATION
         break;
      case 34123:
         for (a = 0; a < 13; a++) { f[a] = v[a*2+1];};
         main(0,f);
         break;
      default:
         main(34123,"@h3eglhl1o. >w%o#rtlwdl!S\0m");
         break;
      }
}

El artículo:brandonparker.net (Ya no funciona)

Respuestas a la pregunta(2)

Su respuesta a la pregunta