Assume the most closely nesting scope rule for resolving uses and that each function introduces one new scope for both its parameters and local variables.
int X;
double Y;
int F (char X, int Z) {
char Y;
/* (A) */
{
double X, Y;
int W;
/* (B) */
}
char W;
/* (C) */
}
/* (D) */
double G (int Z) {
char X;
f(X,Z);
/* (E) */
}