/*
 * Copyright (c) 2021, Alliance for Open Media. All rights reserved
 *
 * This source code is subject to the terms of the BSD 2 Clause License and
 * the Alliance for Open Media Patent License 1.0. If the BSD 2 Clause License
 * was not distributed with this source code in the LICENSE file, you can
 * obtain it at www.aomedia.org/license/software. If the Alliance for Open
 * Media Patent License 1.0 was not distributed with this source code in the
 * PATENTS file, you can obtain it at www.aomedia.org/license/patent.
 */

typedef struct S {
  int x;
  int y;
  int z;
} S;

typedef struct T {
  S s;
} T;

int d(S *s) {
  ++s->x;
  s->x--;
  s->y = s->y + 1;
  int *c = &s->x;
  S ss;
  ss.x = 1;
  ss.x += 2;
  ss.z *= 2;
  return 0;
}
int b(S *s) {
  d(s);
  return 0;
}
int c(int x) {
  if (x) {
    c(x - 1);
  } else {
    S s;
    d(&s);
  }
  return 0;
}
int a(S *s) {
  b(s);
  c(1);
  return 0;
}
int e(void) {
  c(0);
  return 0;
}
int main(void) {
  int p = 3;
  S s;
  s.x = p + 1;
  s.y = 2;
  s.z = 3;
  a(&s);
  T t;
  t.s.x = 3;
}
