// File: /workspace/github_c_makefile_star2_O0/orangeduck[P]mpc/mpc.c
// Function: mpc_optimise_unretained
static void mpc_optimise_unretained(mpc_parser_t *p, int force) {

  int i, n, m;
  mpc_parser_t *t;

  if (p->retained && !force) { return; }

  /* Optimise Subexpressions */

  if (p->type == MPC_TYPE_EXPECT)     { mpc_optimise_unretained(p->data.expect.x, 0); }
  if (p->type == MPC_TYPE_APPLY)      { mpc_optimise_unretained(p->data.apply.x, 0); }
  if (p->type == MPC_TYPE_APPLY_TO)   { mpc_optimise_unretained(p->data.apply_to.x, 0); }
  if (p->type == MPC_TYPE_CHECK)      { mpc_optimise_unretained(p->data.check.x, 0); }
  if (p->type == MPC_TYPE_CHECK_WITH) { mpc_optimise_unretained(p->data.check_with.x, 0); }
  if (p->type == MPC_TYPE_PREDICT)    { mpc_optimise_unretained(p->data.predict.x, 0); }
  if (p->type == MPC_TYPE_NOT)        { mpc_optimise_unretained(p->data.not.x, 0); }
  if (p->type == MPC_TYPE_MAYBE)      { mpc_optimise_unretained(p->data.not.x, 0); }
  if (p->type == MPC_TYPE_MANY)       { mpc_optimise_unretained(p->data.repeat.x, 0); }
  if (p->type == MPC_TYPE_MANY1)      { mpc_optimise_unretained(p->data.repeat.x, 0); }
  if (p->type == MPC_TYPE_COUNT)      { mpc_optimise_unretained(p->data.repeat.x, 0); }
  if (p->type == MPC_TYPE_SEPBY1)     {
    mpc_optimise_unretained(p->data.sepby1.x, 0);
    mpc_optimise_unretained(p->data.sepby1.sep, 0);
  }

  if (p->type == MPC_TYPE_OR) {
    for(i = 0; i < p->data.or.n; i++) {
      mpc_optimise_unretained(p->data.or.xs[i], 0);
    }
  }

  if (p->type == MPC_TYPE_AND) {
    for(i = 0; i < p->data.and.n; i++) {
      mpc_optimise_unretained(p->data.and.xs[i], 0);
    }
  }

  /* Perform optimisations */

  while (1) {

    /* Merge rhs `or` */
    if (p->type == MPC_TYPE_OR
    &&  p->data.or.xs[p->data.or.n-1]->type == MPC_TYPE_OR
    && !p->data.or.xs[p->data.or.n-1]->retained) {
      t = p->data.or.xs[p->data.or.n-1];
      n = p->data.or.n; m = t->data.or.n;
      p->data.or.n = n + m - 1;
      p->data.or.xs = realloc(p->data.or.xs, sizeof(mpc_parser_t*) * (n + m -1));
      memmove(p->data.or.xs + n - 1, t->data.or.xs, m * sizeof(mpc_parser_t*));
      free(t->data.or.xs); free(t->name); free(t);
      continue;
    }

    /* Merge lhs `or` */
    if (p->type == MPC_TYPE_OR
    &&  p->data.or.xs[0]->type == MPC_TYPE_OR
    && !p->data.or.xs[0]->retained) {
      t = p->data.or.xs[0];
      n = p->data.or.n; m = t->data.or.n;
      p->data.or.n = n + m - 1;
      p->data.or.xs = realloc(p->data.or.xs, sizeof(mpc_parser_t*) * (n + m -1));
      memmove(p->data.or.xs + m, p->data.or.xs + 1, (n - 1) * sizeof(mpc_parser_t*));
      memmove(p->data.or.xs, t->data.or.xs, m * sizeof(mpc_parser_t*));
      free(t->data.or.xs); free(t->name); free(t);
      continue;
    }

    /* Remove ast `pass` */
    if (p->type == MPC_TYPE_AND
    &&  p->data.and.n == 2
    &&  p->data.and.xs[0]->type == MPC_TYPE_PASS
    && !p->data.and.xs[0]->retained
    &&  p->data.and.f == mpcf_fold_ast) {
      t = p->data.and.xs[1];
      mpc_delete(p->data.and.xs[0]);
      free(p->data.and.xs); free(p->data.and.dxs); free(p->name);
      memcpy(p, t, sizeof(mpc_parser_t));
      free(t);
      continue;
    }

    /* Merge ast lhs `and` */
    if (p->type == MPC_TYPE_AND
    &&  p->data.and.f == mpcf_fold_ast
    &&  p->data.and.xs[0]->type == MPC_TYPE_AND
    && !p->data.and.xs[0]->retained
    &&  p->data.and.xs[0]->data.and.f == mpcf_fold_ast) {
      t = p->data.and.xs[0];
      n = p->data.and.n; m = t->data.and.n;
      p->data.and.n = n + m - 1;
      p->data.and.xs = realloc(p->data.and.xs, sizeof(mpc_parser_t*) * (n + m - 1));
      p->data.and.dxs = realloc(p->data.and.dxs, sizeof(mpc_dtor_t) * (n + m - 1 - 1));
      memmove(p->data.and.xs + m, p->data.and.xs + 1, (n - 1) * sizeof(mpc_parser_t*));
      memmove(p->data.and.xs, t->data.and.xs, m * sizeof(mpc_parser_t*));
      for (i = 0; i < p->data.and.n-1; i++) { p->data.and.dxs[i] = (mpc_dtor_t)mpc_ast_delete; }
      free(t->data.and.xs); free(t->data.and.dxs); free(t->name); free(t);
      continue;
    }

    /* Merge ast rhs `and` */
    if (p->type == MPC_TYPE_AND
    &&  p->data.and.f == mpcf_fold_ast
    &&  p->data.and.xs[p->data.and.n-1]->type == MPC_TYPE_AND
    && !p->data.and.xs[p->data.and.n-1]->retained
    &&  p->data.and.xs[p->data.and.n-1]->data.and.f == mpcf_fold_ast) {
      t = p->data.and.xs[p->data.and.n-1];
      n = p->data.and.n; m = t->data.and.n;
      p->data.and.n = n + m - 1;
      p->data.and.xs = realloc(p->data.and.xs, sizeof(mpc_parser_t*) * (n + m -1));
      p->data.and.dxs = realloc(p->data.and.dxs, sizeof(mpc_dtor_t) * (n + m - 1 - 1));
      memmove(p->data.and.xs + n - 1, t->data.and.xs, m * sizeof(mpc_parser_t*));
      for (i = 0; i < p->data.and.n-1; i++) { p->data.and.dxs[i] = (mpc_dtor_t)mpc_ast_delete; }
      free(t->data.and.xs); free(t->data.and.dxs); free(t->name); free(t);
      continue;
    }

    /* Remove re `lift` */
    if (p->type == MPC_TYPE_AND
    &&  p->data.and.n == 2
    &&  p->data.and.xs[0]->type == MPC_TYPE_LIFT
    &&  p->data.and.xs[0]->data.lift.lf == mpcf_ctor_str
    && !p->data.and.xs[0]->retained
    &&  p->data.and.f == mpcf_strfold) {
      t = p->data.and.xs[1];
      mpc_delete(p->data.and.xs[0]);
      free(p->data.and.xs); free(p->data.and.dxs); free(p->name);
      memcpy(p, t, sizeof(mpc_parser_t));
      free(t);
      continue;
    }

    /* Merge re lhs `and` */
    if (p->type == MPC_TYPE_AND
    &&  p->data.and.f == mpcf_strfold
    &&  p->data.and.xs[0]->type == MPC_TYPE_AND
    && !p->data.and.xs[0]->retained
    &&  p->data.and.xs[0]->data.and.f == mpcf_strfold) {
      t = p->data.and.xs[0];
      n = p->data.and.n; m = t->data.and.n;
      p->data.and.n = n + m - 1;
      p->data.and.xs = realloc(p->data.and.xs, sizeof(mpc_parser_t*) * (n + m - 1));
      p->data.and.dxs = realloc(p->data.and.dxs, sizeof(mpc_dtor_t) * (n + m - 1 - 1));
      memmove(p->data.and.xs + m, p->data.and.xs + 1, (n - 1) * sizeof(mpc_parser_t*));
      memmove(p->data.and.xs, t->data.and.xs, m * sizeof(mpc_parser_t*));
      for (i = 0; i < p->data.and.n-1; i++) { p->data.and.dxs[i] = free; }
      free(t->data.and.xs); free(t->data.and.dxs); free(t->name); free(t);
      continue;
    }

    /* Merge re rhs `and` */
    if (p->type == MPC_TYPE_AND
    &&  p->data.and.f == mpcf_strfold
    &&  p->data.and.xs[p->data.and.n-1]->type == MPC_TYPE_AND
    && !p->data.and.xs[p->data.and.n-1]->retained
    &&  p->data.and.xs[p->data.and.n-1]->data.and.f == mpcf_strfold) {
      t = p->data.and.xs[p->data.and.n-1];
      n = p->data.and.n; m = t->data.and.n;
      p->data.and.n = n + m - 1;
      p->data.and.xs = realloc(p->data.and.xs, sizeof(mpc_parser_t*) * (n + m -1));
      p->data.and.dxs = realloc(p->data.and.dxs, sizeof(mpc_dtor_t) * (n + m - 1 - 1));
      memmove(p->data.and.xs + n - 1, t->data.and.xs, m * sizeof(mpc_parser_t*));
      for (i = 0; i < p->data.and.n-1; i++) { p->data.and.dxs[i] = free; }
      free(t->data.and.xs); free(t->data.and.dxs); free(t->name); free(t);
      continue;
    }

    return;

  }

}

// Assembly:
pushq %rbp
movq %rsp, %rbp
subq $0x20, %rsp
movq %rdi, -0x8(%rbp)
movl %esi, -0xc(%rbp)
movq -0x8(%rbp), %rax
movsbl 0x31(%rax), %eax
cmpl $0x0, %eax
je 0xdf97
cmpl $0x0, -0xc(%rbp)
jne 0xdf97
jmp 0xec30
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x5, %eax
jne 0xdfb3
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0xf, %eax
jne 0xdfcf
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x10, %eax
jne 0xdfeb
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x19, %eax
jne 0xe007
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x1a, %eax
jne 0xe023
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x11, %eax
jne 0xe03f
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x12, %eax
jne 0xe05b
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x13, %eax
jne 0xe077
movq -0x8(%rbp), %rax
movq 0x8(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x14, %eax
jne 0xe093
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x15, %eax
jne 0xe0af
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x16, %eax
jne 0xe0cb
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x1d, %eax
jne 0xe0f6
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
xorl %esi, %esi
callq 0xdf70
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x17, %eax
jne 0xe13a
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jge 0xe138
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movslq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
xorl %esi, %esi
callq 0xdf70
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xe10a
jmp 0xe13a
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xe17e
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rcx
cmpl 0x8(%rcx), %eax
jge 0xe17c
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movslq -0x10(%rbp), %rcx
movq (%rax,%rcx,8), %rdi
xorl %esi, %esi
callq 0xdf70
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xe14e
jmp 0xe17e
jmp 0xe180
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x17, %eax
jne 0xe296
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x30(%rax), %eax
cmpl $0x17, %eax
jne 0xe296
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
cmpb $0x0, 0x31(%rax)
jne 0xe296
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %ecx
addl -0x18(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movslq -0x14(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $-0x8, %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
movslq -0x18(%rbp), %rdx
shlq $0x3, %rdx
callq 0x4660
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rdi
callq 0x4850
jmp 0xe180
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x17, %eax
jne 0xe3a4
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movsbl 0x30(%rax), %eax
cmpl $0x17, %eax
jne 0xe3a4
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
cmpb $0x0, 0x31(%rax)
jne 0xe3a4
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %ecx
addl -0x18(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x10(%rax)
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movslq -0x18(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rsi
addq $0x8, %rsi
movl -0x14(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rdx
shlq $0x3, %rdx
callq 0x4660
movq -0x8(%rbp), %rax
movq 0x10(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rsi
movslq -0x18(%rbp), %rdx
shlq $0x3, %rdx
callq 0x4660
movq -0x20(%rbp), %rax
movq 0x10(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rdi
callq 0x4850
jmp 0xe180
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xe463
movq -0x8(%rbp), %rax
cmpl $0x2, 0x8(%rax)
jne 0xe463
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movsbl 0x30(%rax), %eax
cmpl $0x1, %eax
jne 0xe463
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
cmpb $0x0, 0x31(%rax)
jne 0xe463
movq -0x8(%rbp), %rax
movq 0x8bb1(%rip), %rcx      # 0x16fa8
cmpq %rcx, 0x10(%rax)
jne 0xe463
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rdi
callq 0x4868
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x4850
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x4850
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x4850
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movl $0x38, %edx
callq 0x44e0
movq -0x20(%rbp), %rdi
callq 0x4850
jmp 0xe180
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xe614
movq -0x8(%rbp), %rax
movq 0x8b29(%rip), %rcx      # 0x16fa8
cmpq %rcx, 0x10(%rax)
jne 0xe614
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xe614
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
cmpb $0x0, 0x31(%rax)
jne 0xe614
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8ae0(%rip), %rcx      # 0x16fa8
cmpq %rcx, 0x10(%rax)
jne 0xe614
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %ecx
addl -0x18(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movslq -0x18(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x8, %rsi
movl -0x14(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rdx
shlq $0x3, %rdx
callq 0x4660
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rsi
movslq -0x18(%rbp), %rdx
shlq $0x3, %rdx
callq 0x4660
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0xe5e0
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x10(%rbp), %rcx
movq 0x89ff(%rip), %rdx      # 0x16fd0
movq %rdx, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xe5ad
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rdi
callq 0x4850
jmp 0xe180
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xe7db
movq -0x8(%rbp), %rax
movq 0x8978(%rip), %rcx      # 0x16fa8
cmpq %rcx, 0x10(%rax)
jne 0xe7db
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xe7db
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
cmpb $0x0, 0x31(%rax)
jne 0xe7db
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq 0x8905(%rip), %rcx      # 0x16fa8
cmpq %rcx, 0x10(%rax)
jne 0xe7db
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %ecx
addl -0x18(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movslq -0x14(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $-0x8, %rdi
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rsi
movslq -0x18(%rbp), %rdx
shlq $0x3, %rdx
callq 0x4660
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0xe7a7
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x10(%rbp), %rcx
movq 0x8838(%rip), %rdx      # 0x16fd0
movq %rdx, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xe774
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rdi
callq 0x4850
jmp 0xe180
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xe8b6
movq -0x8(%rbp), %rax
cmpl $0x2, 0x8(%rax)
jne 0xe8b6
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movsbl 0x30(%rax), %eax
cmpl $0x3, %eax
jne 0xe8b6
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x8754(%rip), %rcx      # 0x16f78
cmpq %rcx, 0x8(%rax)
jne 0xe8b6
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
cmpb $0x0, 0x31(%rax)
jne 0xe8b6
movq -0x8(%rbp), %rax
movq 0x8776(%rip), %rcx      # 0x16fc0
cmpq %rcx, 0x10(%rax)
jne 0xe8b6
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq 0x8(%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rdi
callq 0x4868
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x4850
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x4850
movq -0x8(%rbp), %rax
movq (%rax), %rdi
callq 0x4850
movq -0x8(%rbp), %rdi
movq -0x20(%rbp), %rsi
movl $0x38, %edx
callq 0x44e0
movq -0x20(%rbp), %rdi
callq 0x4850
jmp 0xe180
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xea67
movq -0x8(%rbp), %rax
movq 0x86ee(%rip), %rcx      # 0x16fc0
cmpq %rcx, 0x10(%rax)
jne 0xea67
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xea67
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
cmpb $0x0, 0x31(%rax)
jne 0xea67
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq 0x86a5(%rip), %rcx      # 0x16fc0
cmpq %rcx, 0x10(%rax)
jne 0xea67
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq (%rax), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %ecx
addl -0x18(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movslq -0x18(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rsi
addq $0x8, %rsi
movl -0x14(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rdx
shlq $0x3, %rdx
callq 0x4660
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rsi
movslq -0x18(%rbp), %rdx
shlq $0x3, %rdx
callq 0x4660
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0xea33
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x10(%rbp), %rcx
movq 0x84fc(%rip), %rdx      # 0x16f20
movq %rdx, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xea00
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rdi
callq 0x4850
jmp 0xe180
movq -0x8(%rbp), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xec2e
movq -0x8(%rbp), %rax
movq 0x853d(%rip), %rcx      # 0x16fc0
cmpq %rcx, 0x10(%rax)
jne 0xec2e
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movsbl 0x30(%rax), %eax
cmpl $0x18, %eax
jne 0xec2e
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
cmpb $0x0, 0x31(%rax)
jne 0xec2e
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq 0x84ca(%rip), %rcx      # 0x16fc0
cmpq %rcx, 0x10(%rax)
jne 0xec2e
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
movslq %ecx, %rcx
movq (%rax,%rcx,8), %rax
movq %rax, -0x20(%rbp)
movq -0x8(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x14(%rbp)
movq -0x20(%rbp), %rax
movl 0x8(%rax), %eax
movl %eax, -0x18(%rbp)
movl -0x14(%rbp), %ecx
addl -0x18(%rbp), %ecx
subl $0x1, %ecx
movq -0x8(%rbp), %rax
movl %ecx, 0x8(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x18(%rax)
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rdi
movl -0x14(%rbp), %eax
addl -0x18(%rbp), %eax
subl $0x1, %eax
subl $0x1, %eax
movslq %eax, %rsi
shlq $0x3, %rsi
callq 0x45e0
movq %rax, %rcx
movq -0x8(%rbp), %rax
movq %rcx, 0x20(%rax)
movq -0x8(%rbp), %rax
movq 0x18(%rax), %rdi
movslq -0x14(%rbp), %rax
shlq $0x3, %rax
addq %rax, %rdi
addq $-0x8, %rdi
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rsi
movslq -0x18(%rbp), %rdx
shlq $0x3, %rdx
callq 0x4660
movl $0x0, -0x10(%rbp)
movl -0x10(%rbp), %eax
movq -0x8(%rbp), %rcx
movl 0x8(%rcx), %ecx
subl $0x1, %ecx
cmpl %ecx, %eax
jge 0xebfa
movq -0x8(%rbp), %rax
movq 0x20(%rax), %rax
movslq -0x10(%rbp), %rcx
movq 0x8335(%rip), %rdx      # 0x16f20
movq %rdx, (%rax,%rcx,8)
movl -0x10(%rbp), %eax
addl $0x1, %eax
movl %eax, -0x10(%rbp)
jmp 0xebc7
movq -0x20(%rbp), %rax
movq 0x18(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq 0x20(%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rax
movq (%rax), %rdi
callq 0x4850
movq -0x20(%rbp), %rdi
callq 0x4850
jmp 0xe180
jmp 0xec30
addq $0x20, %rsp
popq %rbp
retq
nopw %cs:(%rax,%rax)