//その2
static void hoge_impl(void *p)
{
//ところどころでreturn;
}

void hoge() //外部に公開される関数
{
void *p1 = malloc(65536);
void *p2 = malloc(65536);
void *p3 = malloc(65536);
void *p4 = malloc(65536);
if (p1 && p2 && p3 && p4)
ret = hoge_impl(p);
if (p1) free(p1);
if (p2) free(p2);
if (p3) free(p3);
if (p4) free(p4);
return ret
}

で何か?