
/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

int selectExpander(Walker *pWalker,Select *p)

{
  undefined1 *puVar1;
  Column **ppCVar2;
  i16 iVar3;
  Parse *pParse;
  int iVar4;
  sqlite3 *db;
  SrcList *pList;
  ExprList *pList_00;
  byte *pbVar5;
  Parse *pParse_00;
  SrcList *pSVar6;
  sqlite3 *db_00;
  Select *pSVar7;
  ExprList *pEVar8;
  bool bVar9;
  u64 uVar10;
  byte bVar11;
  u8 uVar12;
  int iVar13;
  uint uVar14;
  Expr *pEVar15;
  byte *pbVar16;
  Table *pTVar17;
  Select *pSVar18;
  int iVar19;
  Expr *pEVar20;
  size_t sVar21;
  char *pcVar22;
  u8 uVar23;
  anon_struct_4_7_7ffbf296_for_fg p_00;
  char **ppcVar24;
  byte *pbVar25;
  Select *pSVar26;
  Column **ppCVar27;
  With *pWVar28;
  Column *pCVar29;
  SrcList_item *pFrom;
  ExprList *pEVar30;
  int iVar31;
  int in_GS_OFFSET;
  bool bVar32;
  char *in_stack_ffffff68;
  Column **in_stack_ffffff6c;
  int *piTab;
  sqlite3 *in_stack_ffffff74;
  Select *pSVar33;
  Expr **ppWhere;
  byte bVar34;
  With *in_stack_ffffff7c;
  With *pWVar35;
  uint uVar36;
  SrcList_item *local_80;
  int local_78;
  Column **local_74;
  int local_70;
  char *local_68;
  Column **local_64;
  char *local_60;
  ExprList_item *local_4c;
  int local_48;
  int local_44;
  SrcList *local_40;
  int iLeft;
  Token sColname;
  
  pParse = pWalker->pParse;
  iVar4 = *(int *)(in_GS_OFFSET + 0x14);
  db = pParse->db;
  uVar14 = p->selFlags;
  p->selFlags = uVar14 | 0x40;
  if (db->mallocFailed == '\0') {
    if ((uVar14 & 0x40) != 0) {
      local_48 = 1;
      goto LAB_000cfaec;
    }
    pList = p->pSrc;
    pList_00 = p->pEList;
    pWVar35 = p->pWith;
    if (pWVar35 != (With *)0x0) {
      pWVar35->pOuter = pParse->pWith;
      pParse->pWith = pWVar35;
    }
    piTab = (int *)0xcf7c5;
    sqlite3SrcListAssignCursors(pParse,pList);
    if (0 < pList->nSrc) {
      pSVar33 = (Select *)0x0;
      pFrom = pList->a;
LAB_000cf800:
      bVar11 = (pFrom->fg).field_0x1;
      if ((bVar11 & 0x20) != 0) goto LAB_000cf910;
      if (pFrom->zDatabase != (char *)0x0) goto LAB_000cfc82;
      pbVar5 = (byte *)pFrom->zName;
      if (pbVar5 == (byte *)0x0) {
        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;
        goto LAB_000cfc89;
      }
      pParse_00 = pWalker->pParse;
      for (pWVar35 = pParse_00->pWith; in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0;
          pWVar35 = pWVar35->pOuter) {
        if (0 < pWVar35->nCte) {
          iVar31 = 0;
          do {
            pbVar16 = (byte *)pWVar35->a[iVar31].zName;
            if (""[*pbVar5] == ""[*pbVar16]) {
              if (*pbVar5 == 0) {
                pcVar22 = pWVar35->a[iVar31].zCteErr;
joined_r0x000cfd51:
                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;
                if ((bVar11 & 4) != 0) {
                  pcVar22 = "\'%s\' is not a function";
                  pbVar16 = pbVar5;
                  goto LAB_000cfd64;
                }
                db_00 = pParse_00->db;
                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));
                pFrom->pTab = pTVar17;
                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;
                pTVar17->nTabRef = 1;
                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);
                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;
                pTVar17->zName = pcVar22;
                pTVar17->nRowLogEst = 200;
                pTVar17->iPKey = -1;
                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);
                pFrom->pSelect = pSVar18;
                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;
                bVar11 = pSVar18->op + 0x85;
                if (1 < bVar11) {
                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;
                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";
                  pWVar28 = pParse_00->pWith;
                  pParse_00->pWith = in_stack_ffffff7c;
                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {
                    sqlite3WalkSelect(pWalker,pSVar18);
                  }
                  goto LAB_000cfc05;
                }
                pSVar6 = pSVar18->pSrc;
                if (pSVar6->nSrc < 1) goto LAB_000cfecc;
                ppcVar24 = &pSVar6->a[0].zDatabase;
                iVar13 = 0;
                goto LAB_000cfe32;
              }
              iVar13 = 1;
              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {
                iVar13 = iVar13 + 1;
                if (*pbVar25 == 0) {
                  pcVar22 = pWVar35->a[iVar31].zCteErr;
                  goto joined_r0x000cfd51;
                }
              }
            }
            iVar31 = iVar31 + 1;
          } while (pWVar35->nCte != iVar31);
        }
      }
      if (pFrom->pTab == (Table *)0x0) goto LAB_000cfcb3;
      piTab = (int *)0xcf908;
      iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);
      in_stack_ffffff7c = pWVar35;
      if (iVar31 == 0) goto LAB_000cf910;
      goto LAB_000cfae4;
    }
LAB_000cf928:
    if (db->mallocFailed == '\0') {
      pSVar6 = p->pSrc;
      local_40 = pSVar6 + 1;
      if (1 < pSVar6->nSrc) {
        local_60 = (char *)0x1;
        do {
          pcVar22 = local_40->a[0].zName;
          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {
            bVar11 = (byte)local_40->a[0].regReturn;
            p_00 = local_40->a[0].fg;
            bVar34 = bVar11 & 0x20;
            uVar14 = (uint)((bVar11 & 0x20) != 0);
            if ((bVar11 & 4) != 0) {
              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {
                pcVar22 = "a NATURAL join may not have an ON or USING clause";
                goto LAB_000cfad7;
              }
              iVar31 = 0;
              ppWhere = &p->pWhere;
              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;
              uVar36 = bVar11 & 0xffffff20;
              do {
                in_stack_ffffff68 = (char *)&sColname;
                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,
                                             (char *)in_stack_ffffff6c,piTab,
                                             (int *)in_stack_ffffff74);
                if (iVar13 != 0) {
                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,
                               ppWhere);
                }
                iVar31 = iVar31 + 1;
              } while (iVar31 < *(short *)(pcVar22 + 0x2a));
              bVar34 = (byte)uVar36;
              p_00 = local_40->a[0].fg;
            }
            local_64 = (Column **)local_40->a[0].iCursor;
            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {
              if (local_64 != (Column **)0x0) {
                pcVar22 = "cannot have both ON and USING clauses in the same join";
                goto LAB_000cfad7;
              }
              if (bVar34 != 0) {
                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);
                p_00 = local_40->a[0].fg;
              }
              piTab = (int *)0xcf9d0;
              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);
              p->pWhere = pEVar15;
              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;
              local_64 = (Column **)local_40->a[0].iCursor;
            }
            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {
LAB_000cfa10:
              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);
              if (0 < *(short *)(pcVar22 + 0x2a)) {
                iVar31 = 0;
                do {
                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);
                  bVar11 = *pbVar16;
                  pbVar25 = pbVar5;
                  if (""[*pbVar5] == ""[bVar11]) {
                    do {
                      if (bVar11 == 0) {
                        in_stack_ffffff68 = (char *)&sColname;
                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,
                                                     (char *)in_stack_ffffff6c,piTab,
                                                     (int *)in_stack_ffffff74);
                        if (iVar13 == 0) goto LAB_000cfac6;
                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14
                                     ,&p->pWhere);
                        local_70 = local_70 + 1;
                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;
                        goto LAB_000d0070;
                      }
                      pbVar16 = pbVar16 + 1;
                      pbVar25 = pbVar25 + 1;
                      bVar11 = *pbVar16;
                    } while (""[bVar11] == ""[*pbVar25]);
                  }
                  iVar31 = iVar31 + 1;
                } while (iVar31 != *(short *)(pcVar22 + 0x2a));
              }
LAB_000cfac6:
              pcVar22 = "cannot join using column %s - column not present in both tables";
              goto LAB_000cfad7;
            }
          }
LAB_000d0070:
          local_40 = (SrcList *)&local_40->a[0].u1;
          bVar9 = (int)local_60 < pSVar6->nSrc + -1;
          local_60 = (char *)((int)local_60 + 1);
        } while (bVar9);
      }
      if (0 < pList_00->nExpr) {
        pEVar15 = pList_00->a[0].pExpr;
        uVar12 = pEVar15->op;
        if (uVar12 == 0xa8) {
          local_40 = (SrcList *)0x0;
        }
        else {
          pEVar30 = pList_00 + 1;
          iVar31 = 0;
          local_40 = (SrcList *)0x0;
          pEVar20 = pEVar15;
          uVar23 = uVar12;
          do {
            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;
            iVar31 = iVar31 + 1;
            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);
            if (iVar31 == pList_00->nExpr) {
              pEVar30 = p->pEList;
              goto LAB_000d07de;
            }
            pEVar20 = (Expr *)pEVar30->nExpr;
            pEVar30 = (ExprList *)&pEVar30->a[0].u;
            uVar23 = pEVar20->op;
          } while (uVar23 != 0xa8);
        }
        local_44 = 0;
        pEVar30 = (ExprList *)0x0;
        uVar10 = pParse->db->flags;
        local_4c = pList_00->a;
        do {
          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);
          if (uVar12 == 0xa8) {
            local_74 = (Column **)0x0;
            if (pList->nSrc < 1) {
LAB_000d0870:
              in_stack_ffffff68 = "no tables specified";
              sqlite3ErrorMsg(pParse,"no tables specified");
            }
            else {
LAB_000d01d4:
              bVar9 = false;
              local_78 = 0;
              local_80 = pList->a;
              do {
                pTVar17 = local_80->pTab;
                pSVar33 = local_80->pSelect;
                local_64 = (Column **)local_80->zAlias;
                if (local_64 == (Column **)0x0) {
                  local_64 = (Column **)pTVar17->zName;
                }
                if (db->mallocFailed != '\0') break;
                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {
                  if (local_74 == (Column **)0x0) {
LAB_000d0438:
                    if (pTVar17->pSchema == (Schema *)0x0) {
                      local_60 = "*";
                      pSVar33 = (Select *)0x0;
                    }
                    else {
                      piTab = (int *)0xd0458;
                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);
                      if (iVar31 < 0) {
                        pSVar33 = (Select *)0x0;
                        local_60 = "*";
                      }
                      else {
                        pSVar33 = (Select *)0x0;
                        local_60 = db->aDb[iVar31].zDbSName;
                      }
                    }
                    goto LAB_000d0474;
                  }
                  bVar11 = *(byte *)local_74;
                  ppCVar2 = local_74;
                  ppCVar27 = local_64;
                  if (""[bVar11] == ""[*(byte *)local_64]) {
                    do {
                      if (bVar11 == 0) goto LAB_000d0438;
                      ppCVar2 = (Column **)((int)ppCVar2 + 1);
                      ppCVar27 = (Column **)((int)ppCVar27 + 1);
                      bVar11 = *(byte *)ppCVar2;
                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);
                  }
                }
                else {
                  local_60 = (char *)0x0;
LAB_000d0474:
                  if (0 < pTVar17->nCol) {
                    bVar32 = pSVar33 == (Select *)0x0;
                    iVar31 = 0;
                    do {
                      pCVar29 = pTVar17->aCol + iVar31;
                      pcVar22 = pCVar29->zName;
                      if (local_74 == (Column **)0x0 || bVar32) {
                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))
                        goto LAB_000d062b;
                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;
                        if (((local_80->fg).jointype & 4) == 0) {
LAB_000d04da:
                          if (local_80->pUsing != (IdList *)0x0) {
                            piTab = (int *)0xd04ec;
                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);
                            if (-1 < iVar13) goto LAB_000d0623;
                          }
LAB_000d04f4:
                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);
                          if ((uVar10 & 0x44) == 4) {
                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);
                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);
                            if (local_60 != (char *)0x0) {
                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);
                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);
                            }
                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;
                            in_stack_ffffff6c = local_64;
                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);
                            local_68 = pcVar22;
                          }
                          else {
                            if (1 < pList->nSrc) {
                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);
                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);
                              if (local_60 != (char *)0x0) {
                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);
                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68
                                                      );
                              }
                            }
                            local_68 = (char *)0x0;
                          }
                          piTab = (int *)0xd058f;
                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);
                          sColname.z = pcVar22;
                          if (pcVar22 == (char *)0x0) {
                            sColname.n = 0;
                          }
                          else {
                            sVar21 = strlen(pcVar22);
                            sColname.n = sVar21 & 0x3fffffff;
                          }
                          if ((pEVar30 != (ExprList *)0x0) &&
                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),
                             (p->selFlags & 0x800) != 0)) {
                            iVar13 = pEVar30->nExpr;
                            if (pSVar33 == (Select *)0x0) {
                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);
                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;
                            }
                            else {
                              piTab = (int *)0xd0601;
                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);
                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;
                            }
                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;
                            *puVar1 = *puVar1 | 2;
                          }
                          if (local_68 != (char *)0x0) {
                            piTab = (int *)0xd0623;
                            sqlite3DbFreeNN(db,local_68);
                          }
                        }
                        else {
                          in_stack_ffffff68 = (char *)0x0;
                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,
                                                       piTab,(int *)in_stack_ffffff74);
                          if (iVar13 == 0) goto LAB_000d04da;
                        }
LAB_000d0623:
                        bVar9 = true;
                      }
                      else {
                        iVar13 = sqlite3MatchSpanName
                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,
                                            (char *)piTab);
                        if ((iVar13 != 0) &&
                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))
                        goto LAB_000d04f4;
                      }
LAB_000d062b:
                      iVar31 = iVar31 + 1;
                    } while (iVar31 < pTVar17->nCol);
                  }
                }
                local_78 = local_78 + 1;
                local_80 = local_80 + 1;
              } while (local_78 < pList->nSrc);
              if (!bVar9) goto LAB_000d02c3;
            }
          }
          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {
            local_74 = (Column **)(pEVar15->pLeft->u).zToken;
            if (0 < pList->nSrc) goto LAB_000d01d4;
LAB_000d02c3:
            if (local_74 == (Column **)0x0) goto LAB_000d0870;
            in_stack_ffffff68 = "no such table: %s";
            sqlite3ErrorMsg(pParse,"no such table: %s");
            in_stack_ffffff6c = local_74;
          }
          else {
            piTab = (int *)0xd0155;
            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);
            if (pEVar30 != (ExprList *)0x0) {
              iVar31 = pEVar30->nExpr;
              pEVar30->a[iVar31 + -1].zName = local_4c->zName;
              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;
              local_4c->zName = (char *)0x0;
              local_4c->zSpan = (char *)0x0;
            }
            local_4c->pExpr = (Expr *)0x0;
          }
          local_44 = local_44 + 1;
          local_4c = local_4c + 1;
          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;
          pEVar15 = local_4c->pExpr;
          uVar12 = pEVar15->op;
        } while( true );
      }
      local_40 = (SrcList *)0x0;
      pEVar30 = p->pEList;
      goto LAB_000d07de;
    }
  }
  goto LAB_000cfae4;
LAB_000cfe32:
  do {
    if ((*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)) {
      pbVar16 = (byte *)pWVar35->a[iVar31].zName;
      if (""[*pbVar16] == ""[*pbVar5]) {
        if (*pbVar5 != 0) {
          iVar19 = 1;
          do {
            pbVar25 = pbVar5 + iVar19;
            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {
              iVar13 = iVar13 + 1;
              ppcVar24 = ppcVar24 + 0x11;
              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;
              goto LAB_000cfecc;
            }
            iVar19 = iVar19 + 1;
          } while (*pbVar25 != 0);
        }
        ppcVar24[3] = (char *)pTVar17;
        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;
        *puVar1 = *puVar1 | 0x20;
        pTVar17->nTabRef = pTVar17->nTabRef + 1;
        pSVar18->selFlags = pSVar18->selFlags | 0x2000;
      }
    }
    iVar13 = iVar13 + 1;
    ppcVar24 = ppcVar24 + 0x11;
  } while (iVar13 < pSVar6->nSrc);
LAB_000cfecc:
  if (2 < pTVar17->nTabRef) {
LAB_000cffd0:
    pcVar22 = "multiple references to recursive table: %s";
    pbVar16 = (byte *)in_stack_ffffff7c->a[iVar31].zName;
LAB_000cfd64:
    sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16);
    local_48 = 2;
    goto LAB_000cfaec;
  }
  pWVar35->a[iVar31].zCteErr = "circular reference: %s";
  pWVar28 = pParse_00->pWith;
  pParse_00->pWith = in_stack_ffffff7c;
  pSVar7 = pSVar18->pPrior;
  pSVar7->pWith = pSVar18->pWith;
  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {
    sqlite3WalkSelect(pWalker,pSVar7);
  }
  pSVar7->pWith = (With *)0x0;
LAB_000cfc05:
  pParse_00->pWith = in_stack_ffffff7c;
  pSVar7 = pSVar18;
  do {
    pSVar26 = pSVar7;
    pSVar7 = pSVar26->pPrior;
  } while (pSVar7 != (Select *)0x0);
  pEVar30 = pSVar26->pEList;
  pEVar8 = pWVar35->a[iVar31].pCols;
  if ((pEVar8 != (ExprList *)0x0) && (pEVar30 != (ExprList *)0x0)) {
    iVar13 = pEVar30->nExpr;
    iVar19 = pEVar8->nExpr;
    if (iVar13 != iVar19) {
      sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",
                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19);
      pParse_00->pWith = pWVar28;
      local_48 = 2;
      goto LAB_000cfaec;
    }
  }
  sqlite3ColumnsFromExprList
            ((Parse *)pParse_00->db,(ExprList *)&pTVar17->aCol,(i16 *)in_stack_ffffff68,
             in_stack_ffffff6c);
  if (bVar11 < 2) {
    pcVar22 = "multiple recursive references: %s";
    if ((pSVar18->selFlags & 0x2000) == 0) {
      pcVar22 = "recursive reference in a subquery: %s";
    }
    pWVar35->a[iVar31].zCteErr = pcVar22;
    if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {
      sqlite3WalkSelect(pWalker,pSVar18);
    }
  }
  pWVar35->a[iVar31].zCteErr = (char *)0x0;
  pParse_00->pWith = pWVar28;
LAB_000cfc82:
  if (pFrom->pTab == (Table *)0x0) {
    if (pFrom->zName == (char *)0x0) {
LAB_000cfd90:
      if ((((pFrom->pSelect != (Select *)0x0) &&
           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&
          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||
         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;
    }
    else {
LAB_000cfcb3:
      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);
      pFrom->pTab = pTVar17;
      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;
      if (0xfffe < pTVar17->nTabRef) {
        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);
        pFrom->pTab = (Table *)0x0;
        local_48 = 2;
        goto LAB_000cfaec;
      }
      pTVar17->nTabRef = pTVar17->nTabRef + 1;
      if (pTVar17->nModuleArg == 0) {
        if (((pFrom->fg).field_0x1 & 4) != 0) {
          pcVar22 = "\'%s\' is not a function";
          goto LAB_000cfad7;
        }
        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;
      }
      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);
      if (iVar31 != 0) goto LAB_000cfae4;
      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);
      pFrom->pSelect = pSVar18;
      iVar3 = pTVar17->nCol;
      pTVar17->nCol = -1;
      if ((pFrom->pSelect != (Select *)0x0) &&
         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {
        sqlite3WalkSelect(pWalker,pFrom->pSelect);
      }
      pTVar17->nCol = iVar3;
    }
  }
LAB_000cfc89:
  piTab = (int *)0xcfc94;
  iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);
  if (iVar31 != 0) goto LAB_000cfae4;
LAB_000cf910:
  pSVar33 = (Select *)((int)&pSVar33->pEList + 1);
  pFrom = pFrom + 1;
  if (pList->nSrc <= (int)pSVar33) goto LAB_000cf928;
  goto LAB_000cf800;
LAB_000d07cd:
  exprListDeleteNN(db,pList_00);
  p->pEList = pEVar30;
LAB_000d07de:
  local_48 = 0;
  if (pEVar30 == (ExprList *)0x0) goto LAB_000cfaec;
  if (pEVar30->nExpr <= db->aLimit[2]) {
    if (((uint)local_40 & 0x200004) != 0) {
      p->selFlags = p->selFlags | 0x40000;
    }
    goto LAB_000cfaec;
  }
  pcVar22 = "too many columns in result set";
LAB_000cfad7:
  sqlite3ErrorMsg(pParse,pcVar22);
LAB_000cfae4:
  local_48 = 2;
LAB_000cfaec:
  if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_48;
  }
                    /* WARNING: Subroutine does not return */
  __stack_chk_fail_local();
}



/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined4 FUN_000cf720(int *param_1,int *param_2)

{
  undefined2 uVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  byte bVar11;
  char cVar12;
  int iVar13;
  byte *pbVar14;
  int *piVar15;
  undefined4 *puVar16;
  int iVar17;
  char *pcVar18;
  undefined4 uVar19;
  size_t sVar20;
  char *pcVar21;
  char cVar22;
  int *piVar23;
  byte *pbVar24;
  byte *pbVar25;
  undefined4 *puVar26;
  int *piVar27;
  int iVar28;
  int in_GS_OFFSET;
  bool bVar29;
  byte *local_88;
  int *local_80;
  int local_78;
  byte *local_74;
  int local_70;
  char *local_68;
  byte *local_64;
  char *local_60;
  int *local_4c;
  undefined4 local_48;
  int local_44;
  int *local_40;
  undefined1 local_2c [4];
  char *local_28;
  uint local_24;
  int local_20;
  
  piVar2 = (int *)*param_1;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar3 = *piVar2;
  uVar4 = param_2[2];
  param_2[2] = uVar4 | 0x40;
  if (*(char *)(iVar3 + 0x4d) == '\0') {
    if ((uVar4 & 0x40) != 0) {
      local_48 = 1;
      goto LAB_000cfaec;
    }
    piVar5 = (int *)param_2[8];
    piVar6 = (int *)*param_2;
    iVar28 = param_2[0x10];
    if (iVar28 != 0) {
      *(int *)(iVar28 + 4) = piVar2[0x41];
      piVar2[0x41] = iVar28;
    }
    FUN_00039910();
    if (0 < *piVar5) {
      local_88 = (byte *)0x0;
      piVar27 = piVar5 + 2;
LAB_000cf800:
      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;
      if (piVar27[1] != 0) goto LAB_000cfc82;
      pbVar25 = (byte *)piVar27[2];
      if (pbVar25 == (byte *)0x0) {
        if (piVar27[4] == 0) goto LAB_000cfd90;
        goto LAB_000cfc89;
      }
      piVar7 = (int *)*param_1;
      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {
        if (0 < *piVar8) {
          iVar28 = 0;
          do {
            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];
            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {
              if (*pbVar25 == 0) {
                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];
joined_r0x000cfd51:
                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;
                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {
                  pcVar21 = "\'%s\' is not a function";
                  pbVar14 = pbVar25;
                  goto LAB_000cfd64;
                }
                iVar13 = *piVar7;
                puVar16 = (undefined4 *)FUN_00044520();
                piVar27[4] = (int)puVar16;
                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;
                puVar16[8] = 1;
                uVar19 = FUN_00044980();
                puVar16[9] = puVar16[9] | 0x42;
                *puVar16 = uVar19;
                *(undefined2 *)(puVar16 + 0xb) = 200;
                *(undefined2 *)(puVar16 + 10) = 0xffff;
                piVar15 = (int *)FUN_0005a810();
                piVar27[5] = (int)piVar15;
                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;
                bVar11 = (char)piVar15[1] + 0x85;
                if (1 < bVar11) {
                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;
                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";
                  iVar13 = piVar7[0x41];
                  piVar7[0x41] = (int)piVar8;
                  if (param_1[2] != 0) {
                    FUN_0004a550();
                  }
                  goto LAB_000cfc05;
                }
                piVar9 = (int *)piVar15[8];
                if (*piVar9 < 1) goto LAB_000cfecc;
                piVar23 = piVar9 + 3;
                iVar13 = 0;
                goto LAB_000cfe32;
              }
              iVar13 = 1;
              while (pbVar24 = pbVar25 + iVar13,
                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {
                iVar13 = iVar13 + 1;
                if (*pbVar24 == 0) {
                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];
                  goto joined_r0x000cfd51;
                }
              }
            }
            iVar28 = iVar28 + 1;
          } while (*piVar8 != iVar28);
        }
      }
      if (piVar27[4] == 0) goto LAB_000cfcb3;
      iVar28 = FUN_000757e0();
      if (iVar28 == 0) goto LAB_000cf910;
      goto LAB_000cfae4;
    }
LAB_000cf928:
    if (*(char *)(iVar3 + 0x4d) == '\0') {
      piVar27 = (int *)param_2[8];
      local_40 = piVar27 + 0x13;
      if (1 < *piVar27) {
        local_60 = (char *)0x1;
        do {
          iVar28 = local_40[4];
          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {
            bVar11 = *(byte *)(local_40 + 9);
            iVar13 = local_40[0xb];
            bVar29 = (bVar11 & 0x20) != 0;
            if ((bVar11 & 4) != 0) {
              if ((iVar13 != 0) || (local_40[0xc] != 0)) {
                pcVar21 = "a NATURAL join may not have an ON or USING clause";
                goto LAB_000cfad7;
              }
              iVar13 = 0;
              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;
              do {
                iVar17 = FUN_00039c70(local_2c,&local_28);
                if (iVar17 != 0) {
                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);
                }
                iVar13 = iVar13 + 1;
              } while (iVar13 < *(short *)(iVar28 + 0x2a));
              iVar13 = local_40[0xb];
            }
            local_64 = (byte *)local_40[0xc];
            if (iVar13 != 0) {
              if (local_64 != (byte *)0x0) {
                pcVar21 = "cannot have both ON and USING clauses in the same join";
                goto LAB_000cfad7;
              }
              if ((bVar11 & 0x20) != 0) {
                FUN_00039da0();
              }
              iVar13 = FUN_000569c0();
              param_2[9] = iVar13;
              local_40[0xb] = 0;
              local_64 = (byte *)local_40[0xc];
            }
            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {
LAB_000cfa10:
              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);
              if (0 < *(short *)(iVar28 + 0x2a)) {
                iVar13 = 0;
                do {
                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);
                  bVar11 = *pbVar14;
                  pbVar24 = pbVar25;
                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {
                    do {
                      if (bVar11 == 0) {
                        iVar17 = FUN_00039c70(local_2c,&local_28);
                        if (iVar17 == 0) goto LAB_000cfac6;
                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);
                        local_70 = local_70 + 1;
                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;
                        goto LAB_000d0070;
                      }
                      pbVar14 = pbVar14 + 1;
                      pbVar24 = pbVar24 + 1;
                      bVar11 = *pbVar14;
                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);
                  }
                  iVar13 = iVar13 + 1;
                } while (iVar13 != *(short *)(iVar28 + 0x2a));
              }
LAB_000cfac6:
              pcVar21 = "cannot join using column %s - column not present in both tables";
              goto LAB_000cfad7;
            }
          }
LAB_000d0070:
          local_40 = local_40 + 0x11;
          bVar29 = (int)local_60 < *piVar27 + -1;
          local_60 = (char *)((int)local_60 + 1);
        } while (bVar29);
      }
      if (0 < *piVar6) {
        pcVar21 = (char *)piVar6[1];
        cVar12 = *pcVar21;
        if (cVar12 == -0x58) {
          local_40 = (int *)0x0;
        }
        else {
          piVar27 = piVar6 + 6;
          iVar28 = 0;
          local_40 = (int *)0x0;
          pcVar18 = pcVar21;
          cVar22 = cVar12;
          do {
            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;
            iVar28 = iVar28 + 1;
            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));
            if (iVar28 == *piVar6) {
              piVar27 = (int *)*param_2;
              goto LAB_000d07de;
            }
            pcVar18 = (char *)*piVar27;
            piVar27 = piVar27 + 5;
            cVar22 = *pcVar18;
          } while (cVar22 != -0x58);
        }
        local_44 = 0;
        piVar27 = (int *)0x0;
        uVar4 = *(uint *)(*piVar2 + 0x1c);
        local_4c = piVar6 + 1;
        do {
          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));
          if (cVar12 == -0x58) {
            local_74 = (byte *)0x0;
            if (*piVar5 < 1) {
LAB_000d0870:
              FUN_00074ee0(piVar2,"no tables specified");
            }
            else {
LAB_000d01d4:
              bVar29 = false;
              local_78 = 0;
              local_80 = piVar5 + 2;
              do {
                puVar16 = (undefined4 *)local_80[4];
                local_88 = (byte *)local_80[5];
                local_64 = (byte *)local_80[3];
                if (local_64 == (byte *)0x0) {
                  local_64 = (byte *)*puVar16;
                }
                if (*(char *)(iVar3 + 0x4d) != '\0') break;
                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {
                  if (local_74 == (byte *)0x0) {
LAB_000d0438:
                    if (puVar16[0x12] == 0) {
                      local_60 = "*";
                      local_88 = (byte *)0x0;
                    }
                    else {
                      iVar28 = FUN_0004c580();
                      if (iVar28 < 0) {
                        local_88 = (byte *)0x0;
                        local_60 = "*";
                      }
                      else {
                        local_88 = (byte *)0x0;
                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));
                      }
                    }
                    goto LAB_000d0474;
                  }
                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {
                    if (*local_74 != 0) {
                      local_88 = local_74;
                      pbVar25 = local_64;
                      do {
                        local_88 = local_88 + 1;
                        pbVar25 = pbVar25 + 1;
                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])
                        goto LAB_000d029d;
                      } while (*local_88 != 0);
                    }
                    goto LAB_000d0438;
                  }
                }
                else {
                  local_60 = (char *)0x0;
LAB_000d0474:
                  if (0 < *(short *)((int)puVar16 + 0x2a)) {
                    iVar28 = 0;
                    do {
                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);
                      pcVar21 = (char *)*puVar26;
                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {
                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||
                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {
                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||
                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||
                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&
                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))
                          goto LAB_000d04f4;
                          goto LAB_000d0623;
                        }
                      }
                      else {
                        iVar13 = FUN_00045a10(0);
                        if ((iVar13 != 0) &&
                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||
                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {
LAB_000d04f4:
                          uVar19 = FUN_00045020();
                          if ((uVar4 & 0x44) == 4) {
                            FUN_00045020();
                            uVar19 = FUN_00075cf0(uVar19);
                            if (local_60 != (char *)0x0) {
                              FUN_00045020();
                              FUN_00075cf0(uVar19);
                            }
                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);
                            local_68 = pcVar21;
                          }
                          else {
                            if (1 < *piVar5) {
                              FUN_00045020();
                              uVar19 = FUN_00075cf0(uVar19);
                              if (local_60 != (char *)0x0) {
                                FUN_00045020();
                                FUN_00075cf0(uVar19);
                              }
                            }
                            local_68 = (char *)0x0;
                          }
                          piVar27 = (int *)FUN_000675b0();
                          local_28 = pcVar21;
                          if (pcVar21 == (char *)0x0) {
                            local_24 = 0;
                          }
                          else {
                            sVar20 = strlen(pcVar21);
                            local_24 = sVar20 & 0x3fffffff;
                          }
                          if ((piVar27 != (int *)0x0) &&
                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {
                            iVar13 = *piVar27 + -1;
                            if (local_88 == (byte *)0x0) {
                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);
                              piVar27[iVar13 * 5 + 3] = iVar17;
                            }
                            else {
                              iVar17 = FUN_00044980();
                              piVar27[iVar13 * 5 + 3] = iVar17;
                            }
                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);
                            *pbVar25 = *pbVar25 | 2;
                          }
                          if (local_68 != (char *)0x0) {
                            FUN_000428d0();
                          }
LAB_000d0623:
                          bVar29 = true;
                        }
                      }
                      iVar28 = iVar28 + 1;
                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));
                  }
                }
LAB_000d029d:
                local_78 = local_78 + 1;
                local_80 = local_80 + 0x11;
              } while (local_78 < *piVar5);
              if (!bVar29) goto LAB_000d02c3;
            }
          }
          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {
            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);
            if (0 < *piVar5) goto LAB_000d01d4;
LAB_000d02c3:
            if (local_74 == (byte *)0x0) goto LAB_000d0870;
            FUN_00074ee0(piVar2,"no such table: %s",local_74);
          }
          else {
            piVar27 = (int *)FUN_000675b0();
            if (piVar27 != (int *)0x0) {
              iVar28 = *piVar27;
              piVar27[iVar28 * 5 + -3] = local_4c[1];
              piVar27[iVar28 * 5 + -2] = local_4c[2];
              local_4c[1] = 0;
              local_4c[2] = 0;
            }
            *local_4c = 0;
          }
          local_44 = local_44 + 1;
          local_4c = local_4c + 5;
          if (*piVar6 <= local_44) goto LAB_000d07cd;
          pcVar21 = (char *)*local_4c;
          cVar12 = *pcVar21;
        } while( true );
      }
      local_40 = (int *)0x0;
      piVar27 = (int *)*param_2;
      goto LAB_000d07de;
    }
  }
  goto LAB_000cfae4;
LAB_000cfe32:
  do {
    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {
      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {
        if (*pbVar25 != 0) {
          iVar17 = 1;
          do {
            pbVar14 = pbVar25 + iVar17;
            if ((&DAT_0012c6e0)[*pbVar14] !=
                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {
              iVar13 = iVar13 + 1;
              piVar23 = piVar23 + 0x11;
              if (iVar13 < *piVar9) goto LAB_000cfe32;
              goto LAB_000cfecc;
            }
            iVar17 = iVar17 + 1;
          } while (*pbVar14 != 0);
        }
        piVar23[3] = (int)puVar16;
        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);
        *pbVar25 = *pbVar25 | 0x20;
        puVar16[8] = puVar16[8] + 1;
        piVar15[2] = piVar15[2] | 0x2000;
      }
    }
    iVar13 = iVar13 + 1;
    piVar23 = piVar23 + 0x11;
  } while (iVar13 < *piVar9);
LAB_000cfecc:
  if (2 < (uint)puVar16[8]) {
LAB_000cffd0:
    pcVar21 = "multiple references to recursive table: %s";
    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];
LAB_000cfd64:
    FUN_00074ee0(piVar7,pcVar21,pbVar14);
    local_48 = 2;
    goto LAB_000cfaec;
  }
  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";
  iVar13 = piVar7[0x41];
  piVar7[0x41] = (int)piVar8;
  iVar17 = piVar15[0xd];
  *(int *)(iVar17 + 0x40) = piVar15[0x10];
  if (param_1[2] != 0) {
    FUN_0004a550();
  }
  *(undefined4 *)(iVar17 + 0x40) = 0;
LAB_000cfc05:
  piVar7[0x41] = (int)piVar8;
  piVar9 = piVar15;
  do {
    piVar23 = piVar9;
    piVar9 = (int *)piVar23[0xd];
  } while (piVar9 != (int *)0x0);
  piVar23 = (int *)*piVar23;
  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {
    iVar17 = *piVar23;
    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];
    if (iVar17 != iVar10) {
      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,
                   iVar10);
      piVar7[0x41] = iVar13;
      local_48 = 2;
      goto LAB_000cfaec;
    }
  }
  FUN_000ae410(puVar16 + 1);
  if (bVar11 < 2) {
    pcVar21 = "multiple recursive references: %s";
    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {
      pcVar21 = "recursive reference in a subquery: %s";
    }
    piVar8[iVar28 * 4 + 5] = (int)pcVar21;
    if (param_1[2] != 0) {
      FUN_0004a550();
    }
  }
  piVar8[iVar28 * 4 + 5] = 0;
  piVar7[0x41] = iVar13;
LAB_000cfc82:
  if (piVar27[4] == 0) {
    if (piVar27[2] == 0) {
LAB_000cfd90:
      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||
         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;
    }
    else {
LAB_000cfcb3:
      puVar16 = (undefined4 *)FUN_000cf6d0();
      piVar27[4] = (int)puVar16;
      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;
      if (0xfffe < (uint)puVar16[8]) {
        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);
        piVar27[4] = 0;
        local_48 = 2;
        goto LAB_000cfaec;
      }
      puVar16[8] = puVar16[8] + 1;
      if (puVar16[0xe] == 0) {
        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {
          pcVar21 = "\'%s\' is not a function";
          goto LAB_000cfad7;
        }
        if (puVar16[3] == 0) goto LAB_000cfc89;
      }
      iVar28 = FUN_000c26b0();
      if (iVar28 != 0) goto LAB_000cfae4;
      iVar28 = FUN_0005a810();
      piVar27[5] = iVar28;
      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);
      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;
      if ((piVar27[5] != 0) && (param_1[2] != 0)) {
        FUN_0004a550();
      }
      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;
    }
  }
LAB_000cfc89:
  iVar28 = FUN_000757e0();
  if (iVar28 != 0) goto LAB_000cfae4;
LAB_000cf910:
  local_88 = (byte *)((int)local_88 + 1);
  piVar27 = piVar27 + 0x11;
  if (*piVar5 <= (int)local_88) goto LAB_000cf928;
  goto LAB_000cf800;
LAB_000d07cd:
  FUN_00056520();
  *param_2 = (int)piVar27;
LAB_000d07de:
  local_48 = 0;
  if (piVar27 == (int *)0x0) goto LAB_000cfaec;
  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {
    if (((uint)local_40 & 0x200004) != 0) {
      param_2[2] = param_2[2] | 0x40000;
    }
    goto LAB_000cfaec;
  }
  pcVar21 = "too many columns in result set";
LAB_000cfad7:
  FUN_00074ee0(piVar2,pcVar21);
LAB_000cfae4:
  local_48 = 2;
LAB_000cfaec:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_48;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00116110();
}


CALL 0x00036abd
ADD EAX,0xac703
PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x7c
MOV dword ptr [ESP + 0x30],EAX
MOV EDI,dword ptr [ESP + 0x90]
MOV EAX,dword ptr [ESP + 0x94]
MOV dword ptr [ESP + 0x40],EDI
MOV EDI,dword ptr [EDI]
MOV dword ptr [ESP + 0x3c],EAX
MOV ESI,dword ptr GS:[0x14]
MOV dword ptr [ESP + 0x6c],ESI
XOR ESI,ESI
MOV ESI,dword ptr [EDI]
MOV dword ptr [ESP + 0x10],EDI
MOV EDI,EAX
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x34],ESI
MOV EDX,EAX
OR EDX,0x40
MOV dword ptr [EDI + 0x8],EDX
CMP byte ptr [ESI + 0x4d],0x0
JNZ 0x000cfae4
AND EAX,0x40
MOV dword ptr [ESP + 0x44],EAX
JNZ 0x000cff50
MOV EAX,dword ptr [ESP + 0x3c]
MOV EDI,dword ptr [EAX + 0x20]
MOV ESI,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x40]
MOV dword ptr [ESP + 0x20],EDI
MOV dword ptr [ESP + 0x54],ESI
TEST EAX,EAX
JZ 0x000cf7b3
MOV EDI,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [EDI + 0x104]
MOV dword ptr [EAX + 0x4],EDX
MOV dword ptr [EDI + 0x104],EAX
MOV ESI,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,ESI
LEA EDI,[ESI + 0x8]
CALL 0x00039910
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x50],EDI
TEST EAX,EAX
JLE 0x000cf928
MOV EAX,dword ptr [ESP + 0x30]
MOV EBP,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x4],0x0
LEA ESI,[EAX + 0xfffa503a]
LEA EAX,[EAX + 0xfffb241c]
MOV dword ptr [ESP + 0x48],ESI
MOV dword ptr [ESP + 0x4c],EAX
LEA ESI,[ESI]
NOP
MOVZX EAX,byte ptr [EBP + 0x25]
MOV byte ptr [ESP + 0x2c],AL
TEST AL,0x20
JNZ 0x000cf910
MOV EAX,dword ptr [EBP + 0x4]
TEST EAX,EAX
JNZ 0x000cfc82
MOV EAX,dword ptr [EBP + 0x8]
MOV dword ptr [ESP + 0x14],EAX
TEST EAX,EAX
JZ 0x000cfd80
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [EAX + 0x104]
MOV dword ptr [ESP + 0x8],EAX
TEST EAX,EAX
JZ 0x000cf8f2
MOV dword ptr [ESP + 0x1c],EBP
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x18],EAX
TEST EAX,EAX
JLE 0x000cf8db
MOV EAX,dword ptr [ESP + 0x14]
MOV ESI,dword ptr [ESP + 0x30]
XOR EDI,EDI
MOVZX EAX,byte ptr [EAX]
LEA EBX,[ESI + 0xfffb08b8]
MOV byte ptr [ESP + 0x28],AL
MOVZX EAX,byte ptr [ESI + EAX*0x1 + 0xfffb08b8]
MOV byte ptr [ESP + 0x24],AL
NOP
MOV EAX,dword ptr [ESP + 0x8]
MOV ECX,EDI
MOVZX EDX,byte ptr [ESP + 0x24]
SHL ECX,0x4
MOV ESI,dword ptr [EAX + ECX*0x1 + 0x8]
MOVZX EAX,byte ptr [ESI]
CMP DL,byte ptr [EBX + EAX*0x1]
JNZ 0x000cf8d2
CMP byte ptr [ESP + 0x28],0x0
JZ 0x000cfd40
MOV EAX,0x1
MOV dword ptr [ESP + 0xc],ECX
JMP 0x000cf8bb
ADD EAX,0x1
TEST DL,DL
JZ 0x000cfb10
MOV ECX,dword ptr [ESP + 0x14]
MOVZX EBP,byte ptr [ECX + EAX*0x1]
MOVZX ECX,byte ptr [ESI + EAX*0x1]
MOV EDX,EBP
MOVZX ECX,byte ptr [EBX + ECX*0x1]
CMP byte ptr [EBX + EBP*0x1],CL
JZ 0x000cf8b0
ADD EDI,0x1
CMP dword ptr [ESP + 0x18],EDI
JNZ 0x000cf880
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x4]
MOV dword ptr [ESP + 0x8],EAX
TEST EAX,EAX
JNZ 0x000cf84a
MOV EBP,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EBP + 0x10]
TEST EAX,EAX
JZ 0x000cfcb3
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,EBP
CALL 0x000757e0
TEST EAX,EAX
JNZ 0x000cfae4
MOV EDI,dword ptr [ESP + 0x20]
ADD dword ptr [ESP + 0x4],0x1
ADD EBP,0x44
MOV EAX,dword ptr [ESP + 0x4]
CMP dword ptr [EDI],EAX
JG 0x000cf800
MOV EAX,dword ptr [ESP + 0x34]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000cfae4
MOV EAX,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [EAX + 0x20]
LEA EDI,[EAX + 0x4c]
CMP dword ptr [EAX],0x1
MOV dword ptr [ESP + 0x24],EAX
MOV dword ptr [ESP + 0x4c],EDI
JLE 0x000d008f
LEA EAX,[ESP + 0x64]
MOV dword ptr [ESP + 0x2c],0x1
MOV dword ptr [ESP + 0x38],EAX
MOV ESI,dword ptr [ESP + 0x4c]
MOV EAX,dword ptr [ESI + 0x10]
MOV EBX,dword ptr [ESI + -0x34]
MOV dword ptr [ESP + 0x40],EAX
TEST EBX,EBX
JZ 0x000d02f0
TEST EAX,EAX
JZ 0x000d02f0
MOVZX EDX,byte ptr [ESI + 0x24]
XOR EAX,EAX
MOV ECX,dword ptr [ESI + 0x2c]
MOV EDI,EDX
AND EDI,0x20
SETNZ AL
AND EDX,0x4
MOV dword ptr [ESP + 0x48],EAX
JNZ 0x000d0363
MOV EAX,dword ptr [ESP + 0x4c]
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [ESP + 0x28],EAX
TEST ECX,ECX
JZ 0x000cf9e5
TEST EAX,EAX
JNZ 0x000d08a1
MOV EAX,EDI
TEST AL,AL
JNZ 0x000d041d
MOV ESI,dword ptr [ESP + 0x3c]
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,dword ptr [ESI + 0x24]
MOV EAX,dword ptr [EAX]
CALL 0x000569c0
MOV dword ptr [ESI + 0x24],EAX
MOV EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [EAX + 0x2c],0x0
MOV EAX,dword ptr [EAX + 0x30]
MOV dword ptr [ESP + 0x28],EAX
MOV EDX,dword ptr [ESP + 0x28]
TEST EDX,EDX
JZ 0x000d02f0
MOV EAX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x1c],0x0
MOV EAX,dword ptr [EAX + 0x4]
TEST EAX,EAX
JLE 0x000d02f0
LEA ESI,[ESI]
NOP
MOV EAX,dword ptr [ESP + 0x28]
MOV ESI,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [EAX]
MOV EDI,dword ptr [EAX + ESI*0x8]
MOV EAX,dword ptr [ESP + 0x40]
MOV ESI,dword ptr [EAX + 0x4]
MOVSX EAX,word ptr [EAX + 0x2a]
MOV dword ptr [ESP + 0x8],EDI
MOV dword ptr [ESP + 0xc],ESI
MOV dword ptr [ESP + 0x14],EAX
TEST EAX,EAX
JLE 0x000cfac6
MOV ESI,dword ptr [ESP + 0x30]
MOVZX EAX,byte ptr [EDI]
XOR EBX,EBX
MOVZX EAX,byte ptr [ESI + EAX*0x1 + 0xfffb08b8]
LEA ECX,[ESI + 0xfffb08b8]
MOV byte ptr [ESP + 0x18],AL
LEA ESI,[ESI]
NOP
MOV EAX,EBX
MOV EDI,dword ptr [ESP + 0xc]
SHL EAX,0x4
MOV EDI,dword ptr [EDI + EAX*0x1]
MOVZX EAX,byte ptr [ESP + 0x18]
MOVZX ESI,byte ptr [EDI]
MOV EDX,ESI
CMP AL,byte ptr [ECX + ESI*0x1]
JNZ 0x000cfabd
TEST DL,DL
JZ 0x000cfff4
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,EDI
MOV dword ptr [ESP + 0x4],EBX
MOV ESI,ECX
JMP 0x000cfaa0
TEST CL,CL
JZ 0x000cfff0
ADD EAX,0x1
ADD EDX,0x1
MOVZX EBP,byte ptr [EAX]
MOVZX EDI,byte ptr [EDX]
MOV ECX,EBP
MOVZX EBX,byte ptr [ESI + EDI*0x1]
CMP byte ptr [ESI + EBP*0x1],BL
JZ 0x000cfa98
MOV EBX,dword ptr [ESP + 0x4]
MOV ECX,ESI
ADD EBX,0x1
CMP EBX,dword ptr [ESP + 0x14]
JNZ 0x000cfa60
SUB ESP,0x4
PUSH dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffb252c]
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00074ee0
ADD ESP,0x10
MOV dword ptr [ESP + 0x44],0x2
MOV EDI,dword ptr [ESP + 0x6c]
XOR EDI,dword ptr GS:[0x14]
MOV EAX,dword ptr [ESP + 0x44]
JNZ 0x000d08da
ADD ESP,0x7c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV ECX,dword ptr [ESP + 0xc]
ADD ECX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ECX + 0x14]
MOV EBP,dword ptr [ESP + 0x1c]
MOV dword ptr [ESP + 0xc],ECX
TEST EAX,EAX
JNZ 0x000cfd60
TEST byte ptr [ESP + 0x2c],0x4
JNZ 0x000cff30
MOV EAX,dword ptr [ESP + 0x38]
MOV EDX,0x50
XOR ECX,ECX
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x14],EAX
CALL 0x00044520
MOV ESI,EAX
MOV dword ptr [EBP + 0x10],EAX
TEST EAX,EAX
JZ 0x000cfae4
MOV dword ptr [EAX + 0x20],0x1
MOV EAX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [EAX + 0x8]
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x00044980
OR dword ptr [ESI + 0x24],0x42
MOV ECX,0xffffffff
MOV dword ptr [ESI],EAX
MOV EAX,0xc8
MOV word ptr [ESI + 0x2c],AX
MOV EAX,dword ptr [ESP + 0xc]
MOV word ptr [ESI + 0x28],CX
XOR ECX,ECX
MOV EDX,dword ptr [EAX + 0x10]
MOV EAX,dword ptr [ESP + 0x14]
CALL 0x0005a810
MOV dword ptr [EBP + 0x14],EAX
MOV EDX,EAX
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x14]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000cfae4
MOVZX EAX,byte ptr [EDX + 0x4]
MOV byte ptr [ESP + 0x14],AL
SUB EAX,0x7b
MOV byte ptr [ESP + 0x1c],AL
CMP AL,0x1
JBE 0x000cfdf0
CMP dword ptr [ESI + 0x20],0x2
JA 0x000cffd0
MOV EAX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x48]
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x14],EBX
MOV EAX,dword ptr [ESP + 0x38]
MOV EBX,dword ptr [EAX + 0x104]
MOV dword ptr [EAX + 0x104],EDX
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x000cfc05
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x40]
CALL 0x0004a550
MOV EDX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [EAX + 0x104],EDX
MOV EDX,dword ptr [ESP + 0x18]
JMP 0x000cfc22
MOV EDX,EAX
MOV EAX,dword ptr [EDX + 0x34]
TEST EAX,EAX
JNZ 0x000cfc20
MOV EAX,dword ptr [EDX]
MOV EDX,dword ptr [ESP + 0xc]
MOV EDX,dword ptr [EDX + 0xc]
TEST EDX,EDX
JZ 0x000d0340
TEST EAX,EAX
JZ 0x000cfc4a
MOV EAX,dword ptr [EAX]
MOV ECX,dword ptr [EDX]
CMP EAX,ECX
JNZ 0x000d0300
SUB ESP,0xc
LEA EAX,[ESI + 0x4]
LEA ECX,[ESI + 0x2a]
PUSH EAX
MOV EAX,dword ptr [ESP + 0x48]
MOV EAX,dword ptr [EAX]
CALL 0x000ae410
ADD ESP,0x10
CMP byte ptr [ESP + 0x1c],0x1
JBE 0x000cff60
MOV EAX,dword ptr [ESP + 0xc]
MOV dword ptr [EAX + 0x14],0x0
MOV EAX,dword ptr [ESP + 0x38]
MOV dword ptr [EAX + 0x104],EBX
MOV ESI,dword ptr [EBP + 0x10]
TEST ESI,ESI
JZ 0x000cfca8
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,EBP
CALL 0x000757e0
TEST EAX,EAX
JZ 0x000cf910
JMP 0x000cfae4
MOV EBX,dword ptr [EBP + 0x8]
TEST EBX,EBX
JZ 0x000cfd90
MOV EAX,dword ptr [ESP + 0x10]
MOV ECX,EBP
XOR EDX,EDX
CALL 0x000cf6d0
MOV EBX,EAX
MOV dword ptr [EBP + 0x10],EAX
TEST EAX,EAX
JZ 0x000cfae4
MOV EAX,dword ptr [EAX + 0x20]
CMP EAX,0xfffe
JA 0x000d0840
ADD EAX,0x1
MOV dword ptr [EBX + 0x20],EAX
MOV EAX,dword ptr [EBX + 0x38]
TEST EAX,EAX
JZ 0x000cfdd0
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,EBX
CALL 0x000c26b0
TEST EAX,EAX
JNZ 0x000cfae4
MOV EDX,dword ptr [EBX + 0xc]
MOV EAX,dword ptr [ESP + 0x34]
XOR ECX,ECX
CALL 0x0005a810
MOV dword ptr [EBP + 0x14],EAX
MOV EAX,0xffffffff
MOVZX ESI,word ptr [EBX + 0x2a]
MOV word ptr [EBX + 0x2a],AX
MOV EDX,dword ptr [EBP + 0x14]
TEST EDX,EDX
JZ 0x000cfd34
MOV EAX,dword ptr [ESP + 0x40]
MOV EDI,dword ptr [EAX + 0x8]
TEST EDI,EDI
JZ 0x000cfd34
CALL 0x0004a550
MOV word ptr [EBX + 0x2a],SI
JMP 0x000cfc89
ADD ECX,dword ptr [ESP + 0x8]
MOV EBP,dword ptr [ESP + 0x1c]
MOV EAX,dword ptr [ECX + 0x14]
MOV dword ptr [ESP + 0xc],ECX
TEST EAX,EAX
JZ 0x000cfb2b
LEA ESI,[ESI]
NOP
SUB ESP,0x4
PUSH ESI
PUSH EAX
PUSH dword ptr [ESP + 0x44]
CALL 0x00074ee0
ADD ESP,0x10
MOV dword ptr [ESP + 0x44],0x2
JMP 0x000cfaec
MOV EDX,dword ptr [EBP + 0x10]
TEST EDX,EDX
JNZ 0x000cfc89
LEA ESI,[ESI]
NOP
MOV EDX,dword ptr [EBP + 0x14]
TEST EDX,EDX
JZ 0x000cfdaf
MOV EAX,dword ptr [ESP + 0x40]
MOV ECX,dword ptr [EAX + 0x8]
TEST ECX,ECX
JZ 0x000cfdaf
CALL 0x0004a550
TEST EAX,EAX
JNZ 0x000cfae4
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,EBP
CALL 0x000ae800
TEST EAX,EAX
JZ 0x000cfc89
JMP 0x000cfae4
MOV EAX,dword ptr [EBP + 0x8]
TEST byte ptr [EBP + 0x25],0x4
JNZ 0x000d0350
MOV EAX,dword ptr [EBX + 0xc]
TEST EAX,EAX
JNZ 0x000cfcec
JMP 0x000cfc89
MOV EAX,dword ptr [EDX + 0x20]
MOV EDX,dword ptr [EAX]
MOV dword ptr [ESP + 0x14],EAX
TEST EDX,EDX
JLE 0x000cfecc
LEA ECX,[EAX + 0xc]
XOR EAX,EAX
MOV dword ptr [ESP + 0x58],EBP
MOV dword ptr [ESP + 0x24],ESI
MOV EBP,EAX
MOV dword ptr [ESP + 0x5c],EDI
JMP 0x000cfe32
MOV EAX,dword ptr [ESP + 0x14]
ADD EBP,0x1
ADD ECX,0x44
CMP EBP,dword ptr [EAX]
JGE 0x000cfec0
MOV EAX,dword ptr [ECX]
TEST EAX,EAX
JNZ 0x000cfe20
MOV EDI,dword ptr [ECX + 0x4]
TEST EDI,EDI
JZ 0x000cfe20
MOV EAX,dword ptr [ESP + 0xc]
MOVZX EDX,byte ptr [EDI]
MOV ESI,dword ptr [EAX + 0x8]
MOV EAX,EDX
MOVZX EDX,byte ptr [EBX + EDX*0x1]
MOV dword ptr [ESP + 0x28],ESI
MOVZX ESI,byte ptr [ESI]
CMP byte ptr [EBX + ESI*0x1],DL
JNZ 0x000cfe20
TEST AL,AL
JZ 0x000cffa8
MOV dword ptr [ESP + 0x2c],EBP
MOV EAX,0x1
MOV EBP,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x28],ECX
JMP 0x000cfe8b
ADD EAX,0x1
TEST DL,DL
JZ 0x000cffa0
MOVZX ESI,byte ptr [EDI + EAX*0x1]
MOVZX ECX,byte ptr [EBP + EAX*0x1]
MOV EDX,ESI
MOVZX ECX,byte ptr [EBX + ECX*0x1]
CMP byte ptr [EBX + ESI*0x1],CL
JZ 0x000cfe80
MOV EBP,dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x14]
ADD EBP,0x1
ADD ECX,0x44
CMP EBP,dword ptr [EAX]
JL 0x000cfe32
LEA ESI,[ESI]
MOV EBP,dword ptr [ESP + 0x58]
MOV ESI,dword ptr [ESP + 0x24]
MOV EDI,dword ptr [ESP + 0x5c]
CMP dword ptr [ESI + 0x20],0x2
JA 0x000cffd0
MOV EAX,dword ptr [ESP + 0xc]
MOV EBX,dword ptr [ESP + 0x48]
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [EAX + 0x14],EBX
MOV EAX,dword ptr [ESP + 0x38]
MOV EBX,dword ptr [EAX + 0x104]
MOV dword ptr [EAX + 0x104],EDX
MOV EAX,dword ptr [ESP + 0x18]
MOV ECX,dword ptr [EAX + 0x34]
MOV EAX,dword ptr [EAX + 0x40]
MOV dword ptr [ECX + 0x40],EAX
MOV EAX,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX + 0x8]
TEST EAX,EAX
JZ 0x000cff20
MOV EAX,dword ptr [ESP + 0x40]
MOV EDX,ECX
MOV dword ptr [ESP + 0x14],ECX
CALL 0x0004a550
MOV ECX,dword ptr [ESP + 0x14]
MOV dword ptr [ECX + 0x40],0x0
JMP 0x000cfc05
SUB ESP,0x4
PUSH dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffa4ffd]
JMP 0x000cfd64
MOV dword ptr [ESP + 0x44],0x1
JMP 0x000cfaec
MOV EDX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x30]
MOV EDI,dword ptr [ESP + 0xc]
TEST byte ptr [EDX + 0x9],0x20
LEA EAX,[EAX + 0xfffb23f8]
CMOVZ EAX,dword ptr [ESP + 0x4c]
MOV dword ptr [EDI + 0x14],EAX
MOV EAX,dword ptr [ESP + 0x40]
MOV EDI,dword ptr [EAX + 0x8]
TEST EDI,EDI
JZ 0x000cfc6d
CALL 0x0004a550
JMP 0x000cfc6d
MOV EBP,dword ptr [ESP + 0x2c]
MOV ECX,dword ptr [ESP + 0x28]
IMUL EAX,EBP,0x44
MOV EDI,dword ptr [ESP + 0x24]
MOV ESI,dword ptr [ESP + 0x14]
MOV dword ptr [ECX + 0xc],EDI
OR byte ptr [ESI + EAX*0x1 + 0x2d],0x20
MOV EAX,dword ptr [ESP + 0x18]
ADD dword ptr [EDI + 0x20],0x1
OR dword ptr [EAX + 0x8],0x2000
JMP 0x000cfe20
SUB ESP,0x4
MOV EAX,EDI
MOV ESI,dword ptr [ESP + 0xc]
SHL EAX,0x4
PUSH dword ptr [ESI + EAX*0x1 + 0x8]
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffb2444]
JMP 0x000cfd64
MOV EBX,dword ptr [ESP + 0x4]
MOV EDX,dword ptr [ESP + 0x2c]
SUB ESP,0x8
PUSH dword ptr [ESP + 0x40]
MOV ESI,EDX
LEA EAX,[ESP + 0x6c]
PUSH EAX
MOV ECX,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x00039c70
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000cfac6
SUB ESP,0xc
MOV EAX,dword ptr [ESP + 0x48]
ADD EAX,0x24
PUSH EAX
PUSH dword ptr [ESP + 0x58]
PUSH EBX
PUSH dword ptr [ESP + 0x44]
PUSH dword ptr [ESP + 0x80]
MOV EAX,dword ptr [ESP + 0x30]
MOV ECX,dword ptr [ESP + 0x80]
MOV EDX,dword ptr [ESP + 0x44]
CALL 0x00075e20
ADD dword ptr [ESP + 0x3c],0x1
MOV EAX,dword ptr [ESP + 0x3c]
ADD ESP,0x20
MOV EDI,dword ptr [ESP + 0x28]
CMP EAX,dword ptr [EDI + 0x4]
JL 0x000cfa10
LEA ESI,[ESI]
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0x24]
ADD dword ptr [ESP + 0x4c],0x44
ADD dword ptr [ESP + 0x2c],0x1
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x4],EAX
SUB EAX,0x1
CMP ESI,EAX
JL 0x000cf961
MOV EAX,dword ptr [ESP + 0x54]
MOV EBP,dword ptr [EAX]
TEST EBP,EBP
JLE 0x000d08ec
MOV EBX,dword ptr [ESP + 0x54]
MOV ESI,dword ptr [EBX + 0x4]
MOVZX EDI,byte ptr [ESI]
MOV EAX,EDI
CMP AL,0xa8
JZ 0x000d08df
MOV EAX,ESI
MOV dword ptr [ESP + 0x4],ESI
ADD EBX,0x18
XOR EDX,EDX
MOV ECX,EDI
XOR ESI,ESI
JMP 0x000d00e3
ADD EDX,0x1
OR ESI,dword ptr [EAX + 0x4]
CMP EDX,EBP
JZ 0x000d0814
MOV EAX,dword ptr [EBX]
ADD EBX,0x14
MOVZX ECX,byte ptr [EAX]
CMP CL,0xa8
JZ 0x000d00f0
CMP CL,0x82
JNZ 0x000d00c8
MOV ECX,dword ptr [EAX + 0x10]
CMP byte ptr [ECX],0xa8
JNZ 0x000d00c8
MOV dword ptr [ESP + 0x4c],ESI
MOV ESI,dword ptr [ESP + 0x4]
MOV EAX,dword ptr [ESP + 0x10]
MOV dword ptr [ESP + 0x48],0x0
XOR EBP,EBP
MOV ECX,ESI
MOV EAX,dword ptr [EAX]
MOV EAX,dword ptr [EAX + 0x1c]
AND EAX,0x44
MOV dword ptr [ESP + 0x38],EAX
MOV EAX,dword ptr [ESP + 0x54]
ADD EAX,0x4
MOV dword ptr [ESP + 0x40],EAX
MOV EAX,dword ptr [ESP + 0x30]
LEA EAX,[EAX + 0xfffa50a5]
MOV dword ptr [ESP + 0x58],EAX
MOV EAX,EDI
JMP 0x000d01af
CMP AL,0x82
JNZ 0x000d0148
MOV EAX,dword ptr [ECX + 0x10]
CMP byte ptr [EAX],0xa8
JZ 0x000d0820
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,EBP
MOV EAX,dword ptr [EAX]
CALL 0x000675b0
MOV EBP,EAX
TEST EAX,EAX
JZ 0x000d0182
MOV ESI,dword ptr [ESP + 0x40]
MOV EAX,dword ptr [EAX]
MOV EDX,dword ptr [ESI + 0x4]
LEA EAX,[EAX + EAX*0x4]
LEA EAX,[EBP + EAX*0x4]
MOV dword ptr [EAX + -0xc],EDX
MOV EDX,dword ptr [ESI + 0x8]
MOV dword ptr [EAX + -0x8],EDX
MOV dword ptr [ESI + 0x4],0x0
MOV dword ptr [ESI + 0x8],0x0
MOV EAX,dword ptr [ESP + 0x40]
MOV dword ptr [EAX],0x0
MOV EDI,dword ptr [ESP + 0x54]
ADD dword ptr [ESP + 0x48],0x1
ADD dword ptr [ESP + 0x40],0x14
MOV EAX,dword ptr [ESP + 0x48]
CMP dword ptr [EDI],EAX
JLE 0x000d07cd
MOV EAX,dword ptr [ESP + 0x40]
MOV ECX,dword ptr [EAX]
MOVZX EAX,byte ptr [ECX]
MOV EDI,dword ptr [ECX + 0x4]
OR dword ptr [ESP + 0x4c],EDI
CMP AL,0xa8
JNZ 0x000d0138
MOV EAX,dword ptr [ESP + 0x20]
MOV dword ptr [ESP + 0x18],0x0
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JLE 0x000d0870
MOV EAX,dword ptr [ESP + 0x50]
MOV dword ptr [ESP + 0x24],0x0
MOV dword ptr [ESP + 0x14],0x0
MOV dword ptr [ESP + 0xc],EAX
LEA ESI,[ESI]
MOV EAX,dword ptr [ESP + 0xc]
MOV ESI,dword ptr [EAX + 0x10]
MOV EDI,dword ptr [EAX + 0x14]
MOV EAX,dword ptr [EAX + 0xc]
MOV dword ptr [ESP + 0x8],ESI
MOV dword ptr [ESP + 0x4],EDI
MOV dword ptr [ESP + 0x28],EAX
TEST EAX,EAX
JZ 0x000d0760
MOV EAX,dword ptr [ESP + 0x34]
CMP byte ptr [EAX + 0x4d],0x0
JNZ 0x000d02b7
MOV EAX,dword ptr [ESP + 0x4]
TEST EAX,EAX
JZ 0x000d0231
TEST byte ptr [EAX + 0x9],0x8
JNZ 0x000d07c0
MOV EDI,dword ptr [ESP + 0x18]
TEST EDI,EDI
JZ 0x000d0438
MOV EDX,dword ptr [ESP + 0x28]
MOV ESI,dword ptr [ESP + 0x30]
MOVZX ECX,byte ptr [EDI]
MOVZX EDX,byte ptr [EDX]
LEA EBX,[ESI + 0xfffb08b8]
MOVZX EDX,byte ptr [ESI + EDX*0x1 + 0xfffb08b8]
CMP byte ptr [ESI + ECX*0x1 + 0xfffb08b8],DL
JNZ 0x000d029d
TEST CL,CL
JZ 0x000d0438
MOV EDX,dword ptr [ESP + 0x28]
MOV dword ptr [ESP + 0x4],EDI
JMP 0x000d0280
TEST CL,CL
JZ 0x000d0438
ADD dword ptr [ESP + 0x4],0x1
MOV EAX,dword ptr [ESP + 0x4]
ADD EDX,0x1
MOVZX ESI,byte ptr [EDX]
MOVZX EDI,byte ptr [EAX]
MOVZX EAX,byte ptr [EBX + ESI*0x1]
MOV ECX,EDI
CMP byte ptr [EBX + EDI*0x1],AL
JZ 0x000d0278
MOV ESI,dword ptr [ESP + 0x20]
ADD dword ptr [ESP + 0x14],0x1
ADD dword ptr [ESP + 0xc],0x44
MOV EAX,dword ptr [ESP + 0x14]
CMP dword ptr [ESI],EAX
JG 0x000d01f0
MOV EAX,dword ptr [ESP + 0x24]
TEST EAX,EAX
JNZ 0x000d018c
MOV EAX,dword ptr [ESP + 0x18]
TEST EAX,EAX
JZ 0x000d0870
SUB ESP,0x4
PUSH EAX
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffa5014]
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00074ee0
ADD ESP,0x10
JMP 0x000d018c
MOV ESI,dword ptr [ESP + 0x2c]
JMP 0x000d0070
SUB ESP,0xc
PUSH ECX
PUSH EAX
MOV EAX,EDI
MOV ESI,dword ptr [ESP + 0x1c]
SHL EAX,0x4
PUSH dword ptr [ESI + EAX*0x1 + 0x8]
MOV EAX,dword ptr [ESP + 0x48]
LEA EAX,[EAX + 0xfffb2470]
PUSH EAX
MOV EDI,dword ptr [ESP + 0x54]
PUSH EDI
CALL 0x00074ee0
ADD ESP,0x20
MOV dword ptr [EDI + 0x104],EBX
MOV dword ptr [ESP + 0x44],0x2
JMP 0x000cfaec
MOV EDX,EAX
JMP 0x000cfc4a
SUB ESP,0x4
PUSH EAX
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffa4ffd]
JMP 0x000cfad7
TEST ECX,ECX
JNZ 0x000d08b3
MOV ECX,dword ptr [ESI + 0x30]
TEST ECX,ECX
JNZ 0x000d08b3
MOV EAX,dword ptr [ESP + 0x3c]
XOR EBX,EBX
LEA ESI,[ESP + 0x60]
LEA EBP,[EAX + 0x24]
MOV EAX,dword ptr [ESP + 0x40]
CMP word ptr [EAX + 0x2a],0x0
JLE 0x000d02f0
MOV EAX,EDI
MOV dword ptr [ESP + 0x4],EBP
MOV EDI,dword ptr [ESP + 0x40]
MOV byte ptr [ESP + 0x8],AL
MOV EBP,dword ptr [ESP + 0x2c]
JMP 0x000d03bb
MOVSX EAX,word ptr [EDI + 0x2a]
ADD EBX,0x1
CMP EBX,EAX
JGE 0x000d040c
SUB ESP,0x8
MOV EAX,EBX
MOV EDX,EBP
SHL EAX,0x4
ADD EAX,dword ptr [EDI + 0x4]
PUSH dword ptr [ESP + 0x40]
PUSH ESI
MOV ECX,dword ptr [EAX]
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x00039c70
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000d03b0
SUB ESP,0xc
PUSH dword ptr [ESP + 0x10]
PUSH dword ptr [ESP + 0x58]
PUSH EBX
PUSH EBP
PUSH dword ptr [ESP + 0x80]
MOV ECX,dword ptr [ESP + 0x80]
MOV EDX,dword ptr [ESP + 0x44]
MOV EAX,dword ptr [ESP + 0x30]
CALL 0x00075e20
ADD ESP,0x20
JMP 0x000d03b0
MOV EAX,dword ptr [ESP + 0x4c]
MOVZX EDI,byte ptr [ESP + 0x8]
MOV ECX,dword ptr [EAX + 0x2c]
JMP 0x000cf99d
MOV EDI,dword ptr [ESP + 0x4c]
MOV EAX,ECX
MOV EDX,dword ptr [EDI + 0x28]
CALL 0x00039da0
MOV ECX,dword ptr [EDI + 0x2c]
JMP 0x000cf9be
MOV EAX,dword ptr [ESP + 0x8]
MOV EAX,dword ptr [EAX + 0x48]
MOV dword ptr [ESP + 0x4],EAX
TEST EAX,EAX
JZ 0x000d08c7
MOV EDI,dword ptr [ESP + 0x34]
MOV EDX,EAX
MOV EAX,EDI
CALL 0x0004c580
TEST EAX,EAX
JS 0x000d07a0
SHL EAX,0x4
ADD EAX,dword ptr [EDI + 0x10]
MOV dword ptr [ESP + 0x4],0x0
MOV EAX,dword ptr [EAX]
MOV dword ptr [ESP + 0x2c],EAX
MOV EAX,dword ptr [ESP + 0x8]
CMP word ptr [EAX + 0x2a],0x0
JLE 0x000d029d
MOV EAX,dword ptr [ESP + 0x18]
TEST EAX,EAX
MOV EAX,dword ptr [ESP + 0x4]
SETNZ DL
TEST EAX,EAX
SETNZ AL
XOR ESI,ESI
AND EDX,EAX
MOV byte ptr [ESP + 0x1c],DL
JMP 0x000d063e
MOV EAX,dword ptr [ESP + 0x3c]
TEST byte ptr [EAX + 0xa],0x2
JNZ 0x000d04bc
TEST byte ptr [EBX + 0xf],0x2
JNZ 0x000d062b
MOV EAX,dword ptr [ESP + 0x14]
TEST EAX,EAX
JLE 0x000d04f4
MOV EBX,dword ptr [ESP + 0x18]
TEST EBX,EBX
JNZ 0x000d04f4
MOV EAX,dword ptr [ESP + 0xc]
TEST byte ptr [EAX + 0x24],0x4
JNZ 0x000d06a0
MOV EAX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [EAX + 0x30]
TEST EAX,EAX
JZ 0x000d04f4
MOV EDX,EDI
CALL 0x0004bf80
TEST EAX,EAX
JNS 0x000d0623
MOV EAX,dword ptr [ESP + 0x34]
MOV ECX,EDI
MOV EDX,0x3b
CALL 0x00045020
CMP dword ptr [ESP + 0x38],0x4
MOV EBX,EAX
JZ 0x000d06d0
MOV EAX,dword ptr [ESP + 0x20]
CMP dword ptr [EAX],0x1
JLE 0x000d0578
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,0x3b
CALL 0x00045020
SUB ESP,0xc
MOV EDX,0x82
PUSH EBX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00075cf0
ADD ESP,0x10
MOV ECX,dword ptr [ESP + 0x2c]
MOV EBX,EAX
TEST ECX,ECX
JZ 0x000d0578
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,0x3b
CALL 0x00045020
SUB ESP,0xc
MOV EDX,0x82
PUSH EBX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00075cf0
ADD ESP,0x10
MOV EBX,EAX
MOV dword ptr [ESP + 0x24],0x0
MOV EAX,dword ptr [ESP + 0x10]
MOV EDX,EBP
MOV ECX,EBX
MOV EAX,dword ptr [EAX]
CALL 0x000675b0
MOV dword ptr [ESP + 0x64],EDI
MOV EBP,EAX
TEST EDI,EDI
JZ 0x000d0750
SUB ESP,0xc
PUSH EDI
MOV EBX,dword ptr [ESP + 0x40]
CALL 0x000153b0
ADD ESP,0x10
AND EAX,0x3fffffff
MOV dword ptr [ESP + 0x68],EAX
TEST EBP,EBP
JZ 0x000d0610
LEA ECX,[ESP + 0x64]
SUB ESP,0xc
MOV EDX,EBP
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x0004b9c0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0x3c]
TEST byte ptr [EAX + 0x9],0x8
JZ 0x000d0610
MOV EAX,dword ptr [EBP]
MOV EDX,dword ptr [ESP + 0x4]
LEA EBX,[EAX + -0x1]
TEST EDX,EDX
JZ 0x000d0770
MOV ECX,dword ptr [EDX]
LEA EAX,[ESI + ESI*0x4]
LEA EAX,[ECX + EAX*0x4]
MOV EDX,dword ptr [EAX + 0xc]
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x00044980
LEA EDX,[EBX + EBX*0x4]
MOV dword ptr [EBP + EDX*0x4 + 0xc],EAX
LEA EAX,[EBX + EBX*0x4]
OR byte ptr [EBP + EAX*0x4 + 0x11],0x2
MOV EAX,dword ptr [ESP + 0x24]
TEST EAX,EAX
JZ 0x000d0623
MOV EDX,EAX
MOV EAX,dword ptr [ESP + 0x34]
CALL 0x000428d0
MOV dword ptr [ESP + 0x24],0x1
MOV EAX,dword ptr [ESP + 0x8]
ADD ESI,0x1
MOVSX EAX,word ptr [EAX + 0x2a]
CMP EAX,ESI
JLE 0x000d029d
MOV EAX,dword ptr [ESP + 0x8]
MOV EBX,ESI
SHL EBX,0x4
ADD EBX,dword ptr [EAX + 0x4]
CMP byte ptr [ESP + 0x1c],0x0
MOV EDI,dword ptr [EBX]
JZ 0x000d04a8
MOV EDX,dword ptr [ESP + 0x4]
LEA EAX,[ESI + ESI*0x4]
SUB ESP,0xc
SHL EAX,0x2
ADD EAX,dword ptr [EDX]
PUSH 0x0
XOR EDX,EDX
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [EAX + 0xc]
CALL 0x00045a10
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000d062b
MOV EAX,dword ptr [ESP + 0x3c]
TEST byte ptr [EAX + 0xa],0x2
JNZ 0x000d04f4
TEST byte ptr [EBX + 0xf],0x2
JZ 0x000d04f4
JMP 0x000d062b
SUB ESP,0x8
MOV ECX,EDI
PUSH 0x0
PUSH 0x0
MOV EDX,dword ptr [ESP + 0x24]
MOV EAX,dword ptr [ESP + 0x30]
CALL 0x00039c70
ADD ESP,0x10
TEST EAX,EAX
JZ 0x000d04da
JMP 0x000d0623
MOV ECX,dword ptr [ESP + 0x28]
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,0x3b
CALL 0x00045020
SUB ESP,0xc
MOV EDX,0x82
PUSH EBX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00075cf0
ADD ESP,0x10
MOV EBX,EAX
MOV EAX,dword ptr [ESP + 0x2c]
TEST EAX,EAX
JZ 0x000d072e
MOV ECX,dword ptr [ESP + 0x2c]
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,0x3b
CALL 0x00045020
SUB ESP,0xc
MOV EDX,0x82
PUSH EBX
MOV ECX,EAX
MOV EAX,dword ptr [ESP + 0x20]
CALL 0x00075cf0
ADD ESP,0x10
MOV EBX,EAX
PUSH EDI
PUSH dword ptr [ESP + 0x2c]
PUSH dword ptr [ESP + 0x60]
PUSH dword ptr [ESP + 0x40]
CALL 0x0007a820
ADD ESP,0x10
MOV EDI,EAX
MOV dword ptr [ESP + 0x24],EAX
JMP 0x000d0580
XOR EAX,EAX
JMP 0x000d05b2
MOV EAX,dword ptr [ESI]
MOV dword ptr [ESP + 0x28],EAX
JMP 0x000d0211
SUB ESP,0xc
PUSH EDI
PUSH dword ptr [ESP + 0x38]
PUSH dword ptr [ESP + 0x40]
MOV EAX,dword ptr [ESP + 0x48]
LEA EAX,[EAX + 0xfffa43d5]
PUSH EAX
PUSH dword ptr [ESP + 0x50]
CALL 0x0007a820
LEA EDX,[EBX + EBX*0x4]
ADD ESP,0x20
MOV dword ptr [EBP + EDX*0x4 + 0xc],EAX
JMP 0x000d0608
MOV EAX,dword ptr [ESP + 0x30]
MOV dword ptr [ESP + 0x4],0x0
LEA EAX,[EAX + 0xfff9c3da]
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x000d0474
MOV dword ptr [ESP + 0x2c],0x0
JMP 0x000d0474
MOV EAX,dword ptr [ESP + 0x34]
MOV EDX,EDI
CALL 0x00056520
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [EAX],EBP
TEST EBP,EBP
JZ 0x000cfaec
MOV EAX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EAX + 0x70]
CMP dword ptr [EBP],EAX
JG 0x000d088f
TEST dword ptr [ESP + 0x4c],0x200004
JZ 0x000cfaec
MOV EAX,dword ptr [ESP + 0x3c]
OR dword ptr [EAX + 0x8],0x40000
JMP 0x000cfaec
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x4c],ESI
MOV EBP,dword ptr [EAX]
JMP 0x000d07de
MOV EAX,dword ptr [ECX + 0xc]
MOV EAX,dword ptr [EAX + 0x8]
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,dword ptr [ESP + 0x20]
MOV EAX,dword ptr [EAX]
TEST EAX,EAX
JG 0x000d01d4
JMP 0x000d02c3
SUB ESP,0x4
PUSH dword ptr [EBX]
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffb2498]
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00074ee0
ADD ESP,0x10
MOV dword ptr [EBP + 0x10],0x0
MOV dword ptr [ESP + 0x44],0x2
JMP 0x000cfaec
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffa5026]
PUSH EAX
PUSH dword ptr [ESP + 0x1c]
CALL 0x00074ee0
ADD ESP,0x10
JMP 0x000d018c
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffb256c]
JMP 0x000cfad7
SUB ESP,0x8
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffb24f4]
JMP 0x000cfad7
SUB ESP,0x4
PUSH 0x0
MOV EAX,dword ptr [ESP + 0x38]
LEA EAX,[EAX + 0xfffb24c0]
JMP 0x000cfad7
MOV EAX,dword ptr [ESP + 0x30]
LEA EAX,[EAX + 0xfff9c3da]
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x000d0474
CALL 0x00116110
MOV dword ptr [ESP + 0x4c],0x0
JMP 0x000d00f8
MOV EAX,dword ptr [ESP + 0x3c]
MOV dword ptr [ESP + 0x4c],0x0
MOV EBP,dword ptr [EAX]
JMP 0x000d07de
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n\nundefined4 FUN_000cf720(int *param_1,int *param_2)\n\n{\n  undefined2 uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  int iVar13;\n  byte *pbVar14;\n  int *piVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  char *pcVar18;\n  undefined4 uVar19;\n  size_t sVar20;\n  char *pcVar21;\n  char cVar22;\n  int *piVar23;\n  byte *pbVar24;\n  byte *pbVar25;\n  undefined4 *puVar26;\n  int *piVar27;\n  int iVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  byte *local_88;\n  int *local_80;\n  int local_78;\n  byte *local_74;\n  int local_70;\n  char *local_68;\n  byte *local_64;\n  char *local_60;\n  int *local_4c;\n  undefined4 local_48;\n  int local_44;\n  int *local_40;\n  undefined1 local_2c [4];\n  char *local_28;\n  uint local_24;\n  int local_20;\n  \n  piVar2 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *piVar2;\n  uVar4 = param_2[2];\n  param_2[2] = uVar4 | 0x40;\n  if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);\nLAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n  iVar13 = piVar7[0x41];\n  piVar7[0x41] = (int)piVar8;\n  iVar17 = piVar15[0xd];\n  *(int *)(iVar17 + 0x40) = piVar15[0x10];\n  if (param_1[2] != 0) {\n    FUN_0004a550();\n  }\n  *(undefined4 *)(iVar17 + 0x40) = 0;\nLAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;\n  piVar9 = piVar15;\n  do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);\n  piVar23 = (int *)*piVar23;\n  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  FUN_000ae410(puVar16 + 1);\n  if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }\n  piVar8[iVar28 * 4 + 5] = 0;\n  piVar7[0x41] = iVar13;\nLAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }\nLAB_000cfc89:\n  iVar28 = FUN_000757e0();\n  if (iVar28 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);\n  piVar27 = piVar27 + 0x11;\n  if (*piVar5 <= (int)local_88) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  FUN_00056520();\n  *param_2 = (int)piVar27;\nLAB_000d07de:\n  local_48 = 0;\n  if (piVar27 == (int *)0x0) goto LAB_000cfaec;\n  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar21 = "too many columns in result set";\nLAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}\n\n" comment (function_definition "undefined4 FUN_000cf720(int *param_1,int *param_2)\n\n{\n  undefined2 uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  int iVar13;\n  byte *pbVar14;\n  int *piVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  char *pcVar18;\n  undefined4 uVar19;\n  size_t sVar20;\n  char *pcVar21;\n  char cVar22;\n  int *piVar23;\n  byte *pbVar24;\n  byte *pbVar25;\n  undefined4 *puVar26;\n  int *piVar27;\n  int iVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  byte *local_88;\n  int *local_80;\n  int local_78;\n  byte *local_74;\n  int local_70;\n  char *local_68;\n  byte *local_64;\n  char *local_60;\n  int *local_4c;\n  undefined4 local_48;\n  int local_44;\n  int *local_40;\n  undefined1 local_2c [4];\n  char *local_28;\n  uint local_24;\n  int local_20;\n  \n  piVar2 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *piVar2;\n  uVar4 = param_2[2];\n  param_2[2] = uVar4 | 0x40;\n  if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);\nLAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n  iVar13 = piVar7[0x41];\n  piVar7[0x41] = (int)piVar8;\n  iVar17 = piVar15[0xd];\n  *(int *)(iVar17 + 0x40) = piVar15[0x10];\n  if (param_1[2] != 0) {\n    FUN_0004a550();\n  }\n  *(undefined4 *)(iVar17 + 0x40) = 0;\nLAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;\n  piVar9 = piVar15;\n  do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);\n  piVar23 = (int *)*piVar23;\n  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  FUN_000ae410(puVar16 + 1);\n  if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }\n  piVar8[iVar28 * 4 + 5] = 0;\n  piVar7[0x41] = iVar13;\nLAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }\nLAB_000cfc89:\n  iVar28 = FUN_000757e0();\n  if (iVar28 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);\n  piVar27 = piVar27 + 0x11;\n  if (*piVar5 <= (int)local_88) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  FUN_00056520();\n  *param_2 = (int)piVar27;\nLAB_000d07de:\n  local_48 = 0;\n  if (piVar27 == (int *)0x0) goto LAB_000cfaec;\n  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar21 = "too many columns in result set";\nLAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}" type_identifier (function_declarator "FUN_000cf720(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined2 uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  int iVar13;\n  byte *pbVar14;\n  int *piVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  char *pcVar18;\n  undefined4 uVar19;\n  size_t sVar20;\n  char *pcVar21;\n  char cVar22;\n  int *piVar23;\n  byte *pbVar24;\n  byte *pbVar25;\n  undefined4 *puVar26;\n  int *piVar27;\n  int iVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  byte *local_88;\n  int *local_80;\n  int local_78;\n  byte *local_74;\n  int local_70;\n  char *local_68;\n  byte *local_64;\n  char *local_60;\n  int *local_4c;\n  undefined4 local_48;\n  int local_44;\n  int *local_40;\n  undefined1 local_2c [4];\n  char *local_28;\n  uint local_24;\n  int local_20;\n  \n  piVar2 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *piVar2;\n  uVar4 = param_2[2];\n  param_2[2] = uVar4 | 0x40;\n  if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);\nLAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n  iVar13 = piVar7[0x41];\n  piVar7[0x41] = (int)piVar8;\n  iVar17 = piVar15[0xd];\n  *(int *)(iVar17 + 0x40) = piVar15[0x10];\n  if (param_1[2] != 0) {\n    FUN_0004a550();\n  }\n  *(undefined4 *)(iVar17 + 0x40) = 0;\nLAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;\n  piVar9 = piVar15;\n  do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);\n  piVar23 = (int *)*piVar23;\n  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  FUN_000ae410(puVar16 + 1);\n  if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }\n  piVar8[iVar28 * 4 + 5] = 0;\n  piVar7[0x41] = iVar13;\nLAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }\nLAB_000cfc89:\n  iVar28 = FUN_000757e0();\n  if (iVar28 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);\n  piVar27 = piVar27 + 0x11;\n  if (*piVar5 <= (int)local_88) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  FUN_00056520();\n  *param_2 = (int)piVar27;\nLAB_000d07de:\n  local_48 = 0;\n  if (piVar27 == (int *)0x0) goto LAB_000cfaec;\n  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar21 = "too many columns in result set";\nLAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}" { (declaration "undefined2 uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "size_t sVar20;" primitive_type identifier ;) (declaration "char *pcVar21;" primitive_type (pointer_declarator "*pcVar21" * identifier) ;) (declaration "char cVar22;" primitive_type identifier ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "byte *pbVar25;" type_identifier (pointer_declarator "*pbVar25" * identifier) ;) (declaration "undefined4 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar29;" primitive_type identifier ;) (declaration "byte *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "int *local_80;" primitive_type (pointer_declarator "*local_80" * identifier) ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "byte *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "char *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "byte *local_64;" type_identifier (pointer_declarator "*local_64" * identifier) ;) (declaration "char *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "int *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "undefined1 local_2c [4];" type_identifier (array_declarator "local_2c [4]" identifier [ number_literal ]) ;) (declaration "char *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "piVar2 = (int *)*param_1;" (assignment_expression "piVar2 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *piVar2;" (assignment_expression "iVar3 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "uVar4 = param_2[2];" (assignment_expression "uVar4 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "param_2[2] = uVar4 | 0x40;" (assignment_expression "param_2[2] = uVar4 | 0x40" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar4 | 0x40" identifier | number_literal)) ;) (if_statement "if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar3 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x4d)" * (cast_expression "(char *)(iVar3 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4d)" ( (binary_expression "iVar3 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }" { (if_statement "if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }" if (parenthesized_expression "((uVar4 & 0x40) != 0)" ( (binary_expression "(uVar4 & 0x40) != 0" (parenthesized_expression "(uVar4 & 0x40)" ( (binary_expression "uVar4 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }" { (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) (expression_statement "piVar5 = (int *)param_2[8];" (assignment_expression "piVar5 = (int *)param_2[8]" identifier = (cast_expression "(int *)param_2[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[8]" identifier [ number_literal ]))) ;) (expression_statement "piVar6 = (int *)*param_2;" (assignment_expression "piVar6 = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "iVar28 = param_2[0x10];" (assignment_expression "iVar28 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (if_statement "if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }" { (expression_statement "*(int *)(iVar28 + 4) = piVar2[0x41];" (assignment_expression "*(int *)(iVar28 + 4) = piVar2[0x41]" (pointer_expression "*(int *)(iVar28 + 4)" * (cast_expression "(int *)(iVar28 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 4)" ( (binary_expression "iVar28 + 4" identifier + number_literal) )))) = (subscript_expression "piVar2[0x41]" identifier [ number_literal ])) ;) (expression_statement "piVar2[0x41] = iVar28;" (assignment_expression "piVar2[0x41] = iVar28" (subscript_expression "piVar2[0x41]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "FUN_00039910();" (call_expression "FUN_00039910()" identifier (argument_list "()" ( ))) ;) (if_statement "if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }" if (parenthesized_expression "(0 < *piVar5)" ( (binary_expression "0 < *piVar5" number_literal < (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }" { (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar27 = piVar5 + 2;" (assignment_expression "piVar27 = piVar5 + 2" identifier = (binary_expression "piVar5 + 2" identifier + number_literal)) ;) (labeled_statement "LAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;" statement_identifier : (if_statement "if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;" if (parenthesized_expression "((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)piVar27 + 0x25) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)piVar27 + 0x25) & 0x20)" ( (binary_expression "*(byte *)((int)piVar27 + 0x25) & 0x20" (pointer_expression "*(byte *)((int)piVar27 + 0x25)" * (cast_expression "(byte *)((int)piVar27 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 + 0x25)" ( (binary_expression "(int)piVar27 + 0x25" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000cf910;" goto statement_identifier ;))) (if_statement "if (piVar27[1] != 0) goto LAB_000cfc82;" if (parenthesized_expression "(piVar27[1] != 0)" ( (binary_expression "piVar27[1] != 0" (subscript_expression "piVar27[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_000cfc82;" goto statement_identifier ;)) (expression_statement "pbVar25 = (byte *)piVar27[2];" (assignment_expression "pbVar25 = (byte *)piVar27[2]" identifier = (cast_expression "(byte *)piVar27[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar27[2]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }" if (parenthesized_expression "(pbVar25 == (byte *)0x0)" ( (binary_expression "pbVar25 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }" { (if_statement "if (piVar27[4] == 0) goto LAB_000cfd90;" if (parenthesized_expression "(piVar27[4] == 0)" ( (binary_expression "piVar27[4] == 0" (subscript_expression "piVar27[4]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000cfd90;" goto statement_identifier ;)) (goto_statement "goto LAB_000cfc89;" goto statement_identifier ;) })) (expression_statement "piVar7 = (int *)*param_1;" (assignment_expression "piVar7 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (for_statement "for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }" for ( (assignment_expression "piVar8 = (int *)piVar7[0x41]" identifier = (cast_expression "(int *)piVar7[0x41]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[0x41]" identifier [ number_literal ]))) ; (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar8 = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ) (compound_statement "{\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }" { (if_statement "if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }" if (parenthesized_expression "(0 < *piVar8)" ( (binary_expression "0 < *piVar8" number_literal < (pointer_expression "*piVar8" * identifier)) )) (compound_statement "{\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (do_statement "do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);" do (compound_statement "{\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          }" { (expression_statement "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];" (assignment_expression "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2]" identifier = (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ;) (if_statement "if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }" if (parenthesized_expression "((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14])" ( (binary_expression "(&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]" (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar25" * identifier) ]) == (subscript_expression "(&DAT_0012c6e0)[*pbVar14]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar14" * identifier) ])) )) (compound_statement "{\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }" { (if_statement "if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }" if (parenthesized_expression "(*pbVar25 == 0)" ( (binary_expression "*pbVar25 == 0" (pointer_expression "*pbVar25" * identifier) == number_literal) )) (compound_statement "{\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }" { (expression_statement "pcVar21 = (char *)piVar8[iVar28 * 4 + 5];" (assignment_expression "pcVar21 = (char *)piVar8[iVar28 * 4 + 5]" identifier = (cast_expression "(char *)piVar8[iVar28 * 4 + 5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ;) (labeled_statement "joined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;" statement_identifier : (if_statement "if (pcVar21 != (char *)0x0) goto LAB_000cfd64;" if (parenthesized_expression "(pcVar21 != (char *)0x0)" ( (binary_expression "pcVar21 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfd64;" goto statement_identifier ;))) (if_statement "if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }" if (parenthesized_expression "((*(byte *)((int)piVar27 + 0x25) & 4) != 0)" ( (binary_expression "(*(byte *)((int)piVar27 + 0x25) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar27 + 0x25) & 4)" ( (binary_expression "*(byte *)((int)piVar27 + 0x25) & 4" (pointer_expression "*(byte *)((int)piVar27 + 0x25)" * (cast_expression "(byte *)((int)piVar27 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 + 0x25)" ( (binary_expression "(int)piVar27 + 0x25" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }" { (expression_statement "pcVar21 = "\'%s\' is not a function";" (assignment_expression "pcVar21 = "\'%s\' is not a function"" identifier = (string_literal ""\'%s\' is not a function"" " escape_sequence string_content escape_sequence string_content ")) ;) (expression_statement "pbVar14 = pbVar25;" (assignment_expression "pbVar14 = pbVar25" identifier = identifier) ;) (goto_statement "goto LAB_000cfd64;" goto statement_identifier ;) })) (expression_statement "iVar13 = *piVar7;" (assignment_expression "iVar13 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "puVar16 = (undefined4 *)FUN_00044520();" (assignment_expression "puVar16 = (undefined4 *)FUN_00044520()" identifier = (cast_expression "(undefined4 *)FUN_00044520()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00044520()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar27[4] = (int)puVar16;" (assignment_expression "piVar27[4] = (int)puVar16" (subscript_expression "piVar27[4]" identifier [ number_literal ]) = (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (expression_statement "puVar16[8] = 1;" (assignment_expression "puVar16[8] = 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar19 = FUN_00044980();" (assignment_expression "uVar19 = FUN_00044980()" identifier = (call_expression "FUN_00044980()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar16[9] = puVar16[9] | 0x42;" (assignment_expression "puVar16[9] = puVar16[9] | 0x42" (subscript_expression "puVar16[9]" identifier [ number_literal ]) = (binary_expression "puVar16[9] | 0x42" (subscript_expression "puVar16[9]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*puVar16 = uVar19;" (assignment_expression "*puVar16 = uVar19" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "*(undefined2 *)(puVar16 + 0xb) = 200;" (assignment_expression "*(undefined2 *)(puVar16 + 0xb) = 200" (pointer_expression "*(undefined2 *)(puVar16 + 0xb)" * (cast_expression "(undefined2 *)(puVar16 + 0xb)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb)" ( (binary_expression "puVar16 + 0xb" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar16 + 10) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar16 + 10) = 0xffff" (pointer_expression "*(undefined2 *)(puVar16 + 10)" * (cast_expression "(undefined2 *)(puVar16 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 10)" ( (binary_expression "puVar16 + 10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar15 = (int *)FUN_0005a810();" (assignment_expression "piVar15 = (int *)FUN_0005a810()" identifier = (cast_expression "(int *)FUN_0005a810()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005a810()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar27[5] = (int)piVar15;" (assignment_expression "piVar27[5] = (int)piVar15" (subscript_expression "piVar27[5]" identifier [ number_literal ]) = (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;" if (parenthesized_expression "(*(char *)(iVar13 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar13 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar13 + 0x4d)" * (cast_expression "(char *)(iVar13 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x4d)" ( (binary_expression "iVar13 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (expression_statement "bVar11 = (char)piVar15[1] + 0x85;" (assignment_expression "bVar11 = (char)piVar15[1] + 0x85" identifier = (binary_expression "(char)piVar15[1] + 0x85" (cast_expression "(char)piVar15[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar15[1]" identifier [ number_literal ])) + number_literal)) ;) (if_statement "if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }" if (parenthesized_expression "(1 < bVar11)" ( (binary_expression "1 < bVar11" number_literal < identifier) )) (compound_statement "{\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }" { (if_statement "if (2 < (uint)puVar16[8]) goto LAB_000cffd0;" if (parenthesized_expression "(2 < (uint)puVar16[8])" ( (binary_expression "2 < (uint)puVar16[8]" number_literal < (cast_expression "(uint)puVar16[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar16[8]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_000cffd0;" goto statement_identifier ;)) (expression_statement "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";" (assignment_expression "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s"" (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) = (cast_expression "(int)"circular reference: %s"" ( (type_descriptor "int" primitive_type) ) (string_literal ""circular reference: %s"" " string_content "))) ;) (expression_statement "iVar13 = piVar7[0x41];" (assignment_expression "iVar13 = piVar7[0x41]" identifier = (subscript_expression "piVar7[0x41]" identifier [ number_literal ])) ;) (expression_statement "piVar7[0x41] = (int)piVar8;" (assignment_expression "piVar7[0x41] = (int)piVar8" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    FUN_0004a550();\n                  }" { (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_000cfc05;" goto statement_identifier ;) })) (expression_statement "piVar9 = (int *)piVar15[8];" (assignment_expression "piVar9 = (int *)piVar15[8]" identifier = (cast_expression "(int *)piVar15[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar15[8]" identifier [ number_literal ]))) ;) (if_statement "if (*piVar9 < 1) goto LAB_000cfecc;" if (parenthesized_expression "(*piVar9 < 1)" ( (binary_expression "*piVar9 < 1" (pointer_expression "*piVar9" * identifier) < number_literal) )) (goto_statement "goto LAB_000cfecc;" goto statement_identifier ;)) (expression_statement "piVar23 = piVar9 + 3;" (assignment_expression "piVar23 = piVar9 + 3" identifier = (binary_expression "piVar9 + 3" identifier + number_literal)) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000cfe32;" goto statement_identifier ;) })) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (while_statement "while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }" while (parenthesized_expression "(pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]])" ( (comma_expression "pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]" (assignment_expression "pbVar24 = pbVar25 + iVar13" identifier = (binary_expression "pbVar25 + iVar13" identifier + identifier)) , (binary_expression "(&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]" (subscript_expression "(&DAT_0012c6e0)[*pbVar24]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar24" * identifier) ]) == (subscript_expression "(&DAT_0012c6e0)[pbVar14[iVar13]]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (subscript_expression "pbVar14[iVar13]" identifier [ identifier ]) ]))) )) (compound_statement "{\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (if_statement "if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }" if (parenthesized_expression "(*pbVar24 == 0)" ( (binary_expression "*pbVar24 == 0" (pointer_expression "*pbVar24" * identifier) == number_literal) )) (compound_statement "{\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }" { (expression_statement "pcVar21 = (char *)piVar8[iVar28 * 4 + 5];" (assignment_expression "pcVar21 = (char *)piVar8[iVar28 * 4 + 5]" identifier = (cast_expression "(char *)piVar8[iVar28 * 4 + 5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ;) (goto_statement "goto joined_r0x000cfd51;" goto statement_identifier ;) })) })) })) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar8 != iVar28)" ( (binary_expression "*piVar8 != iVar28" (pointer_expression "*piVar8" * identifier) != identifier) )) ;) })) })) (if_statement "if (piVar27[4] == 0) goto LAB_000cfcb3;" if (parenthesized_expression "(piVar27[4] == 0)" ( (binary_expression "piVar27[4] == 0" (subscript_expression "piVar27[4]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000cfcb3;" goto statement_identifier ;)) (expression_statement "iVar28 = FUN_000757e0();" (assignment_expression "iVar28 = FUN_000757e0()" identifier = (call_expression "FUN_000757e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar28 == 0) goto LAB_000cf910;" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000cf910;" goto statement_identifier ;)) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;) })) (labeled_statement "LAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }" statement_identifier : (if_statement "if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }" if (parenthesized_expression "(*(char *)(iVar3 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x4d)" * (cast_expression "(char *)(iVar3 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4d)" ( (binary_expression "iVar3 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }" { (expression_statement "piVar27 = (int *)param_2[8];" (assignment_expression "piVar27 = (int *)param_2[8]" identifier = (cast_expression "(int *)param_2[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[8]" identifier [ number_literal ]))) ;) (expression_statement "local_40 = piVar27 + 0x13;" (assignment_expression "local_40 = piVar27 + 0x13" identifier = (binary_expression "piVar27 + 0x13" identifier + number_literal)) ;) (if_statement "if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }" if (parenthesized_expression "(1 < *piVar27)" ( (binary_expression "1 < *piVar27" number_literal < (pointer_expression "*piVar27" * identifier)) )) (compound_statement "{\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }" { (expression_statement "local_60 = (char *)0x1;" (assignment_expression "local_60 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);" do (compound_statement "{\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        }" { (expression_statement "iVar28 = local_40[4];" (assignment_expression "iVar28 = local_40[4]" identifier = (subscript_expression "local_40[4]" identifier [ number_literal ])) ;) (if_statement "if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }" if (parenthesized_expression "((local_40[-0xd] != 0) && (iVar28 != 0))" ( (binary_expression "(local_40[-0xd] != 0) && (iVar28 != 0)" (parenthesized_expression "(local_40[-0xd] != 0)" ( (binary_expression "local_40[-0xd] != 0" (subscript_expression "local_40[-0xd]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }" { (expression_statement "bVar11 = *(byte *)(local_40 + 9);" (assignment_expression "bVar11 = *(byte *)(local_40 + 9)" identifier = (pointer_expression "*(byte *)(local_40 + 9)" * (cast_expression "(byte *)(local_40 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 9)" ( (binary_expression "local_40 + 9" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = local_40[0xb];" (assignment_expression "iVar13 = local_40[0xb]" identifier = (subscript_expression "local_40[0xb]" identifier [ number_literal ])) ;) (expression_statement "bVar29 = (bVar11 & 0x20) != 0;" (assignment_expression "bVar29 = (bVar11 & 0x20) != 0" identifier = (binary_expression "(bVar11 & 0x20) != 0" (parenthesized_expression "(bVar11 & 0x20)" ( (binary_expression "bVar11 & 0x20" identifier & number_literal) )) != number_literal)) ;) (if_statement "if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }" if (parenthesized_expression "((bVar11 & 4) != 0)" ( (binary_expression "(bVar11 & 4) != 0" (parenthesized_expression "(bVar11 & 4)" ( (binary_expression "bVar11 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }" { (if_statement "if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }" if (parenthesized_expression "((iVar13 != 0) || (local_40[0xc] != 0))" ( (binary_expression "(iVar13 != 0) || (local_40[0xc] != 0)" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_40[0xc] != 0)" ( (binary_expression "local_40[0xc] != 0" (subscript_expression "local_40[0xc]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }" { (expression_statement "pcVar21 = "a NATURAL join may not have an ON or USING clause";" (assignment_expression "pcVar21 = "a NATURAL join may not have an ON or USING clause"" identifier = (string_literal ""a NATURAL join may not have an ON or USING clause"" " string_content ")) ;) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (if_statement "if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;" if (parenthesized_expression "(*(short *)(iVar28 + 0x2a) < 1)" ( (binary_expression "*(short *)(iVar28 + 0x2a) < 1" (pointer_expression "*(short *)(iVar28 + 0x2a)" * (cast_expression "(short *)(iVar28 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x2a)" ( (binary_expression "iVar28 + 0x2a" identifier + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_000d0070;" goto statement_identifier ;)) (do_statement "do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));" do (compound_statement "{\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              }" { (expression_statement "iVar17 = FUN_00039c70(local_2c,&local_28);" (assignment_expression "iVar17 = FUN_00039c70(local_2c,&local_28)" identifier = (call_expression "FUN_00039c70(local_2c,&local_28)" identifier (argument_list "(local_2c,&local_28)" ( identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }" { (expression_statement "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);" (call_expression "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9)" identifier (argument_list "(local_28,local_60,iVar13,bVar29,param_2 + 9)" ( identifier , identifier , identifier , identifier , (binary_expression "param_2 + 9" identifier + number_literal) ))) ;) })) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < *(short *)(iVar28 + 0x2a))" ( (binary_expression "iVar13 < *(short *)(iVar28 + 0x2a)" identifier < (pointer_expression "*(short *)(iVar28 + 0x2a)" * (cast_expression "(short *)(iVar28 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x2a)" ( (binary_expression "iVar28 + 0x2a" identifier + number_literal) ))))) )) ;) (expression_statement "iVar13 = local_40[0xb];" (assignment_expression "iVar13 = local_40[0xb]" identifier = (subscript_expression "local_40[0xb]" identifier [ number_literal ])) ;) })) (expression_statement "local_64 = (byte *)local_40[0xc];" (assignment_expression "local_64 = (byte *)local_40[0xc]" identifier = (cast_expression "(byte *)local_40[0xc]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_40[0xc]" identifier [ number_literal ]))) ;) (if_statement "if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }" { (if_statement "if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }" if (parenthesized_expression "(local_64 != (byte *)0x0)" ( (binary_expression "local_64 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }" { (expression_statement "pcVar21 = "cannot have both ON and USING clauses in the same join";" (assignment_expression "pcVar21 = "cannot have both ON and USING clauses in the same join"" identifier = (string_literal ""cannot have both ON and USING clauses in the same join"" " string_content ")) ;) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) (if_statement "if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }" if (parenthesized_expression "((bVar11 & 0x20) != 0)" ( (binary_expression "(bVar11 & 0x20) != 0" (parenthesized_expression "(bVar11 & 0x20)" ( (binary_expression "bVar11 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                FUN_00039da0();\n              }" { (expression_statement "FUN_00039da0();" (call_expression "FUN_00039da0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar13 = FUN_000569c0();" (assignment_expression "iVar13 = FUN_000569c0()" identifier = (call_expression "FUN_000569c0()" identifier (argument_list "()" ( )))) ;) (expression_statement "param_2[9] = iVar13;" (assignment_expression "param_2[9] = iVar13" (subscript_expression "param_2[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_40[0xb] = 0;" (assignment_expression "local_40[0xb] = 0" (subscript_expression "local_40[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_64 = (byte *)local_40[0xc];" (assignment_expression "local_64 = (byte *)local_40[0xc]" identifier = (cast_expression "(byte *)local_40[0xc]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_40[0xc]" identifier [ number_literal ]))) ;) })) (if_statement "if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }" if (parenthesized_expression "((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4)))" ( (binary_expression "(local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))" (parenthesized_expression "(local_64 != (byte *)0x0)" ( (binary_expression "local_64 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_70 = 0, 0 < *(int *)((int)local_64 + 4))" ( (comma_expression "local_70 = 0, 0 < *(int *)((int)local_64 + 4)" (assignment_expression "local_70 = 0" identifier = number_literal) , (binary_expression "0 < *(int *)((int)local_64 + 4)" number_literal < (pointer_expression "*(int *)((int)local_64 + 4)" * (cast_expression "(int *)((int)local_64 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_64 + 4)" ( (binary_expression "(int)local_64 + 4" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ))) )) (compound_statement "{\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }" { (labeled_statement "LAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);" statement_identifier : (expression_statement "pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);" (assignment_expression "pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8)" identifier = (pointer_expression "*(byte **)(*(int *)local_64 + local_70 * 8)" * (cast_expression "(byte **)(*(int *)local_64 + local_70 * 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_64 + local_70 * 8)" ( (binary_expression "*(int *)local_64 + local_70 * 8" (pointer_expression "*(int *)local_64" * (cast_expression "(int *)local_64" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "local_70 * 8" identifier * number_literal)) ))))) ;)) (if_statement "if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }" if (parenthesized_expression "(0 < *(short *)(iVar28 + 0x2a))" ( (binary_expression "0 < *(short *)(iVar28 + 0x2a)" number_literal < (pointer_expression "*(short *)(iVar28 + 0x2a)" * (cast_expression "(short *)(iVar28 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x2a)" ( (binary_expression "iVar28 + 0x2a" identifier + number_literal) ))))) )) (compound_statement "{\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));" do (compound_statement "{\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);" (assignment_expression "pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10)" identifier = (pointer_expression "*(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10)" * (cast_expression "(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar28 + 4) + iVar13 * 0x10)" ( (binary_expression "*(int *)(iVar28 + 4) + iVar13 * 0x10" (pointer_expression "*(int *)(iVar28 + 4)" * (cast_expression "(int *)(iVar28 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 4)" ( (binary_expression "iVar28 + 4" identifier + number_literal) )))) + (binary_expression "iVar13 * 0x10" identifier * number_literal)) ))))) ;) (expression_statement "bVar11 = *pbVar14;" (assignment_expression "bVar11 = *pbVar14" identifier = (pointer_expression "*pbVar14" * identifier)) ;) (expression_statement "pbVar24 = pbVar25;" (assignment_expression "pbVar24 = pbVar25" identifier = identifier) ;) (if_statement "if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }" if (parenthesized_expression "((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11])" ( (binary_expression "(&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]" (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar25" * identifier) ]) == (subscript_expression "(&DAT_0012c6e0)[bVar11]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ identifier ])) )) (compound_statement "{\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }" { (do_statement "do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);" do (compound_statement "{\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    }" { (if_statement "if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }" { (expression_statement "iVar17 = FUN_00039c70(local_2c,&local_28);" (assignment_expression "iVar17 = FUN_00039c70(local_2c,&local_28)" identifier = (call_expression "FUN_00039c70(local_2c,&local_28)" identifier (argument_list "(local_2c,&local_28)" ( identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (iVar17 == 0) goto LAB_000cfac6;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000cfac6;" goto statement_identifier ;)) (expression_statement "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);" (call_expression "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9)" identifier (argument_list "(local_28,local_60,iVar13,bVar29,param_2 + 9)" ( identifier , identifier , identifier , identifier , (binary_expression "param_2 + 9" identifier + number_literal) ))) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;" if (parenthesized_expression "(local_70 < *(int *)((int)local_64 + 4))" ( (binary_expression "local_70 < *(int *)((int)local_64 + 4)" identifier < (pointer_expression "*(int *)((int)local_64 + 4)" * (cast_expression "(int *)((int)local_64 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_64 + 4)" ( (binary_expression "(int)local_64 + 4" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (goto_statement "goto LAB_000cfa10;" goto statement_identifier ;)) (goto_statement "goto LAB_000d0070;" goto statement_identifier ;) })) (expression_statement "pbVar14 = pbVar14 + 1;" (assignment_expression "pbVar14 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "pbVar24 = pbVar24 + 1;" (assignment_expression "pbVar24 = pbVar24 + 1" identifier = (binary_expression "pbVar24 + 1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar14;" (assignment_expression "bVar11 = *pbVar14" identifier = (pointer_expression "*pbVar14" * identifier)) ;) }) while (parenthesized_expression "((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24])" ( (binary_expression "(&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]" (subscript_expression "(&DAT_0012c6e0)[bVar11]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ identifier ]) == (subscript_expression "(&DAT_0012c6e0)[*pbVar24]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar24" * identifier) ])) )) ;) })) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != *(short *)(iVar28 + 0x2a))" ( (binary_expression "iVar13 != *(short *)(iVar28 + 0x2a)" identifier != (pointer_expression "*(short *)(iVar28 + 0x2a)" * (cast_expression "(short *)(iVar28 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x2a)" ( (binary_expression "iVar28 + 0x2a" identifier + number_literal) ))))) )) ;) })) (labeled_statement "LAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";" statement_identifier : (expression_statement "pcVar21 = "cannot join using column %s - column not present in both tables";" (assignment_expression "pcVar21 = "cannot join using column %s - column not present in both tables"" identifier = (string_literal ""cannot join using column %s - column not present in both tables"" " string_content ")) ;)) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000d0070:\n          local_40 = local_40 + 0x11;" statement_identifier : (expression_statement "local_40 = local_40 + 0x11;" (assignment_expression "local_40 = local_40 + 0x11" identifier = (binary_expression "local_40 + 0x11" identifier + number_literal)) ;)) (expression_statement "bVar29 = (int)local_60 < *piVar27 + -1;" (assignment_expression "bVar29 = (int)local_60 < *piVar27 + -1" identifier = (binary_expression "(int)local_60 < *piVar27 + -1" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) < (binary_expression "*piVar27 + -1" (pointer_expression "*piVar27" * identifier) + number_literal))) ;) (expression_statement "local_60 = (char *)((int)local_60 + 1);" (assignment_expression "local_60 = (char *)((int)local_60 + 1)" identifier = (cast_expression "(char *)((int)local_60 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_60 + 1)" ( (binary_expression "(int)local_60 + 1" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(bVar29)" ( identifier )) ;) })) (if_statement "if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }" if (parenthesized_expression "(0 < *piVar6)" ( (binary_expression "0 < *piVar6" number_literal < (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }" { (expression_statement "pcVar21 = (char *)piVar6[1];" (assignment_expression "pcVar21 = (char *)piVar6[1]" identifier = (cast_expression "(char *)piVar6[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[1]" identifier [ number_literal ]))) ;) (expression_statement "cVar12 = *pcVar21;" (assignment_expression "cVar12 = *pcVar21" identifier = (pointer_expression "*pcVar21" * identifier)) ;) (if_statement "if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }" if (parenthesized_expression "(cVar12 == -0x58)" ( (binary_expression "cVar12 == -0x58" identifier == number_literal) )) (compound_statement "{\n          local_40 = (int *)0x0;\n        }" { (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }" else (compound_statement "{\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }" { (expression_statement "piVar27 = piVar6 + 6;" (assignment_expression "piVar27 = piVar6 + 6" identifier = (binary_expression "piVar6 + 6" identifier + number_literal)) ;) (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar18 = pcVar21;" (assignment_expression "pcVar18 = pcVar21" identifier = identifier) ;) (expression_statement "cVar22 = cVar12;" (assignment_expression "cVar22 = cVar12" identifier = identifier) ;) (do_statement "do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);" do (compound_statement "{\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          }" { (if_statement "if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;" if (parenthesized_expression "((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58))" ( (binary_expression "(cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)" (parenthesized_expression "(cVar22 == -0x7e)" ( (binary_expression "cVar22 == -0x7e" identifier == number_literal) )) && (parenthesized_expression "(**(char **)(pcVar18 + 0x10) == -0x58)" ( (binary_expression "**(char **)(pcVar18 + 0x10) == -0x58" (pointer_expression "**(char **)(pcVar18 + 0x10)" * (pointer_expression "*(char **)(pcVar18 + 0x10)" * (cast_expression "(char **)(pcVar18 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x10)" ( (binary_expression "pcVar18 + 0x10" identifier + number_literal) ))))) == number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));" (assignment_expression "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4))" identifier = (cast_expression "(int *)((uint)local_40 | *(uint *)(pcVar18 + 4))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_40 | *(uint *)(pcVar18 + 4))" ( (binary_expression "(uint)local_40 | *(uint *)(pcVar18 + 4)" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) | (pointer_expression "*(uint *)(pcVar18 + 4)" * (cast_expression "(uint *)(pcVar18 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 4)" ( (binary_expression "pcVar18 + 4" identifier + number_literal) ))))) )))) ;) (if_statement "if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }" if (parenthesized_expression "(iVar28 == *piVar6)" ( (binary_expression "iVar28 == *piVar6" identifier == (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }" { (expression_statement "piVar27 = (int *)*param_2;" (assignment_expression "piVar27 = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_000d07de;" goto statement_identifier ;) })) (expression_statement "pcVar18 = (char *)*piVar27;" (assignment_expression "pcVar18 = (char *)*piVar27" identifier = (cast_expression "(char *)*piVar27" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar27" * identifier))) ;) (expression_statement "piVar27 = piVar27 + 5;" (assignment_expression "piVar27 = piVar27 + 5" identifier = (binary_expression "piVar27 + 5" identifier + number_literal)) ;) (expression_statement "cVar22 = *pcVar18;" (assignment_expression "cVar22 = *pcVar18" identifier = (pointer_expression "*pcVar18" * identifier)) ;) }) while (parenthesized_expression "(cVar22 != -0x58)" ( (binary_expression "cVar22 != -0x58" identifier != number_literal) )) ;) }))) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "piVar27 = (int *)0x0;" (assignment_expression "piVar27 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar4 = *(uint *)(*piVar2 + 0x1c);" (assignment_expression "uVar4 = *(uint *)(*piVar2 + 0x1c)" identifier = (pointer_expression "*(uint *)(*piVar2 + 0x1c)" * (cast_expression "(uint *)(*piVar2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + 0x1c)" ( (binary_expression "*piVar2 + 0x1c" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) ;) (expression_statement "local_4c = piVar6 + 1;" (assignment_expression "local_4c = piVar6 + 1" identifier = (binary_expression "piVar6 + 1" identifier + number_literal)) ;) (do_statement "do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );" do (compound_statement "{\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        }" { (expression_statement "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));" (assignment_expression "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4))" identifier = (cast_expression "(int *)((uint)local_40 | *(uint *)(pcVar21 + 4))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_40 | *(uint *)(pcVar21 + 4))" ( (binary_expression "(uint)local_40 | *(uint *)(pcVar21 + 4)" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) | (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) )))) ;) (if_statement "if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" if (parenthesized_expression "(cVar12 == -0x58)" ( (binary_expression "cVar12 == -0x58" identifier == number_literal) )) (compound_statement "{\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }" { (expression_statement "local_74 = (byte *)0x0;" (assignment_expression "local_74 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }" if (parenthesized_expression "(*piVar5 < 1)" ( (binary_expression "*piVar5 < 1" (pointer_expression "*piVar5" * identifier) < number_literal) )) (compound_statement "{\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }" { (labeled_statement "LAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");" statement_identifier : (expression_statement "FUN_00074ee0(piVar2,"no tables specified");" (call_expression "FUN_00074ee0(piVar2,"no tables specified")" identifier (argument_list "(piVar2,"no tables specified")" ( identifier , (string_literal ""no tables specified"" " string_content ") ))) ;)) }) (else_clause "else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }" else (compound_statement "{\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }" { (labeled_statement "LAB_000d01d4:\n              bVar29 = false;" statement_identifier : (expression_statement "bVar29 = false;" (assignment_expression "bVar29 = false" identifier = false) ;)) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "local_80 = piVar5 + 2;" (assignment_expression "local_80 = piVar5 + 2" identifier = (binary_expression "piVar5 + 2" identifier + number_literal)) ;) (do_statement "do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);" do (compound_statement "{\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              }" { (expression_statement "puVar16 = (undefined4 *)local_80[4];" (assignment_expression "puVar16 = (undefined4 *)local_80[4]" identifier = (cast_expression "(undefined4 *)local_80[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[4]" identifier [ number_literal ]))) ;) (expression_statement "local_88 = (byte *)local_80[5];" (assignment_expression "local_88 = (byte *)local_80[5]" identifier = (cast_expression "(byte *)local_80[5]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[5]" identifier [ number_literal ]))) ;) (expression_statement "local_64 = (byte *)local_80[3];" (assignment_expression "local_64 = (byte *)local_80[3]" identifier = (cast_expression "(byte *)local_80[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[3]" identifier [ number_literal ]))) ;) (if_statement "if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }" if (parenthesized_expression "(local_64 == (byte *)0x0)" ( (binary_expression "local_64 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_64 = (byte *)*puVar16;\n                }" { (expression_statement "local_64 = (byte *)*puVar16;" (assignment_expression "local_64 = (byte *)*puVar16" identifier = (cast_expression "(byte *)*puVar16" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) })) (if_statement "if (*(char *)(iVar3 + 0x4d) != '\0') break;" if (parenthesized_expression "(*(char *)(iVar3 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar3 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar3 + 0x4d)" * (cast_expression "(char *)(iVar3 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4d)" ( (binary_expression "iVar3 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (if_statement "if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }" if (parenthesized_expression "((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0))" ( (binary_expression "(local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)" (parenthesized_expression "(local_88 == (byte *)0x0)" ( (binary_expression "local_88 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*(byte *)((int)local_88 + 9) & 8) == 0)" ( (binary_expression "(*(byte *)((int)local_88 + 9) & 8) == 0" (parenthesized_expression "(*(byte *)((int)local_88 + 9) & 8)" ( (binary_expression "*(byte *)((int)local_88 + 9) & 8" (pointer_expression "*(byte *)((int)local_88 + 9)" * (cast_expression "(byte *)((int)local_88 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_88 + 9)" ( (binary_expression "(int)local_88 + 9" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }" { (if_statement "if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }" if (parenthesized_expression "(local_74 == (byte *)0x0)" ( (binary_expression "local_74 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }" { (labeled_statement "LAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" statement_identifier : (if_statement "if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" if (parenthesized_expression "(puVar16[0x12] == 0)" ( (binary_expression "puVar16[0x12] == 0" (subscript_expression "puVar16[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }" { (expression_statement "local_60 = "*";" (assignment_expression "local_60 = "*"" identifier = (string_literal ""*"" " string_content ")) ;) (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" else (compound_statement "{\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" { (expression_statement "iVar28 = FUN_0004c580();" (assignment_expression "iVar28 = FUN_0004c580()" identifier = (call_expression "FUN_0004c580()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }" if (parenthesized_expression "(iVar28 < 0)" ( (binary_expression "iVar28 < 0" identifier < number_literal) )) (compound_statement "{\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }" { (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = "*";" (assignment_expression "local_60 = "*"" identifier = (string_literal ""*"" " string_content ")) ;) }) (else_clause "else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }" else (compound_statement "{\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }" { (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (pointer_expression "*(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" * (cast_expression "(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar28 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar28 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) ))))) ;) }))) })))) (goto_statement "goto LAB_000d0474;" goto statement_identifier ;) })) (if_statement "if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }" if (parenthesized_expression "((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64])" ( (binary_expression "(&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]" (subscript_expression "(&DAT_0012c6e0)[*local_74]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*local_74" * identifier) ]) == (subscript_expression "(&DAT_0012c6e0)[*local_64]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*local_64" * identifier) ])) )) (compound_statement "{\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }" { (if_statement "if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }" if (parenthesized_expression "(*local_74 != 0)" ( (binary_expression "*local_74 != 0" (pointer_expression "*local_74" * identifier) != number_literal) )) (compound_statement "{\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }" { (expression_statement "local_88 = local_74;" (assignment_expression "local_88 = local_74" identifier = identifier) ;) (expression_statement "pbVar25 = local_64;" (assignment_expression "pbVar25 = local_64" identifier = identifier) ;) (do_statement "do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);" do (compound_statement "{\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      }" { (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;) (expression_statement "pbVar25 = pbVar25 + 1;" (assignment_expression "pbVar25 = pbVar25 + 1" identifier = (binary_expression "pbVar25 + 1" identifier + number_literal)) ;) (if_statement "if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;" if (parenthesized_expression "((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])" ( (binary_expression "(&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25]" (subscript_expression "(&DAT_0012c6e0)[*local_88]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*local_88" * identifier) ]) != (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar25" * identifier) ])) )) (goto_statement "goto LAB_000d029d;" goto statement_identifier ;)) }) while (parenthesized_expression "(*local_88 != 0)" ( (binary_expression "*local_88 != 0" (pointer_expression "*local_88" * identifier) != number_literal) )) ;) })) (goto_statement "goto LAB_000d0438;" goto statement_identifier ;) })) }) (else_clause "else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }" else (compound_statement "{\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }" { (expression_statement "local_60 = (char *)0x0;" (assignment_expression "local_60 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }" statement_identifier : (if_statement "if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }" if (parenthesized_expression "(0 < *(short *)((int)puVar16 + 0x2a))" ( (binary_expression "0 < *(short *)((int)puVar16 + 0x2a)" number_literal < (pointer_expression "*(short *)((int)puVar16 + 0x2a)" * (cast_expression "(short *)((int)puVar16 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (do_statement "do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));" do (compound_statement "{\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    }" { (expression_statement "puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);" (assignment_expression "puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1])" identifier = (cast_expression "(undefined4 *)(iVar28 * 0x10 + puVar16[1])" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 * 0x10 + puVar16[1])" ( (binary_expression "iVar28 * 0x10 + puVar16[1]" (binary_expression "iVar28 * 0x10" identifier * number_literal) + (subscript_expression "puVar16[1]" identifier [ number_literal ])) )))) ;) (expression_statement "pcVar21 = (char *)*puVar26;" (assignment_expression "pcVar21 = (char *)*puVar26" identifier = (cast_expression "(char *)*puVar26" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar26" * identifier))) ;) (if_statement "if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }" if (parenthesized_expression "(local_74 == (byte *)0x0 || local_88 == (byte *)0x0)" ( (binary_expression "local_74 == (byte *)0x0 || local_88 == (byte *)0x0" (binary_expression "local_74 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (binary_expression "local_88 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }" { (if_statement "if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }" if (parenthesized_expression "(((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0))" ( (binary_expression "((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" (parenthesized_expression "((*(byte *)((int)param_2 + 10) & 2) != 0)" ( (binary_expression "(*(byte *)((int)param_2 + 10) & 2) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 10) & 2)" ( (binary_expression "*(byte *)((int)param_2 + 10) & 2" (pointer_expression "*(byte *)((int)param_2 + 10)" * (cast_expression "(byte *)((int)param_2 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 10)" ( (binary_expression "(int)param_2 + 10" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" ( (binary_expression "(*(byte *)((int)puVar26 + 0xf) & 2) == 0" (parenthesized_expression "(*(byte *)((int)puVar26 + 0xf) & 2)" ( (binary_expression "*(byte *)((int)puVar26 + 0xf) & 2" (pointer_expression "*(byte *)((int)puVar26 + 0xf)" * (cast_expression "(byte *)((int)puVar26 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar26 + 0xf)" ( (binary_expression "(int)puVar26 + 0xf" (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }" { (if_statement "if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;" if (parenthesized_expression "(((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))" ( (binary_expression "((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))))" (parenthesized_expression "((local_78 < 1) || (local_74 != (byte *)0x0))" ( (binary_expression "(local_78 < 1) || (local_74 != (byte *)0x0)" (parenthesized_expression "(local_78 < 1)" ( (binary_expression "local_78 < 1" identifier < number_literal) )) || (parenthesized_expression "(local_74 != (byte *)0x0)" ( (binary_expression "local_74 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))))" ( (parenthesized_expression "(((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))" ( (binary_expression "((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))" (parenthesized_expression "((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0))" ( (binary_expression "(*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)" (binary_expression "(*(byte *)(local_80 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)(local_80 + 9) & 4)" ( (binary_expression "*(byte *)(local_80 + 9) & 4" (pointer_expression "*(byte *)(local_80 + 9)" * (cast_expression "(byte *)(local_80 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80 + 9)" ( (binary_expression "local_80 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "(iVar13 = FUN_00039c70(0,0), iVar13 == 0)" ( (comma_expression "iVar13 = FUN_00039c70(0,0), iVar13 == 0" (assignment_expression "iVar13 = FUN_00039c70(0,0)" identifier = (call_expression "FUN_00039c70(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) , (binary_expression "iVar13 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))" ( (parenthesized_expression "(local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))" ( (binary_expression "local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)" (binary_expression "local_80[0xc] == 0" (subscript_expression "local_80[0xc]" identifier [ number_literal ]) == number_literal) || (parenthesized_expression "(iVar13 = FUN_0004bf80(), iVar13 < 0)" ( (comma_expression "iVar13 = FUN_0004bf80(), iVar13 < 0" (assignment_expression "iVar13 = FUN_0004bf80()" identifier = (call_expression "FUN_0004bf80()" identifier (argument_list "()" ( )))) , (binary_expression "iVar13 < 0" identifier < number_literal)) ))) )) ))) )) ))) )) (goto_statement "goto LAB_000d04f4;" goto statement_identifier ;)) (goto_statement "goto LAB_000d0623;" goto statement_identifier ;) })) }) (else_clause "else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }" else (compound_statement "{\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }" { (expression_statement "iVar13 = FUN_00045a10(0);" (assignment_expression "iVar13 = FUN_00045a10(0)" identifier = (call_expression "FUN_00045a10(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }" if (parenthesized_expression "((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0))))" ( (binary_expression "(iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) && (parenthesized_expression "(((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))" ( (parenthesized_expression "((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0))" ( (binary_expression "(*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" (binary_expression "(*(byte *)((int)param_2 + 10) & 2) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 10) & 2)" ( (binary_expression "*(byte *)((int)param_2 + 10) & 2" (pointer_expression "*(byte *)((int)param_2 + 10)" * (cast_expression "(byte *)((int)param_2 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 10)" ( (binary_expression "(int)param_2 + 10" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) || (parenthesized_expression "((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" ( (binary_expression "(*(byte *)((int)puVar26 + 0xf) & 2) == 0" (parenthesized_expression "(*(byte *)((int)puVar26 + 0xf) & 2)" ( (binary_expression "*(byte *)((int)puVar26 + 0xf) & 2" (pointer_expression "*(byte *)((int)puVar26 + 0xf)" * (cast_expression "(byte *)((int)puVar26 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar26 + 0xf)" ( (binary_expression "(int)puVar26 + 0xf" (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }" { (labeled_statement "LAB_000d04f4:\n                          uVar19 = FUN_00045020();" statement_identifier : (expression_statement "uVar19 = FUN_00045020();" (assignment_expression "uVar19 = FUN_00045020()" identifier = (call_expression "FUN_00045020()" identifier (argument_list "()" ( )))) ;)) (if_statement "if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" if (parenthesized_expression "((uVar4 & 0x44) == 4)" ( (binary_expression "(uVar4 & 0x44) == 4" (parenthesized_expression "(uVar4 & 0x44)" ( (binary_expression "uVar4 & 0x44" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }" { (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar19 = FUN_00075cf0(uVar19);" (assignment_expression "uVar19 = FUN_00075cf0(uVar19)" identifier = (call_expression "FUN_00075cf0(uVar19)" identifier (argument_list "(uVar19)" ( identifier )))) ;) (if_statement "if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }" if (parenthesized_expression "(local_60 != (char *)0x0)" ( (binary_expression "local_60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }" { (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00075cf0(uVar19);" (call_expression "FUN_00075cf0(uVar19)" identifier (argument_list "(uVar19)" ( identifier ))) ;) })) (expression_statement "pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);" (assignment_expression "pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21)" identifier = (cast_expression "(char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21)" identifier (argument_list "(iVar3,"%s.%s",local_64,pcVar21)" ( identifier , (string_literal ""%s.%s"" " string_content ") , identifier , identifier ))))) ;) (expression_statement "local_68 = pcVar21;" (assignment_expression "local_68 = pcVar21" identifier = identifier) ;) }) (else_clause "else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" else (compound_statement "{\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" { (if_statement "if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }" if (parenthesized_expression "(1 < *piVar5)" ( (binary_expression "1 < *piVar5" number_literal < (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }" { (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar19 = FUN_00075cf0(uVar19);" (assignment_expression "uVar19 = FUN_00075cf0(uVar19)" identifier = (call_expression "FUN_00075cf0(uVar19)" identifier (argument_list "(uVar19)" ( identifier )))) ;) (if_statement "if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }" if (parenthesized_expression "(local_60 != (char *)0x0)" ( (binary_expression "local_60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }" { (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00075cf0(uVar19);" (call_expression "FUN_00075cf0(uVar19)" identifier (argument_list "(uVar19)" ( identifier ))) ;) })) })) (expression_statement "local_68 = (char *)0x0;" (assignment_expression "local_68 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "piVar27 = (int *)FUN_000675b0();" (assignment_expression "piVar27 = (int *)FUN_000675b0()" identifier = (cast_expression "(int *)FUN_000675b0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000675b0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_28 = pcVar21;" (assignment_expression "local_28 = pcVar21" identifier = identifier) ;) (if_statement "if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            local_24 = 0;\n                          }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }" else (compound_statement "{\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }" { (expression_statement "sVar20 = strlen(pcVar21);" (assignment_expression "sVar20 = strlen(pcVar21)" identifier = (call_expression "strlen(pcVar21)" identifier (argument_list "(pcVar21)" ( identifier )))) ;) (expression_statement "local_24 = sVar20 & 0x3fffffff;" (assignment_expression "local_24 = sVar20 & 0x3fffffff" identifier = (binary_expression "sVar20 & 0x3fffffff" identifier & number_literal)) ;) }))) (if_statement "if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }" if (parenthesized_expression "((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0))" ( (binary_expression "(piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)" (parenthesized_expression "(piVar27 != (int *)0x0)" ( (binary_expression "piVar27 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)" ( (comma_expression "FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0" (call_expression "FUN_0004b9c0(0)" identifier (argument_list "(0)" ( number_literal ))) , (binary_expression "(*(byte *)((int)param_2 + 9) & 8) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 9) & 8)" ( (binary_expression "*(byte *)((int)param_2 + 9) & 8" (pointer_expression "*(byte *)((int)param_2 + 9)" * (cast_expression "(byte *)((int)param_2 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 9)" ( (binary_expression "(int)param_2 + 9" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }" { (expression_statement "iVar13 = *piVar27 + -1;" (assignment_expression "iVar13 = *piVar27 + -1" identifier = (binary_expression "*piVar27 + -1" (pointer_expression "*piVar27" * identifier) + number_literal)) ;) (if_statement "if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" if (parenthesized_expression "(local_88 == (byte *)0x0)" ( (binary_expression "local_88 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" { (expression_statement "iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);" (assignment_expression "iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21)" identifier = (call_expression "FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21)" identifier (argument_list "(iVar3,"%s.%s.%s",local_60,local_64,pcVar21)" ( identifier , (string_literal ""%s.%s.%s"" " string_content ") , identifier , identifier , identifier )))) ;) (expression_statement "piVar27[iVar13 * 5 + 3] = iVar17;" (assignment_expression "piVar27[iVar13 * 5 + 3] = iVar17" (subscript_expression "piVar27[iVar13 * 5 + 3]" identifier [ (binary_expression "iVar13 * 5 + 3" (binary_expression "iVar13 * 5" identifier * number_literal) + number_literal) ]) = identifier) ;) }) (else_clause "else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" else (compound_statement "{\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" { (expression_statement "iVar17 = FUN_00044980();" (assignment_expression "iVar17 = FUN_00044980()" identifier = (call_expression "FUN_00044980()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar27[iVar13 * 5 + 3] = iVar17;" (assignment_expression "piVar27[iVar13 * 5 + 3] = iVar17" (subscript_expression "piVar27[iVar13 * 5 + 3]" identifier [ (binary_expression "iVar13 * 5 + 3" (binary_expression "iVar13 * 5" identifier * number_literal) + number_literal) ]) = identifier) ;) }))) (expression_statement "pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);" (assignment_expression "pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11)" identifier = (cast_expression "(byte *)((int)piVar27 + iVar13 * 0x14 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 + iVar13 * 0x14 + 0x11)" ( (binary_expression "(int)piVar27 + iVar13 * 0x14 + 0x11" (binary_expression "(int)piVar27 + iVar13 * 0x14" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar13 * 0x14" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar25 = *pbVar25 | 2;" (assignment_expression "*pbVar25 = *pbVar25 | 2" (pointer_expression "*pbVar25" * identifier) = (binary_expression "*pbVar25 | 2" (pointer_expression "*pbVar25" * identifier) | number_literal)) ;) })) (if_statement "if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }" if (parenthesized_expression "(local_68 != (char *)0x0)" ( (binary_expression "local_68 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            FUN_000428d0();\n                          }" { (expression_statement "FUN_000428d0();" (call_expression "FUN_000428d0()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_000d0623:\n                          bVar29 = true;" statement_identifier : (expression_statement "bVar29 = true;" (assignment_expression "bVar29 = true" identifier = true) ;)) })) }))) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar28 < *(short *)((int)puVar16 + 0x2a))" ( (binary_expression "iVar28 < *(short *)((int)puVar16 + 0x2a)" identifier < (pointer_expression "*(short *)((int)puVar16 + 0x2a)" * (cast_expression "(short *)((int)puVar16 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) ;) }))) }))) (labeled_statement "LAB_000d029d:\n                local_78 = local_78 + 1;" statement_identifier : (expression_statement "local_78 = local_78 + 1;" (assignment_expression "local_78 = local_78 + 1" identifier = (binary_expression "local_78 + 1" identifier + number_literal)) ;)) (expression_statement "local_80 = local_80 + 0x11;" (assignment_expression "local_80 = local_80 + 0x11" identifier = (binary_expression "local_80 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_78 < *piVar5)" ( (binary_expression "local_78 < *piVar5" identifier < (pointer_expression "*piVar5" * identifier)) )) ;) (if_statement "if (!bVar29) goto LAB_000d02c3;" if (parenthesized_expression "(!bVar29)" ( (unary_expression "!bVar29" ! identifier) )) (goto_statement "goto LAB_000d02c3;" goto statement_identifier ;)) }))) }) (else_clause "else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" else (if_statement "if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" if (parenthesized_expression "((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58))" ( (binary_expression "(cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)" (parenthesized_expression "(cVar12 == -0x7e)" ( (binary_expression "cVar12 == -0x7e" identifier == number_literal) )) && (parenthesized_expression "(**(char **)(pcVar21 + 0x10) == -0x58)" ( (binary_expression "**(char **)(pcVar21 + 0x10) == -0x58" (pointer_expression "**(char **)(pcVar21 + 0x10)" * (pointer_expression "*(char **)(pcVar21 + 0x10)" * (cast_expression "(char **)(pcVar21 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x10)" ( (binary_expression "pcVar21 + 0x10" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }" { (expression_statement "local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);" (assignment_expression "local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8)" identifier = (pointer_expression "*(byte **)(*(int *)(pcVar21 + 0xc) + 8)" * (cast_expression "(byte **)(*(int *)(pcVar21 + 0xc) + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar21 + 0xc) + 8)" ( (binary_expression "*(int *)(pcVar21 + 0xc) + 8" (pointer_expression "*(int *)(pcVar21 + 0xc)" * (cast_expression "(int *)(pcVar21 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0xc)" ( (binary_expression "pcVar21 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (0 < *piVar5) goto LAB_000d01d4;" if (parenthesized_expression "(0 < *piVar5)" ( (binary_expression "0 < *piVar5" number_literal < (pointer_expression "*piVar5" * identifier)) )) (goto_statement "goto LAB_000d01d4;" goto statement_identifier ;)) (labeled_statement "LAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;" statement_identifier : (if_statement "if (local_74 == (byte *)0x0) goto LAB_000d0870;" if (parenthesized_expression "(local_74 == (byte *)0x0)" ( (binary_expression "local_74 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000d0870;" goto statement_identifier ;))) (expression_statement "FUN_00074ee0(piVar2,"no such table: %s",local_74);" (call_expression "FUN_00074ee0(piVar2,"no such table: %s",local_74)" identifier (argument_list "(piVar2,"no such table: %s",local_74)" ( identifier , (string_literal ""no such table: %s"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" else (compound_statement "{\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" { (expression_statement "piVar27 = (int *)FUN_000675b0();" (assignment_expression "piVar27 = (int *)FUN_000675b0()" identifier = (cast_expression "(int *)FUN_000675b0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000675b0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }" if (parenthesized_expression "(piVar27 != (int *)0x0)" ( (binary_expression "piVar27 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }" { (expression_statement "iVar28 = *piVar27;" (assignment_expression "iVar28 = *piVar27" identifier = (pointer_expression "*piVar27" * identifier)) ;) (expression_statement "piVar27[iVar28 * 5 + -3] = local_4c[1];" (assignment_expression "piVar27[iVar28 * 5 + -3] = local_4c[1]" (subscript_expression "piVar27[iVar28 * 5 + -3]" identifier [ (binary_expression "iVar28 * 5 + -3" (binary_expression "iVar28 * 5" identifier * number_literal) + number_literal) ]) = (subscript_expression "local_4c[1]" identifier [ number_literal ])) ;) (expression_statement "piVar27[iVar28 * 5 + -2] = local_4c[2];" (assignment_expression "piVar27[iVar28 * 5 + -2] = local_4c[2]" (subscript_expression "piVar27[iVar28 * 5 + -2]" identifier [ (binary_expression "iVar28 * 5 + -2" (binary_expression "iVar28 * 5" identifier * number_literal) + number_literal) ]) = (subscript_expression "local_4c[2]" identifier [ number_literal ])) ;) (expression_statement "local_4c[1] = 0;" (assignment_expression "local_4c[1] = 0" (subscript_expression "local_4c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[2] = 0;" (assignment_expression "local_4c[2] = 0" (subscript_expression "local_4c[2]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "*local_4c = 0;" (assignment_expression "*local_4c = 0" (pointer_expression "*local_4c" * identifier) = number_literal) ;) }))))) (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" identifier = (binary_expression "local_44 + 1" identifier + number_literal)) ;) (expression_statement "local_4c = local_4c + 5;" (assignment_expression "local_4c = local_4c + 5" identifier = (binary_expression "local_4c + 5" identifier + number_literal)) ;) (if_statement "if (*piVar6 <= local_44) goto LAB_000d07cd;" if (parenthesized_expression "(*piVar6 <= local_44)" ( (binary_expression "*piVar6 <= local_44" (pointer_expression "*piVar6" * identifier) <= identifier) )) (goto_statement "goto LAB_000d07cd;" goto statement_identifier ;)) (expression_statement "pcVar21 = (char *)*local_4c;" (assignment_expression "pcVar21 = (char *)*local_4c" identifier = (cast_expression "(char *)*local_4c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_4c" * identifier))) ;) (expression_statement "cVar12 = *pcVar21;" (assignment_expression "cVar12 = *pcVar21" identifier = (pointer_expression "*pcVar21" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar27 = (int *)*param_2;" (assignment_expression "piVar27 = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_000d07de;" goto statement_identifier ;) }))) })) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;) (labeled_statement "LAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);" statement_identifier : (do_statement "do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);" do (compound_statement "{\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  }" { (if_statement "if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }" if (parenthesized_expression "((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0))" ( (binary_expression "(*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)" (parenthesized_expression "(*piVar23 == 0)" ( (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" * identifier) == number_literal) )) && (parenthesized_expression "(pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)" ( (comma_expression "pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0" (assignment_expression "pbVar25 = (byte *)piVar23[1]" identifier = (cast_expression "(byte *)piVar23[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar23[1]" identifier [ number_literal ]))) , (binary_expression "pbVar25 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }" { (if_statement "if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }" if (parenthesized_expression "((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25])" ( (binary_expression "(&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]" (subscript_expression "(&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*(byte *)piVar8[iVar28 * 4 + 2]" * (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ]) == (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar25" * identifier) ])) )) (compound_statement "{\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }" { (if_statement "if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }" if (parenthesized_expression "(*pbVar25 != 0)" ( (binary_expression "*pbVar25 != 0" (pointer_expression "*pbVar25" * identifier) != number_literal) )) (compound_statement "{\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }" { (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (do_statement "do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);" do (compound_statement "{\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          }" { (expression_statement "pbVar14 = pbVar25 + iVar17;" (assignment_expression "pbVar14 = pbVar25 + iVar17" identifier = (binary_expression "pbVar25 + iVar17" identifier + identifier)) ;) (if_statement "if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }" if (parenthesized_expression "((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]])" ( (binary_expression "(&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]" (subscript_expression "(&DAT_0012c6e0)[*pbVar14]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar14" * identifier) ]) != (subscript_expression "(&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (subscript_expression "((byte *)piVar8[iVar28 * 4 + 2])[iVar17]" (parenthesized_expression "((byte *)piVar8[iVar28 * 4 + 2])" ( (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ])) )) [ identifier ]) ])) )) (compound_statement "{\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 0x11;" (assignment_expression "piVar23 = piVar23 + 0x11" identifier = (binary_expression "piVar23 + 0x11" identifier + number_literal)) ;) (if_statement "if (iVar13 < *piVar9) goto LAB_000cfe32;" if (parenthesized_expression "(iVar13 < *piVar9)" ( (binary_expression "iVar13 < *piVar9" identifier < (pointer_expression "*piVar9" * identifier)) )) (goto_statement "goto LAB_000cfe32;" goto statement_identifier ;)) (goto_statement "goto LAB_000cfecc;" goto statement_identifier ;) })) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pbVar14 != 0)" ( (binary_expression "*pbVar14 != 0" (pointer_expression "*pbVar14" * identifier) != number_literal) )) ;) })) (expression_statement "piVar23[3] = (int)puVar16;" (assignment_expression "piVar23[3] = (int)puVar16" (subscript_expression "piVar23[3]" identifier [ number_literal ]) = (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);" (assignment_expression "pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d)" identifier = (cast_expression "(byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + iVar13 * 0x44 + 0x2d)" ( (binary_expression "(int)piVar9 + iVar13 * 0x44 + 0x2d" (binary_expression "(int)piVar9 + iVar13 * 0x44" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar13 * 0x44" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar25 = *pbVar25 | 0x20;" (assignment_expression "*pbVar25 = *pbVar25 | 0x20" (pointer_expression "*pbVar25" * identifier) = (binary_expression "*pbVar25 | 0x20" (pointer_expression "*pbVar25" * identifier) | number_literal)) ;) (expression_statement "puVar16[8] = puVar16[8] + 1;" (assignment_expression "puVar16[8] = puVar16[8] + 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) = (binary_expression "puVar16[8] + 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar15[2] = piVar15[2] | 0x2000;" (assignment_expression "piVar15[2] = piVar15[2] | 0x2000" (subscript_expression "piVar15[2]" identifier [ number_literal ]) = (binary_expression "piVar15[2] | 0x2000" (subscript_expression "piVar15[2]" identifier [ number_literal ]) | number_literal)) ;) })) })) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 0x11;" (assignment_expression "piVar23 = piVar23 + 0x11" identifier = (binary_expression "piVar23 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < *piVar9)" ( (binary_expression "iVar13 < *piVar9" identifier < (pointer_expression "*piVar9" * identifier)) )) ;)) (labeled_statement "LAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" statement_identifier : (if_statement "if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" if (parenthesized_expression "(2 < (uint)puVar16[8])" ( (binary_expression "2 < (uint)puVar16[8]" number_literal < (cast_expression "(uint)puVar16[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar16[8]" identifier [ number_literal ]))) )) (compound_statement "{\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" { (labeled_statement "LAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";" statement_identifier : (expression_statement "pcVar21 = "multiple references to recursive table: %s";" (assignment_expression "pcVar21 = "multiple references to recursive table: %s"" identifier = (string_literal ""multiple references to recursive table: %s"" " string_content ")) ;)) (expression_statement "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];" (assignment_expression "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2]" identifier = (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ;) (labeled_statement "LAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);" statement_identifier : (expression_statement "FUN_00074ee0(piVar7,pcVar21,pbVar14);" (call_expression "FUN_00074ee0(piVar7,pcVar21,pbVar14)" identifier (argument_list "(piVar7,pcVar21,pbVar14)" ( identifier , identifier , identifier ))) ;)) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) }))) (expression_statement "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";" (assignment_expression "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s"" (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) = (cast_expression "(int)"circular reference: %s"" ( (type_descriptor "int" primitive_type) ) (string_literal ""circular reference: %s"" " string_content "))) ;) (expression_statement "iVar13 = piVar7[0x41];" (assignment_expression "iVar13 = piVar7[0x41]" identifier = (subscript_expression "piVar7[0x41]" identifier [ number_literal ])) ;) (expression_statement "piVar7[0x41] = (int)piVar8;" (assignment_expression "piVar7[0x41] = (int)piVar8" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar17 = piVar15[0xd];" (assignment_expression "iVar17 = piVar15[0xd]" identifier = (subscript_expression "piVar15[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(iVar17 + 0x40) = piVar15[0x10];" (assignment_expression "*(int *)(iVar17 + 0x40) = piVar15[0x10]" (pointer_expression "*(int *)(iVar17 + 0x40)" * (cast_expression "(int *)(iVar17 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x40)" ( (binary_expression "iVar17 + 0x40" identifier + number_literal) )))) = (subscript_expression "piVar15[0x10]" identifier [ number_literal ])) ;) (if_statement "if (param_1[2] != 0) {\n    FUN_0004a550();\n  }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    FUN_0004a550();\n  }" { (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(iVar17 + 0x40) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + 0x40) = 0" (pointer_expression "*(undefined4 *)(iVar17 + 0x40)" * (cast_expression "(undefined4 *)(iVar17 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x40)" ( (binary_expression "iVar17 + 0x40" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;" statement_identifier : (expression_statement "piVar7[0x41] = (int)piVar8;" (assignment_expression "piVar7[0x41] = (int)piVar8" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "piVar9 = piVar15;" (assignment_expression "piVar9 = piVar15" identifier = identifier) ;) (do_statement "do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);" do (compound_statement "{\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  }" { (expression_statement "piVar23 = piVar9;" (assignment_expression "piVar23 = piVar9" identifier = identifier) ;) (expression_statement "piVar9 = (int *)piVar23[0xd];" (assignment_expression "piVar9 = (int *)piVar23[0xd]" identifier = (cast_expression "(int *)piVar23[0xd]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar23[0xd]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "piVar23 = (int *)*piVar23;" (assignment_expression "piVar23 = (int *)*piVar23" identifier = (cast_expression "(int *)*piVar23" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar23" * identifier))) ;) (if_statement "if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }" if (parenthesized_expression "(((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0))" ( (binary_expression "((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)" (parenthesized_expression "((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0)" ( (binary_expression "(int *)piVar8[iVar28 * 4 + 3] != (int *)0x0" (cast_expression "(int *)piVar8[iVar28 * 4 + 3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 3]" identifier [ (binary_expression "iVar28 * 4 + 3" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ])) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(piVar23 != (int *)0x0)" ( (binary_expression "piVar23 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }" { (expression_statement "iVar17 = *piVar23;" (assignment_expression "iVar17 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "iVar10 = *(int *)piVar8[iVar28 * 4 + 3];" (assignment_expression "iVar10 = *(int *)piVar8[iVar28 * 4 + 3]" identifier = (pointer_expression "*(int *)piVar8[iVar28 * 4 + 3]" * (cast_expression "(int *)piVar8[iVar28 * 4 + 3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 3]" identifier [ (binary_expression "iVar28 * 4 + 3" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ])))) ;) (if_statement "if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }" if (parenthesized_expression "(iVar17 != iVar10)" ( (binary_expression "iVar17 != iVar10" identifier != identifier) )) (compound_statement "{\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }" { (expression_statement "FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);" (call_expression "FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10)" identifier (argument_list "(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10)" ( identifier , (string_literal ""table %s has %d values for %d columns"" " string_content ") , (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) , identifier , identifier ))) ;) (expression_statement "piVar7[0x41] = iVar13;" (assignment_expression "piVar7[0x41] = iVar13" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) })) (expression_statement "FUN_000ae410(puVar16 + 1);" (call_expression "FUN_000ae410(puVar16 + 1)" identifier (argument_list "(puVar16 + 1)" ( (binary_expression "puVar16 + 1" identifier + number_literal) ))) ;) (if_statement "if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }" if (parenthesized_expression "(bVar11 < 2)" ( (binary_expression "bVar11 < 2" identifier < number_literal) )) (compound_statement "{\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }" { (expression_statement "pcVar21 = "multiple recursive references: %s";" (assignment_expression "pcVar21 = "multiple recursive references: %s"" identifier = (string_literal ""multiple recursive references: %s"" " string_content ")) ;) (if_statement "if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }" if (parenthesized_expression "((*(byte *)((int)piVar15 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)((int)piVar15 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)((int)piVar15 + 9) & 0x20)" ( (binary_expression "*(byte *)((int)piVar15 + 9) & 0x20" (pointer_expression "*(byte *)((int)piVar15 + 9)" * (cast_expression "(byte *)((int)piVar15 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 9)" ( (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar21 = "recursive reference in a subquery: %s";\n    }" { (expression_statement "pcVar21 = "recursive reference in a subquery: %s";" (assignment_expression "pcVar21 = "recursive reference in a subquery: %s"" identifier = (string_literal ""recursive reference in a subquery: %s"" " string_content ")) ;) })) (expression_statement "piVar8[iVar28 * 4 + 5] = (int)pcVar21;" (assignment_expression "piVar8[iVar28 * 4 + 5] = (int)pcVar21" (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) = (cast_expression "(int)pcVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (param_1[2] != 0) {\n      FUN_0004a550();\n    }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_0004a550();\n    }" { (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "piVar8[iVar28 * 4 + 5] = 0;" (assignment_expression "piVar8[iVar28 * 4 + 5] = 0" (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "piVar7[0x41] = iVar13;" (assignment_expression "piVar7[0x41] = iVar13" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }" statement_identifier : (if_statement "if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }" if (parenthesized_expression "(piVar27[4] == 0)" ( (binary_expression "piVar27[4] == 0" (subscript_expression "piVar27[4]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }" { (if_statement "if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }" if (parenthesized_expression "(piVar27[2] == 0)" ( (binary_expression "piVar27[2] == 0" (subscript_expression "piVar27[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }" { (labeled_statement "LAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;" statement_identifier : (if_statement "if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;" if (parenthesized_expression "((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0))" ( (binary_expression "(((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)" (parenthesized_expression "(((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0))" ( (binary_expression "((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)" (parenthesized_expression "((piVar27[5] != 0) && (param_1[2] != 0))" ( (binary_expression "(piVar27[5] != 0) && (param_1[2] != 0)" (parenthesized_expression "(piVar27[5] != 0)" ( (binary_expression "piVar27[5] != 0" (subscript_expression "piVar27[5]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) ))) )) && (parenthesized_expression "(iVar28 = FUN_0004a550(), iVar28 != 0)" ( (comma_expression "iVar28 = FUN_0004a550(), iVar28 != 0" (assignment_expression "iVar28 = FUN_0004a550()" identifier = (call_expression "FUN_0004a550()" identifier (argument_list "()" ( )))) , (binary_expression "iVar28 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar28 = FUN_000ae800(), iVar28 != 0)" ( (comma_expression "iVar28 = FUN_000ae800(), iVar28 != 0" (assignment_expression "iVar28 = FUN_000ae800()" identifier = (call_expression "FUN_000ae800()" identifier (argument_list "()" ( )))) , (binary_expression "iVar28 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;))) }) (else_clause "else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }" else (compound_statement "{\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }" { (labeled_statement "LAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();" statement_identifier : (expression_statement "puVar16 = (undefined4 *)FUN_000cf6d0();" (assignment_expression "puVar16 = (undefined4 *)FUN_000cf6d0()" identifier = (cast_expression "(undefined4 *)FUN_000cf6d0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000cf6d0()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "piVar27[4] = (int)puVar16;" (assignment_expression "piVar27[4] = (int)puVar16" (subscript_expression "piVar27[4]" identifier [ number_literal ]) = (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (if_statement "if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }" if (parenthesized_expression "(0xfffe < (uint)puVar16[8])" ( (binary_expression "0xfffe < (uint)puVar16[8]" number_literal < (cast_expression "(uint)puVar16[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar16[8]" identifier [ number_literal ]))) )) (compound_statement "{\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }" { (expression_statement "FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);" (call_expression "FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16)" identifier (argument_list "(piVar2,"too many references to \"%s\": max 65535",*puVar16)" ( identifier , (string_literal ""too many references to \"%s\": max 65535"" " string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression "*puVar16" * identifier) ))) ;) (expression_statement "piVar27[4] = 0;" (assignment_expression "piVar27[4] = 0" (subscript_expression "piVar27[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) (expression_statement "puVar16[8] = puVar16[8] + 1;" (assignment_expression "puVar16[8] = puVar16[8] + 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) = (binary_expression "puVar16[8] + 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }" if (parenthesized_expression "(puVar16[0xe] == 0)" ( (binary_expression "puVar16[0xe] == 0" (subscript_expression "puVar16[0xe]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }" { (if_statement "if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }" if (parenthesized_expression "((*(byte *)((int)piVar27 + 0x25) & 4) != 0)" ( (binary_expression "(*(byte *)((int)piVar27 + 0x25) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar27 + 0x25) & 4)" ( (binary_expression "*(byte *)((int)piVar27 + 0x25) & 4" (pointer_expression "*(byte *)((int)piVar27 + 0x25)" * (cast_expression "(byte *)((int)piVar27 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 + 0x25)" ( (binary_expression "(int)piVar27 + 0x25" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }" { (expression_statement "pcVar21 = "\'%s\' is not a function";" (assignment_expression "pcVar21 = "\'%s\' is not a function"" identifier = (string_literal ""\'%s\' is not a function"" " escape_sequence string_content escape_sequence string_content ")) ;) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) (if_statement "if (puVar16[3] == 0) goto LAB_000cfc89;" if (parenthesized_expression "(puVar16[3] == 0)" ( (binary_expression "puVar16[3] == 0" (subscript_expression "puVar16[3]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000cfc89;" goto statement_identifier ;)) })) (expression_statement "iVar28 = FUN_000c26b0();" (assignment_expression "iVar28 = FUN_000c26b0()" identifier = (call_expression "FUN_000c26b0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar28 != 0) goto LAB_000cfae4;" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (expression_statement "iVar28 = FUN_0005a810();" (assignment_expression "iVar28 = FUN_0005a810()" identifier = (call_expression "FUN_0005a810()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar27[5] = iVar28;" (assignment_expression "piVar27[5] = iVar28" (subscript_expression "piVar27[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);" (assignment_expression "uVar1 = *(undefined2 *)((int)puVar16 + 0x2a)" identifier = (pointer_expression "*(undefined2 *)((int)puVar16 + 0x2a)" * (cast_expression "(undefined2 *)((int)puVar16 + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;" (assignment_expression "*(undefined2 *)((int)puVar16 + 0x2a) = 0xffff" (pointer_expression "*(undefined2 *)((int)puVar16 + 0x2a)" * (cast_expression "(undefined2 *)((int)puVar16 + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }" if (parenthesized_expression "((piVar27[5] != 0) && (param_1[2] != 0))" ( (binary_expression "(piVar27[5] != 0) && (param_1[2] != 0)" (parenthesized_expression "(piVar27[5] != 0)" ( (binary_expression "piVar27[5] != 0" (subscript_expression "piVar27[5]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        FUN_0004a550();\n      }" { (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined2 *)((int)puVar16 + 0x2a) = uVar1;" (assignment_expression "*(undefined2 *)((int)puVar16 + 0x2a) = uVar1" (pointer_expression "*(undefined2 *)((int)puVar16 + 0x2a)" * (cast_expression "(undefined2 *)((int)puVar16 + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }))) }))) (labeled_statement "LAB_000cfc89:\n  iVar28 = FUN_000757e0();" statement_identifier : (expression_statement "iVar28 = FUN_000757e0();" (assignment_expression "iVar28 = FUN_000757e0()" identifier = (call_expression "FUN_000757e0()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar28 != 0) goto LAB_000cfae4;" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (labeled_statement "LAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);" statement_identifier : (expression_statement "local_88 = (byte *)((int)local_88 + 1);" (assignment_expression "local_88 = (byte *)((int)local_88 + 1)" identifier = (cast_expression "(byte *)((int)local_88 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_88 + 1)" ( (binary_expression "(int)local_88 + 1" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) (expression_statement "piVar27 = piVar27 + 0x11;" (assignment_expression "piVar27 = piVar27 + 0x11" identifier = (binary_expression "piVar27 + 0x11" identifier + number_literal)) ;) (if_statement "if (*piVar5 <= (int)local_88) goto LAB_000cf928;" if (parenthesized_expression "(*piVar5 <= (int)local_88)" ( (binary_expression "*piVar5 <= (int)local_88" (pointer_expression "*piVar5" * identifier) <= (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000cf928;" goto statement_identifier ;)) (goto_statement "goto LAB_000cf800;" goto statement_identifier ;) (labeled_statement "LAB_000d07cd:\n  FUN_00056520();" statement_identifier : (expression_statement "FUN_00056520();" (call_expression "FUN_00056520()" identifier (argument_list "()" ( ))) ;)) (expression_statement "*param_2 = (int)piVar27;" (assignment_expression "*param_2 = (int)piVar27" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_000d07de:\n  local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (if_statement "if (piVar27 == (int *)0x0) goto LAB_000cfaec;" if (parenthesized_expression "(piVar27 == (int *)0x0)" ( (binary_expression "piVar27 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;)) (if_statement "if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }" if (parenthesized_expression "(*piVar27 <= *(int *)(iVar3 + 0x70))" ( (binary_expression "*piVar27 <= *(int *)(iVar3 + 0x70)" (pointer_expression "*piVar27" * identifier) <= (pointer_expression "*(int *)(iVar3 + 0x70)" * (cast_expression "(int *)(iVar3 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x70)" ( (binary_expression "iVar3 + 0x70" identifier + number_literal) ))))) )) (compound_statement "{\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }" { (if_statement "if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }" if (parenthesized_expression "(((uint)local_40 & 0x200004) != 0)" ( (binary_expression "((uint)local_40 & 0x200004) != 0" (parenthesized_expression "((uint)local_40 & 0x200004)" ( (binary_expression "(uint)local_40 & 0x200004" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      param_2[2] = param_2[2] | 0x40000;\n    }" { (expression_statement "param_2[2] = param_2[2] | 0x40000;" (assignment_expression "param_2[2] = param_2[2] | 0x40000" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] | 0x40000" (subscript_expression "param_2[2]" identifier [ number_literal ]) | number_literal)) ;) })) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) (expression_statement "pcVar21 = "too many columns in result set";" (assignment_expression "pcVar21 = "too many columns in result set"" identifier = (string_literal ""too many columns in result set"" " string_content ")) ;) (labeled_statement "LAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);" statement_identifier : (expression_statement "FUN_00074ee0(piVar2,pcVar21);" (call_expression "FUN_00074ee0(piVar2,pcVar21)" identifier (argument_list "(piVar2,pcVar21)" ( identifier , identifier ))) ;)) (labeled_statement "LAB_000cfae4:\n  local_48 = 2;" statement_identifier : (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;)) (labeled_statement "LAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_48;\n  }" { (return_statement "return local_48;" return identifier ;) }))) comment (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */\n/* WARNING: Unknown calling convention */\n\nint selectExpander(Walker *pWalker,Select *p)\n\n{\n  undefined1 *puVar1;\n  Column **ppCVar2;\n  i16 iVar3;\n  Parse *pParse;\n  int iVar4;\n  sqlite3 *db;\n  SrcList *pList;\n  ExprList *pList_00;\n  byte *pbVar5;\n  Parse *pParse_00;\n  SrcList *pSVar6;\n  sqlite3 *db_00;\n  Select *pSVar7;\n  ExprList *pEVar8;\n  bool bVar9;\n  u64 uVar10;\n  byte bVar11;\n  u8 uVar12;\n  int iVar13;\n  uint uVar14;\n  Expr *pEVar15;\n  byte *pbVar16;\n  Table *pTVar17;\n  Select *pSVar18;\n  int iVar19;\n  Expr *pEVar20;\n  size_t sVar21;\n  char *pcVar22;\n  u8 uVar23;\n  anon_struct_4_7_7ffbf296_for_fg p_00;\n  char **ppcVar24;\n  byte *pbVar25;\n  Select *pSVar26;\n  Column **ppCVar27;\n  With *pWVar28;\n  Column *pCVar29;\n  SrcList_item *pFrom;\n  ExprList *pEVar30;\n  int iVar31;\n  int in_GS_OFFSET;\n  bool bVar32;\n  char *in_stack_ffffff68;\n  Column **in_stack_ffffff6c;\n  int *piTab;\n  sqlite3 *in_stack_ffffff74;\n  Select *pSVar33;\n  Expr **ppWhere;\n  byte bVar34;\n  With *in_stack_ffffff7c;\n  With *pWVar35;\n  uint uVar36;\n  SrcList_item *local_80;\n  int local_78;\n  Column **local_74;\n  int local_70;\n  char *local_68;\n  Column **local_64;\n  char *local_60;\n  ExprList_item *local_4c;\n  int local_48;\n  int local_44;\n  SrcList *local_40;\n  int iLeft;\n  Token sColname;\n  \n  pParse = pWalker->pParse;\n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  db = pParse->db;\n  uVar14 = p->selFlags;\n  p->selFlags = uVar14 | 0x40;\n  if (db->mallocFailed == '\0') {\n    if ((uVar14 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    pList = p->pSrc;\n    pList_00 = p->pEList;\n    pWVar35 = p->pWith;\n    if (pWVar35 != (With *)0x0) {\n      pWVar35->pOuter = pParse->pWith;\n      pParse->pWith = pWVar35;\n    }\n    piTab = (int *)0xcf7c5;\n    sqlite3SrcListAssignCursors(pParse,pList);\n    if (0 < pList->nSrc) {\n      pSVar33 = (Select *)0x0;\n      pFrom = pList->a;\nLAB_000cf800:\n      bVar11 = (pFrom->fg).field_0x1;\n      if ((bVar11 & 0x20) != 0) goto LAB_000cf910;\n      if (pFrom->zDatabase != (char *)0x0) goto LAB_000cfc82;\n      pbVar5 = (byte *)pFrom->zName;\n      if (pbVar5 == (byte *)0x0) {\n        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      pParse_00 = pWalker->pParse;\n      for (pWVar35 = pParse_00->pWith; in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0;\n          pWVar35 = pWVar35->pOuter) {\n        if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }\n      }\n      if (pFrom->pTab == (Table *)0x0) goto LAB_000cfcb3;\n      piTab = (int *)0xcf908;\n      iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n      in_stack_ffffff7c = pWVar35;\n      if (iVar31 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (db->mallocFailed == '\0') {\n      pSVar6 = p->pSrc;\n      local_40 = pSVar6 + 1;\n      if (1 < pSVar6->nSrc) {\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }\n      if (0 < pList_00->nExpr) {\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }\n      local_40 = (SrcList *)0x0;\n      pEVar30 = p->pEList;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)) {\n      pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n      if (""[*pbVar16] == ""[*pbVar5]) {\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    ppcVar24 = ppcVar24 + 0x11;\n  } while (iVar13 < pSVar6->nSrc);\nLAB_000cfecc:\n  if (2 < pTVar17->nTabRef) {\nLAB_000cffd0:\n    pcVar22 = "multiple references to recursive table: %s";\n    pbVar16 = (byte *)in_stack_ffffff7c->a[iVar31].zName;\nLAB_000cfd64:\n    sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n  pWVar28 = pParse_00->pWith;\n  pParse_00->pWith = in_stack_ffffff7c;\n  pSVar7 = pSVar18->pPrior;\n  pSVar7->pWith = pSVar18->pWith;\n  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n    sqlite3WalkSelect(pWalker,pSVar7);\n  }\n  pSVar7->pWith = (With *)0x0;\nLAB_000cfc05:\n  pParse_00->pWith = in_stack_ffffff7c;\n  pSVar7 = pSVar18;\n  do {\n    pSVar26 = pSVar7;\n    pSVar7 = pSVar26->pPrior;\n  } while (pSVar7 != (Select *)0x0);\n  pEVar30 = pSVar26->pEList;\n  pEVar8 = pWVar35->a[iVar31].pCols;\n  if ((pEVar8 != (ExprList *)0x0) && (pEVar30 != (ExprList *)0x0)) {\n    iVar13 = pEVar30->nExpr;\n    iVar19 = pEVar8->nExpr;\n    if (iVar13 != iVar19) {\n      sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19);\n      pParse_00->pWith = pWVar28;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  sqlite3ColumnsFromExprList\n            ((Parse *)pParse_00->db,(ExprList *)&pTVar17->aCol,(i16 *)in_stack_ffffff68,\n             in_stack_ffffff6c);\n  if (bVar11 < 2) {\n    pcVar22 = "multiple recursive references: %s";\n    if ((pSVar18->selFlags & 0x2000) == 0) {\n      pcVar22 = "recursive reference in a subquery: %s";\n    }\n    pWVar35->a[iVar31].zCteErr = pcVar22;\n    if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n      sqlite3WalkSelect(pWalker,pSVar18);\n    }\n  }\n  pWVar35->a[iVar31].zCteErr = (char *)0x0;\n  pParse_00->pWith = pWVar28;\nLAB_000cfc82:\n  if (pFrom->pTab == (Table *)0x0) {\n    if (pFrom->zName == (char *)0x0) {\nLAB_000cfd90:\n      if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);\n      pFrom->pTab = pTVar17;\n      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n      if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      pTVar17->nTabRef = pTVar17->nTabRef + 1;\n      if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }\n      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);\n      if (iVar31 != 0) goto LAB_000cfae4;\n      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n      pFrom->pSelect = pSVar18;\n      iVar3 = pTVar17->nCol;\n      pTVar17->nCol = -1;\n      if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }\n      pTVar17->nCol = iVar3;\n    }\n  }\nLAB_000cfc89:\n  piTab = (int *)0xcfc94;\n  iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n  if (iVar31 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  pSVar33 = (Select *)((int)&pSVar33->pEList + 1);\n  pFrom = pFrom + 1;\n  if (pList->nSrc <= (int)pSVar33) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  exprListDeleteNN(db,pList_00);\n  p->pEList = pEVar30;\nLAB_000d07de:\n  local_48 = 0;\n  if (pEVar30 == (ExprList *)0x0) goto LAB_000cfaec;\n  if (pEVar30->nExpr <= db->aLimit[2]) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      p->selFlags = p->selFlags | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar22 = "too many columns in result set";\nLAB_000cfad7:\n  sqlite3ErrorMsg(pParse,pcVar22);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}\n\n" comment comment (function_definition "int selectExpander(Walker *pWalker,Select *p)\n\n{\n  undefined1 *puVar1;\n  Column **ppCVar2;\n  i16 iVar3;\n  Parse *pParse;\n  int iVar4;\n  sqlite3 *db;\n  SrcList *pList;\n  ExprList *pList_00;\n  byte *pbVar5;\n  Parse *pParse_00;\n  SrcList *pSVar6;\n  sqlite3 *db_00;\n  Select *pSVar7;\n  ExprList *pEVar8;\n  bool bVar9;\n  u64 uVar10;\n  byte bVar11;\n  u8 uVar12;\n  int iVar13;\n  uint uVar14;\n  Expr *pEVar15;\n  byte *pbVar16;\n  Table *pTVar17;\n  Select *pSVar18;\n  int iVar19;\n  Expr *pEVar20;\n  size_t sVar21;\n  char *pcVar22;\n  u8 uVar23;\n  anon_struct_4_7_7ffbf296_for_fg p_00;\n  char **ppcVar24;\n  byte *pbVar25;\n  Select *pSVar26;\n  Column **ppCVar27;\n  With *pWVar28;\n  Column *pCVar29;\n  SrcList_item *pFrom;\n  ExprList *pEVar30;\n  int iVar31;\n  int in_GS_OFFSET;\n  bool bVar32;\n  char *in_stack_ffffff68;\n  Column **in_stack_ffffff6c;\n  int *piTab;\n  sqlite3 *in_stack_ffffff74;\n  Select *pSVar33;\n  Expr **ppWhere;\n  byte bVar34;\n  With *in_stack_ffffff7c;\n  With *pWVar35;\n  uint uVar36;\n  SrcList_item *local_80;\n  int local_78;\n  Column **local_74;\n  int local_70;\n  char *local_68;\n  Column **local_64;\n  char *local_60;\n  ExprList_item *local_4c;\n  int local_48;\n  int local_44;\n  SrcList *local_40;\n  int iLeft;\n  Token sColname;\n  \n  pParse = pWalker->pParse;\n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  db = pParse->db;\n  uVar14 = p->selFlags;\n  p->selFlags = uVar14 | 0x40;\n  if (db->mallocFailed == '\0') {\n    if ((uVar14 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    pList = p->pSrc;\n    pList_00 = p->pEList;\n    pWVar35 = p->pWith;\n    if (pWVar35 != (With *)0x0) {\n      pWVar35->pOuter = pParse->pWith;\n      pParse->pWith = pWVar35;\n    }\n    piTab = (int *)0xcf7c5;\n    sqlite3SrcListAssignCursors(pParse,pList);\n    if (0 < pList->nSrc) {\n      pSVar33 = (Select *)0x0;\n      pFrom = pList->a;\nLAB_000cf800:\n      bVar11 = (pFrom->fg).field_0x1;\n      if ((bVar11 & 0x20) != 0) goto LAB_000cf910;\n      if (pFrom->zDatabase != (char *)0x0) goto LAB_000cfc82;\n      pbVar5 = (byte *)pFrom->zName;\n      if (pbVar5 == (byte *)0x0) {\n        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      pParse_00 = pWalker->pParse;\n      for (pWVar35 = pParse_00->pWith; in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0;\n          pWVar35 = pWVar35->pOuter) {\n        if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }\n      }\n      if (pFrom->pTab == (Table *)0x0) goto LAB_000cfcb3;\n      piTab = (int *)0xcf908;\n      iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n      in_stack_ffffff7c = pWVar35;\n      if (iVar31 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (db->mallocFailed == '\0') {\n      pSVar6 = p->pSrc;\n      local_40 = pSVar6 + 1;\n      if (1 < pSVar6->nSrc) {\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }\n      if (0 < pList_00->nExpr) {\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }\n      local_40 = (SrcList *)0x0;\n      pEVar30 = p->pEList;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)) {\n      pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n      if (""[*pbVar16] == ""[*pbVar5]) {\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    ppcVar24 = ppcVar24 + 0x11;\n  } while (iVar13 < pSVar6->nSrc);\nLAB_000cfecc:\n  if (2 < pTVar17->nTabRef) {\nLAB_000cffd0:\n    pcVar22 = "multiple references to recursive table: %s";\n    pbVar16 = (byte *)in_stack_ffffff7c->a[iVar31].zName;\nLAB_000cfd64:\n    sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n  pWVar28 = pParse_00->pWith;\n  pParse_00->pWith = in_stack_ffffff7c;\n  pSVar7 = pSVar18->pPrior;\n  pSVar7->pWith = pSVar18->pWith;\n  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n    sqlite3WalkSelect(pWalker,pSVar7);\n  }\n  pSVar7->pWith = (With *)0x0;\nLAB_000cfc05:\n  pParse_00->pWith = in_stack_ffffff7c;\n  pSVar7 = pSVar18;\n  do {\n    pSVar26 = pSVar7;\n    pSVar7 = pSVar26->pPrior;\n  } while (pSVar7 != (Select *)0x0);\n  pEVar30 = pSVar26->pEList;\n  pEVar8 = pWVar35->a[iVar31].pCols;\n  if ((pEVar8 != (ExprList *)0x0) && (pEVar30 != (ExprList *)0x0)) {\n    iVar13 = pEVar30->nExpr;\n    iVar19 = pEVar8->nExpr;\n    if (iVar13 != iVar19) {\n      sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19);\n      pParse_00->pWith = pWVar28;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  sqlite3ColumnsFromExprList\n            ((Parse *)pParse_00->db,(ExprList *)&pTVar17->aCol,(i16 *)in_stack_ffffff68,\n             in_stack_ffffff6c);\n  if (bVar11 < 2) {\n    pcVar22 = "multiple recursive references: %s";\n    if ((pSVar18->selFlags & 0x2000) == 0) {\n      pcVar22 = "recursive reference in a subquery: %s";\n    }\n    pWVar35->a[iVar31].zCteErr = pcVar22;\n    if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n      sqlite3WalkSelect(pWalker,pSVar18);\n    }\n  }\n  pWVar35->a[iVar31].zCteErr = (char *)0x0;\n  pParse_00->pWith = pWVar28;\nLAB_000cfc82:\n  if (pFrom->pTab == (Table *)0x0) {\n    if (pFrom->zName == (char *)0x0) {\nLAB_000cfd90:\n      if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);\n      pFrom->pTab = pTVar17;\n      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n      if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      pTVar17->nTabRef = pTVar17->nTabRef + 1;\n      if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }\n      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);\n      if (iVar31 != 0) goto LAB_000cfae4;\n      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n      pFrom->pSelect = pSVar18;\n      iVar3 = pTVar17->nCol;\n      pTVar17->nCol = -1;\n      if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }\n      pTVar17->nCol = iVar3;\n    }\n  }\nLAB_000cfc89:\n  piTab = (int *)0xcfc94;\n  iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n  if (iVar31 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  pSVar33 = (Select *)((int)&pSVar33->pEList + 1);\n  pFrom = pFrom + 1;\n  if (pList->nSrc <= (int)pSVar33) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  exprListDeleteNN(db,pList_00);\n  p->pEList = pEVar30;\nLAB_000d07de:\n  local_48 = 0;\n  if (pEVar30 == (ExprList *)0x0) goto LAB_000cfaec;\n  if (pEVar30->nExpr <= db->aLimit[2]) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      p->selFlags = p->selFlags | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar22 = "too many columns in result set";\nLAB_000cfad7:\n  sqlite3ErrorMsg(pParse,pcVar22);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" primitive_type (function_declarator "selectExpander(Walker *pWalker,Select *p)" identifier (parameter_list "(Walker *pWalker,Select *p)" ( (parameter_declaration "Walker *pWalker" type_identifier (pointer_declarator "*pWalker" * identifier)) , (parameter_declaration "Select *p" type_identifier (pointer_declarator "*p" * identifier)) ))) (compound_statement "{\n  undefined1 *puVar1;\n  Column **ppCVar2;\n  i16 iVar3;\n  Parse *pParse;\n  int iVar4;\n  sqlite3 *db;\n  SrcList *pList;\n  ExprList *pList_00;\n  byte *pbVar5;\n  Parse *pParse_00;\n  SrcList *pSVar6;\n  sqlite3 *db_00;\n  Select *pSVar7;\n  ExprList *pEVar8;\n  bool bVar9;\n  u64 uVar10;\n  byte bVar11;\n  u8 uVar12;\n  int iVar13;\n  uint uVar14;\n  Expr *pEVar15;\n  byte *pbVar16;\n  Table *pTVar17;\n  Select *pSVar18;\n  int iVar19;\n  Expr *pEVar20;\n  size_t sVar21;\n  char *pcVar22;\n  u8 uVar23;\n  anon_struct_4_7_7ffbf296_for_fg p_00;\n  char **ppcVar24;\n  byte *pbVar25;\n  Select *pSVar26;\n  Column **ppCVar27;\n  With *pWVar28;\n  Column *pCVar29;\n  SrcList_item *pFrom;\n  ExprList *pEVar30;\n  int iVar31;\n  int in_GS_OFFSET;\n  bool bVar32;\n  char *in_stack_ffffff68;\n  Column **in_stack_ffffff6c;\n  int *piTab;\n  sqlite3 *in_stack_ffffff74;\n  Select *pSVar33;\n  Expr **ppWhere;\n  byte bVar34;\n  With *in_stack_ffffff7c;\n  With *pWVar35;\n  uint uVar36;\n  SrcList_item *local_80;\n  int local_78;\n  Column **local_74;\n  int local_70;\n  char *local_68;\n  Column **local_64;\n  char *local_60;\n  ExprList_item *local_4c;\n  int local_48;\n  int local_44;\n  SrcList *local_40;\n  int iLeft;\n  Token sColname;\n  \n  pParse = pWalker->pParse;\n  iVar4 = *(int *)(in_GS_OFFSET + 0x14);\n  db = pParse->db;\n  uVar14 = p->selFlags;\n  p->selFlags = uVar14 | 0x40;\n  if (db->mallocFailed == '\0') {\n    if ((uVar14 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    pList = p->pSrc;\n    pList_00 = p->pEList;\n    pWVar35 = p->pWith;\n    if (pWVar35 != (With *)0x0) {\n      pWVar35->pOuter = pParse->pWith;\n      pParse->pWith = pWVar35;\n    }\n    piTab = (int *)0xcf7c5;\n    sqlite3SrcListAssignCursors(pParse,pList);\n    if (0 < pList->nSrc) {\n      pSVar33 = (Select *)0x0;\n      pFrom = pList->a;\nLAB_000cf800:\n      bVar11 = (pFrom->fg).field_0x1;\n      if ((bVar11 & 0x20) != 0) goto LAB_000cf910;\n      if (pFrom->zDatabase != (char *)0x0) goto LAB_000cfc82;\n      pbVar5 = (byte *)pFrom->zName;\n      if (pbVar5 == (byte *)0x0) {\n        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      pParse_00 = pWalker->pParse;\n      for (pWVar35 = pParse_00->pWith; in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0;\n          pWVar35 = pWVar35->pOuter) {\n        if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }\n      }\n      if (pFrom->pTab == (Table *)0x0) goto LAB_000cfcb3;\n      piTab = (int *)0xcf908;\n      iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n      in_stack_ffffff7c = pWVar35;\n      if (iVar31 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (db->mallocFailed == '\0') {\n      pSVar6 = p->pSrc;\n      local_40 = pSVar6 + 1;\n      if (1 < pSVar6->nSrc) {\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }\n      if (0 < pList_00->nExpr) {\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }\n      local_40 = (SrcList *)0x0;\n      pEVar30 = p->pEList;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)) {\n      pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n      if (""[*pbVar16] == ""[*pbVar5]) {\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    ppcVar24 = ppcVar24 + 0x11;\n  } while (iVar13 < pSVar6->nSrc);\nLAB_000cfecc:\n  if (2 < pTVar17->nTabRef) {\nLAB_000cffd0:\n    pcVar22 = "multiple references to recursive table: %s";\n    pbVar16 = (byte *)in_stack_ffffff7c->a[iVar31].zName;\nLAB_000cfd64:\n    sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n  pWVar28 = pParse_00->pWith;\n  pParse_00->pWith = in_stack_ffffff7c;\n  pSVar7 = pSVar18->pPrior;\n  pSVar7->pWith = pSVar18->pWith;\n  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n    sqlite3WalkSelect(pWalker,pSVar7);\n  }\n  pSVar7->pWith = (With *)0x0;\nLAB_000cfc05:\n  pParse_00->pWith = in_stack_ffffff7c;\n  pSVar7 = pSVar18;\n  do {\n    pSVar26 = pSVar7;\n    pSVar7 = pSVar26->pPrior;\n  } while (pSVar7 != (Select *)0x0);\n  pEVar30 = pSVar26->pEList;\n  pEVar8 = pWVar35->a[iVar31].pCols;\n  if ((pEVar8 != (ExprList *)0x0) && (pEVar30 != (ExprList *)0x0)) {\n    iVar13 = pEVar30->nExpr;\n    iVar19 = pEVar8->nExpr;\n    if (iVar13 != iVar19) {\n      sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19);\n      pParse_00->pWith = pWVar28;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  sqlite3ColumnsFromExprList\n            ((Parse *)pParse_00->db,(ExprList *)&pTVar17->aCol,(i16 *)in_stack_ffffff68,\n             in_stack_ffffff6c);\n  if (bVar11 < 2) {\n    pcVar22 = "multiple recursive references: %s";\n    if ((pSVar18->selFlags & 0x2000) == 0) {\n      pcVar22 = "recursive reference in a subquery: %s";\n    }\n    pWVar35->a[iVar31].zCteErr = pcVar22;\n    if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n      sqlite3WalkSelect(pWalker,pSVar18);\n    }\n  }\n  pWVar35->a[iVar31].zCteErr = (char *)0x0;\n  pParse_00->pWith = pWVar28;\nLAB_000cfc82:\n  if (pFrom->pTab == (Table *)0x0) {\n    if (pFrom->zName == (char *)0x0) {\nLAB_000cfd90:\n      if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);\n      pFrom->pTab = pTVar17;\n      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n      if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      pTVar17->nTabRef = pTVar17->nTabRef + 1;\n      if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }\n      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);\n      if (iVar31 != 0) goto LAB_000cfae4;\n      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n      pFrom->pSelect = pSVar18;\n      iVar3 = pTVar17->nCol;\n      pTVar17->nCol = -1;\n      if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }\n      pTVar17->nCol = iVar3;\n    }\n  }\nLAB_000cfc89:\n  piTab = (int *)0xcfc94;\n  iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n  if (iVar31 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  pSVar33 = (Select *)((int)&pSVar33->pEList + 1);\n  pFrom = pFrom + 1;\n  if (pList->nSrc <= (int)pSVar33) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  exprListDeleteNN(db,pList_00);\n  p->pEList = pEVar30;\nLAB_000d07de:\n  local_48 = 0;\n  if (pEVar30 == (ExprList *)0x0) goto LAB_000cfaec;\n  if (pEVar30->nExpr <= db->aLimit[2]) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      p->selFlags = p->selFlags | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar22 = "too many columns in result set";\nLAB_000cfad7:\n  sqlite3ErrorMsg(pParse,pcVar22);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    /* WARNING: Subroutine does not return */\n  __stack_chk_fail_local();\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "Column **ppCVar2;" type_identifier (pointer_declarator "**ppCVar2" * (pointer_declarator "*ppCVar2" * identifier)) ;) (declaration "i16 iVar3;" type_identifier identifier ;) (declaration "Parse *pParse;" type_identifier (pointer_declarator "*pParse" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "SrcList *pList;" type_identifier (pointer_declarator "*pList" * identifier) ;) (declaration "ExprList *pList_00;" type_identifier (pointer_declarator "*pList_00" * identifier) ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "Parse *pParse_00;" type_identifier (pointer_declarator "*pParse_00" * identifier) ;) (declaration "SrcList *pSVar6;" type_identifier (pointer_declarator "*pSVar6" * identifier) ;) (declaration "sqlite3 *db_00;" type_identifier (pointer_declarator "*db_00" * identifier) ;) (declaration "Select *pSVar7;" type_identifier (pointer_declarator "*pSVar7" * identifier) ;) (declaration "ExprList *pEVar8;" type_identifier (pointer_declarator "*pEVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "u64 uVar10;" type_identifier identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "u8 uVar12;" type_identifier identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "Expr *pEVar15;" type_identifier (pointer_declarator "*pEVar15" * identifier) ;) (declaration "byte *pbVar16;" type_identifier (pointer_declarator "*pbVar16" * identifier) ;) (declaration "Table *pTVar17;" type_identifier (pointer_declarator "*pTVar17" * identifier) ;) (declaration "Select *pSVar18;" type_identifier (pointer_declarator "*pSVar18" * identifier) ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "Expr *pEVar20;" type_identifier (pointer_declarator "*pEVar20" * identifier) ;) (declaration "size_t sVar21;" primitive_type identifier ;) (declaration "char *pcVar22;" primitive_type (pointer_declarator "*pcVar22" * identifier) ;) (declaration "u8 uVar23;" type_identifier identifier ;) (declaration "anon_struct_4_7_7ffbf296_for_fg p_00;" type_identifier identifier ;) (declaration "char **ppcVar24;" primitive_type (pointer_declarator "**ppcVar24" * (pointer_declarator "*ppcVar24" * identifier)) ;) (declaration "byte *pbVar25;" type_identifier (pointer_declarator "*pbVar25" * identifier) ;) (declaration "Select *pSVar26;" type_identifier (pointer_declarator "*pSVar26" * identifier) ;) (declaration "Column **ppCVar27;" type_identifier (pointer_declarator "**ppCVar27" * (pointer_declarator "*ppCVar27" * identifier)) ;) (declaration "With *pWVar28;" type_identifier (pointer_declarator "*pWVar28" * identifier) ;) (declaration "Column *pCVar29;" type_identifier (pointer_declarator "*pCVar29" * identifier) ;) (declaration "SrcList_item *pFrom;" type_identifier (pointer_declarator "*pFrom" * identifier) ;) (declaration "ExprList *pEVar30;" type_identifier (pointer_declarator "*pEVar30" * identifier) ;) (declaration "int iVar31;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar32;" primitive_type identifier ;) (declaration "char *in_stack_ffffff68;" primitive_type (pointer_declarator "*in_stack_ffffff68" * identifier) ;) (declaration "Column **in_stack_ffffff6c;" type_identifier (pointer_declarator "**in_stack_ffffff6c" * (pointer_declarator "*in_stack_ffffff6c" * identifier)) ;) (declaration "int *piTab;" primitive_type (pointer_declarator "*piTab" * identifier) ;) (declaration "sqlite3 *in_stack_ffffff74;" type_identifier (pointer_declarator "*in_stack_ffffff74" * identifier) ;) (declaration "Select *pSVar33;" type_identifier (pointer_declarator "*pSVar33" * identifier) ;) (declaration "Expr **ppWhere;" type_identifier (pointer_declarator "**ppWhere" * (pointer_declarator "*ppWhere" * identifier)) ;) (declaration "byte bVar34;" type_identifier identifier ;) (declaration "With *in_stack_ffffff7c;" type_identifier (pointer_declarator "*in_stack_ffffff7c" * identifier) ;) (declaration "With *pWVar35;" type_identifier (pointer_declarator "*pWVar35" * identifier) ;) (declaration "uint uVar36;" type_identifier identifier ;) (declaration "SrcList_item *local_80;" type_identifier (pointer_declarator "*local_80" * identifier) ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "Column **local_74;" type_identifier (pointer_declarator "**local_74" * (pointer_declarator "*local_74" * identifier)) ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "char *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "Column **local_64;" type_identifier (pointer_declarator "**local_64" * (pointer_declarator "*local_64" * identifier)) ;) (declaration "char *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "ExprList_item *local_4c;" type_identifier (pointer_declarator "*local_4c" * identifier) ;) (declaration "int local_48;" primitive_type identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "SrcList *local_40;" type_identifier (pointer_declarator "*local_40" * identifier) ;) (declaration "int iLeft;" primitive_type identifier ;) (declaration "Token sColname;" type_identifier identifier ;) (expression_statement "pParse = pWalker->pParse;" (assignment_expression "pParse = pWalker->pParse" identifier = (field_expression "pWalker->pParse" identifier -> field_identifier)) ;) (expression_statement "iVar4 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar4 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "uVar14 = p->selFlags;" (assignment_expression "uVar14 = p->selFlags" identifier = (field_expression "p->selFlags" identifier -> field_identifier)) ;) (expression_statement "p->selFlags = uVar14 | 0x40;" (assignment_expression "p->selFlags = uVar14 | 0x40" (field_expression "p->selFlags" identifier -> field_identifier) = (binary_expression "uVar14 | 0x40" identifier | number_literal)) ;) (if_statement "if (db->mallocFailed == '\0') {\n    if ((uVar14 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    pList = p->pSrc;\n    pList_00 = p->pEList;\n    pWVar35 = p->pWith;\n    if (pWVar35 != (With *)0x0) {\n      pWVar35->pOuter = pParse->pWith;\n      pParse->pWith = pWVar35;\n    }\n    piTab = (int *)0xcf7c5;\n    sqlite3SrcListAssignCursors(pParse,pList);\n    if (0 < pList->nSrc) {\n      pSVar33 = (Select *)0x0;\n      pFrom = pList->a;\nLAB_000cf800:\n      bVar11 = (pFrom->fg).field_0x1;\n      if ((bVar11 & 0x20) != 0) goto LAB_000cf910;\n      if (pFrom->zDatabase != (char *)0x0) goto LAB_000cfc82;\n      pbVar5 = (byte *)pFrom->zName;\n      if (pbVar5 == (byte *)0x0) {\n        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      pParse_00 = pWalker->pParse;\n      for (pWVar35 = pParse_00->pWith; in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0;\n          pWVar35 = pWVar35->pOuter) {\n        if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }\n      }\n      if (pFrom->pTab == (Table *)0x0) goto LAB_000cfcb3;\n      piTab = (int *)0xcf908;\n      iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n      in_stack_ffffff7c = pWVar35;\n      if (iVar31 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (db->mallocFailed == '\0') {\n      pSVar6 = p->pSrc;\n      local_40 = pSVar6 + 1;\n      if (1 < pSVar6->nSrc) {\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }\n      if (0 < pList_00->nExpr) {\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }\n      local_40 = (SrcList *)0x0;\n      pEVar30 = p->pEList;\n      goto LAB_000d07de;\n    }\n  }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((uVar14 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    pList = p->pSrc;\n    pList_00 = p->pEList;\n    pWVar35 = p->pWith;\n    if (pWVar35 != (With *)0x0) {\n      pWVar35->pOuter = pParse->pWith;\n      pParse->pWith = pWVar35;\n    }\n    piTab = (int *)0xcf7c5;\n    sqlite3SrcListAssignCursors(pParse,pList);\n    if (0 < pList->nSrc) {\n      pSVar33 = (Select *)0x0;\n      pFrom = pList->a;\nLAB_000cf800:\n      bVar11 = (pFrom->fg).field_0x1;\n      if ((bVar11 & 0x20) != 0) goto LAB_000cf910;\n      if (pFrom->zDatabase != (char *)0x0) goto LAB_000cfc82;\n      pbVar5 = (byte *)pFrom->zName;\n      if (pbVar5 == (byte *)0x0) {\n        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      pParse_00 = pWalker->pParse;\n      for (pWVar35 = pParse_00->pWith; in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0;\n          pWVar35 = pWVar35->pOuter) {\n        if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }\n      }\n      if (pFrom->pTab == (Table *)0x0) goto LAB_000cfcb3;\n      piTab = (int *)0xcf908;\n      iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n      in_stack_ffffff7c = pWVar35;\n      if (iVar31 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (db->mallocFailed == '\0') {\n      pSVar6 = p->pSrc;\n      local_40 = pSVar6 + 1;\n      if (1 < pSVar6->nSrc) {\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }\n      if (0 < pList_00->nExpr) {\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }\n      local_40 = (SrcList *)0x0;\n      pEVar30 = p->pEList;\n      goto LAB_000d07de;\n    }\n  }" { (if_statement "if ((uVar14 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }" if (parenthesized_expression "((uVar14 & 0x40) != 0)" ( (binary_expression "(uVar14 & 0x40) != 0" (parenthesized_expression "(uVar14 & 0x40)" ( (binary_expression "uVar14 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }" { (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) (expression_statement "pList = p->pSrc;" (assignment_expression "pList = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "pList_00 = p->pEList;" (assignment_expression "pList_00 = p->pEList" identifier = (field_expression "p->pEList" identifier -> field_identifier)) ;) (expression_statement "pWVar35 = p->pWith;" (assignment_expression "pWVar35 = p->pWith" identifier = (field_expression "p->pWith" identifier -> field_identifier)) ;) (if_statement "if (pWVar35 != (With *)0x0) {\n      pWVar35->pOuter = pParse->pWith;\n      pParse->pWith = pWVar35;\n    }" if (parenthesized_expression "(pWVar35 != (With *)0x0)" ( (binary_expression "pWVar35 != (With *)0x0" identifier != (cast_expression "(With *)0x0" ( (type_descriptor "With *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      pWVar35->pOuter = pParse->pWith;\n      pParse->pWith = pWVar35;\n    }" { (expression_statement "pWVar35->pOuter = pParse->pWith;" (assignment_expression "pWVar35->pOuter = pParse->pWith" (field_expression "pWVar35->pOuter" identifier -> field_identifier) = (field_expression "pParse->pWith" identifier -> field_identifier)) ;) (expression_statement "pParse->pWith = pWVar35;" (assignment_expression "pParse->pWith = pWVar35" (field_expression "pParse->pWith" identifier -> field_identifier) = identifier) ;) })) (expression_statement "piTab = (int *)0xcf7c5;" (assignment_expression "piTab = (int *)0xcf7c5" identifier = (cast_expression "(int *)0xcf7c5" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3SrcListAssignCursors(pParse,pList);" (call_expression "sqlite3SrcListAssignCursors(pParse,pList)" identifier (argument_list "(pParse,pList)" ( identifier , identifier ))) ;) (if_statement "if (0 < pList->nSrc) {\n      pSVar33 = (Select *)0x0;\n      pFrom = pList->a;\nLAB_000cf800:\n      bVar11 = (pFrom->fg).field_0x1;\n      if ((bVar11 & 0x20) != 0) goto LAB_000cf910;\n      if (pFrom->zDatabase != (char *)0x0) goto LAB_000cfc82;\n      pbVar5 = (byte *)pFrom->zName;\n      if (pbVar5 == (byte *)0x0) {\n        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      pParse_00 = pWalker->pParse;\n      for (pWVar35 = pParse_00->pWith; in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0;\n          pWVar35 = pWVar35->pOuter) {\n        if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }\n      }\n      if (pFrom->pTab == (Table *)0x0) goto LAB_000cfcb3;\n      piTab = (int *)0xcf908;\n      iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n      in_stack_ffffff7c = pWVar35;\n      if (iVar31 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }" if (parenthesized_expression "(0 < pList->nSrc)" ( (binary_expression "0 < pList->nSrc" number_literal < (field_expression "pList->nSrc" identifier -> field_identifier)) )) (compound_statement "{\n      pSVar33 = (Select *)0x0;\n      pFrom = pList->a;\nLAB_000cf800:\n      bVar11 = (pFrom->fg).field_0x1;\n      if ((bVar11 & 0x20) != 0) goto LAB_000cf910;\n      if (pFrom->zDatabase != (char *)0x0) goto LAB_000cfc82;\n      pbVar5 = (byte *)pFrom->zName;\n      if (pbVar5 == (byte *)0x0) {\n        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      pParse_00 = pWalker->pParse;\n      for (pWVar35 = pParse_00->pWith; in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0;\n          pWVar35 = pWVar35->pOuter) {\n        if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }\n      }\n      if (pFrom->pTab == (Table *)0x0) goto LAB_000cfcb3;\n      piTab = (int *)0xcf908;\n      iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);\n      in_stack_ffffff7c = pWVar35;\n      if (iVar31 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }" { (expression_statement "pSVar33 = (Select *)0x0;" (assignment_expression "pSVar33 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFrom = pList->a;" (assignment_expression "pFrom = pList->a" identifier = (field_expression "pList->a" identifier -> field_identifier)) ;) (labeled_statement "LAB_000cf800:\n      bVar11 = (pFrom->fg).field_0x1;" statement_identifier : (expression_statement "bVar11 = (pFrom->fg).field_0x1;" (assignment_expression "bVar11 = (pFrom->fg).field_0x1" identifier = (field_expression "(pFrom->fg).field_0x1" (parenthesized_expression "(pFrom->fg)" ( (field_expression "pFrom->fg" identifier -> field_identifier) )) . field_identifier)) ;)) (if_statement "if ((bVar11 & 0x20) != 0) goto LAB_000cf910;" if (parenthesized_expression "((bVar11 & 0x20) != 0)" ( (binary_expression "(bVar11 & 0x20) != 0" (parenthesized_expression "(bVar11 & 0x20)" ( (binary_expression "bVar11 & 0x20" identifier & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000cf910;" goto statement_identifier ;)) (if_statement "if (pFrom->zDatabase != (char *)0x0) goto LAB_000cfc82;" if (parenthesized_expression "(pFrom->zDatabase != (char *)0x0)" ( (binary_expression "pFrom->zDatabase != (char *)0x0" (field_expression "pFrom->zDatabase" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfc82;" goto statement_identifier ;)) (expression_statement "pbVar5 = (byte *)pFrom->zName;" (assignment_expression "pbVar5 = (byte *)pFrom->zName" identifier = (cast_expression "(byte *)pFrom->zName" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pFrom->zName" identifier -> field_identifier))) ;) (if_statement "if (pbVar5 == (byte *)0x0) {\n        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }" if (parenthesized_expression "(pbVar5 == (byte *)0x0)" ( (binary_expression "pbVar5 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }" { (if_statement "if (pFrom->pTab == (Table *)0x0) goto LAB_000cfd90;" if (parenthesized_expression "(pFrom->pTab == (Table *)0x0)" ( (binary_expression "pFrom->pTab == (Table *)0x0" (field_expression "pFrom->pTab" identifier -> field_identifier) == (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfd90;" goto statement_identifier ;)) (goto_statement "goto LAB_000cfc89;" goto statement_identifier ;) })) (expression_statement "pParse_00 = pWalker->pParse;" (assignment_expression "pParse_00 = pWalker->pParse" identifier = (field_expression "pWalker->pParse" identifier -> field_identifier)) ;) (for_statement "for (pWVar35 = pParse_00->pWith; in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0;\n          pWVar35 = pWVar35->pOuter) {\n        if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }\n      }" for ( (assignment_expression "pWVar35 = pParse_00->pWith" identifier = (field_expression "pParse_00->pWith" identifier -> field_identifier)) ; (comma_expression "in_stack_ffffff7c = pWVar35, pWVar35 != (With *)0x0" (assignment_expression "in_stack_ffffff7c = pWVar35" identifier = identifier) , (binary_expression "pWVar35 != (With *)0x0" identifier != (cast_expression "(With *)0x0" ( (type_descriptor "With *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ; (assignment_expression "pWVar35 = pWVar35->pOuter" identifier = (field_expression "pWVar35->pOuter" identifier -> field_identifier)) ) (compound_statement "{\n        if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }\n      }" { (if_statement "if (0 < pWVar35->nCte) {\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }" if (parenthesized_expression "(0 < pWVar35->nCte)" ( (binary_expression "0 < pWVar35->nCte" number_literal < (field_expression "pWVar35->nCte" identifier -> field_identifier)) )) (compound_statement "{\n          iVar31 = 0;\n          do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);\n        }" { (expression_statement "iVar31 = 0;" (assignment_expression "iVar31 = 0" identifier = number_literal) ;) (do_statement "do {\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          } while (pWVar35->nCte != iVar31);" do (compound_statement "{\n            pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n            if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar31 = iVar31 + 1;\n          }" { (expression_statement "pbVar16 = (byte *)pWVar35->a[iVar31].zName;" (assignment_expression "pbVar16 = (byte *)pWVar35->a[iVar31].zName" identifier = (cast_expression "(byte *)pWVar35->a[iVar31].zName" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pWVar35->a[iVar31].zName" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (if_statement "if (""[*pbVar5] == ""[*pbVar16]) {\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }" if (parenthesized_expression "(""[*pbVar5] == ""[*pbVar16])" ( (binary_expression """[*pbVar5] == ""[*pbVar16]" (subscript_expression """[*pbVar5]" (string_literal """" " ") [ (pointer_expression "*pbVar5" * identifier) ]) == (subscript_expression """[*pbVar16]" (string_literal """" " ") [ (pointer_expression "*pbVar16" * identifier) ])) )) (compound_statement "{\n              if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }" { (if_statement "if (*pbVar5 == 0) {\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }" if (parenthesized_expression "(*pbVar5 == 0)" ( (binary_expression "*pbVar5 == 0" (pointer_expression "*pbVar5" * identifier) == number_literal) )) (compound_statement "{\n                pcVar22 = pWVar35->a[iVar31].zCteErr;\njoined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;\n                if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }\n                db_00 = pParse_00->db;\n                pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));\n                pFrom->pTab = pTVar17;\n                if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n                pTVar17->nTabRef = 1;\n                pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);\n                pTVar17->tabFlags = pTVar17->tabFlags | 0x42;\n                pTVar17->zName = pcVar22;\n                pTVar17->nRowLogEst = 200;\n                pTVar17->iPKey = -1;\n                pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n                pFrom->pSelect = pSVar18;\n                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;\n                bVar11 = pSVar18->op + 0x85;\n                if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }\n                pSVar6 = pSVar18->pSrc;\n                if (pSVar6->nSrc < 1) goto LAB_000cfecc;\n                ppcVar24 = &pSVar6->a[0].zDatabase;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }" { (expression_statement "pcVar22 = pWVar35->a[iVar31].zCteErr;" (assignment_expression "pcVar22 = pWVar35->a[iVar31].zCteErr" identifier = (field_expression "pWVar35->a[iVar31].zCteErr" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (labeled_statement "joined_r0x000cfd51:\n                if (pcVar22 != (char *)0x0) goto LAB_000cfd64;" statement_identifier : (if_statement "if (pcVar22 != (char *)0x0) goto LAB_000cfd64;" if (parenthesized_expression "(pcVar22 != (char *)0x0)" ( (binary_expression "pcVar22 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfd64;" goto statement_identifier ;))) (if_statement "if ((bVar11 & 4) != 0) {\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }" if (parenthesized_expression "((bVar11 & 4) != 0)" ( (binary_expression "(bVar11 & 4) != 0" (parenthesized_expression "(bVar11 & 4)" ( (binary_expression "bVar11 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                  pcVar22 = "\'%s\' is not a function";\n                  pbVar16 = pbVar5;\n                  goto LAB_000cfd64;\n                }" { (expression_statement "pcVar22 = "\'%s\' is not a function";" (assignment_expression "pcVar22 = "\'%s\' is not a function"" identifier = (string_literal ""\'%s\' is not a function"" " escape_sequence string_content escape_sequence string_content ")) ;) (expression_statement "pbVar16 = pbVar5;" (assignment_expression "pbVar16 = pbVar5" identifier = identifier) ;) (goto_statement "goto LAB_000cfd64;" goto statement_identifier ;) })) (expression_statement "db_00 = pParse_00->db;" (assignment_expression "db_00 = pParse_00->db" identifier = (field_expression "pParse_00->db" identifier -> field_identifier)) ;) (expression_statement "pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74));" (assignment_expression "pTVar17 = (Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74))" identifier = (cast_expression "(Table *)sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74))" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbMallocZero(db_00,CONCAT44(pSVar33,in_stack_ffffff74))" identifier (argument_list "(db_00,CONCAT44(pSVar33,in_stack_ffffff74))" ( identifier , (call_expression "CONCAT44(pSVar33,in_stack_ffffff74)" identifier (argument_list "(pSVar33,in_stack_ffffff74)" ( identifier , identifier ))) ))))) ;) (expression_statement "pFrom->pTab = pTVar17;" (assignment_expression "pFrom->pTab = pTVar17" (field_expression "pFrom->pTab" identifier -> field_identifier) = identifier) ;) (if_statement "if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;" if (parenthesized_expression "(pTVar17 == (Table *)0x0)" ( (binary_expression "pTVar17 == (Table *)0x0" identifier == (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (expression_statement "pTVar17->nTabRef = 1;" (assignment_expression "pTVar17->nTabRef = 1" (field_expression "pTVar17->nTabRef" identifier -> field_identifier) = number_literal) ;) (expression_statement "pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName);" (assignment_expression "pcVar22 = sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName)" identifier = (call_expression "sqlite3DbStrDup(db_00,pWVar35->a[iVar31].zName)" identifier (argument_list "(db_00,pWVar35->a[iVar31].zName)" ( identifier , (field_expression "pWVar35->a[iVar31].zName" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier) )))) ;) (expression_statement "pTVar17->tabFlags = pTVar17->tabFlags | 0x42;" (assignment_expression "pTVar17->tabFlags = pTVar17->tabFlags | 0x42" (field_expression "pTVar17->tabFlags" identifier -> field_identifier) = (binary_expression "pTVar17->tabFlags | 0x42" (field_expression "pTVar17->tabFlags" identifier -> field_identifier) | number_literal)) ;) (expression_statement "pTVar17->zName = pcVar22;" (assignment_expression "pTVar17->zName = pcVar22" (field_expression "pTVar17->zName" identifier -> field_identifier) = identifier) ;) (expression_statement "pTVar17->nRowLogEst = 200;" (assignment_expression "pTVar17->nRowLogEst = 200" (field_expression "pTVar17->nRowLogEst" identifier -> field_identifier) = number_literal) ;) (expression_statement "pTVar17->iPKey = -1;" (assignment_expression "pTVar17->iPKey = -1" (field_expression "pTVar17->iPKey" identifier -> field_identifier) = number_literal) ;) (expression_statement "pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);" (assignment_expression "pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c)" identifier = (call_expression "sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c)" identifier (argument_list "(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c)" ( identifier , identifier , (cast_expression "(int)in_stack_ffffff7c" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "pFrom->pSelect = pSVar18;" (assignment_expression "pFrom->pSelect = pSVar18" (field_expression "pFrom->pSelect" identifier -> field_identifier) = identifier) ;) (if_statement "if (db_00->mallocFailed != '\0') goto LAB_000cfae4;" if (parenthesized_expression "(db_00->mallocFailed != '\0')" ( (binary_expression "db_00->mallocFailed != '\0'" (field_expression "db_00->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (expression_statement "bVar11 = pSVar18->op + 0x85;" (assignment_expression "bVar11 = pSVar18->op + 0x85" identifier = (binary_expression "pSVar18->op + 0x85" (field_expression "pSVar18->op" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (1 < bVar11) {\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }" if (parenthesized_expression "(1 < bVar11)" ( (binary_expression "1 < bVar11" number_literal < identifier) )) (compound_statement "{\n                  if (2 < pTVar17->nTabRef) goto LAB_000cffd0;\n                  pWVar35->a[iVar31].zCteErr = "circular reference: %s";\n                  pWVar28 = pParse_00->pWith;\n                  pParse_00->pWith = in_stack_ffffff7c;\n                  if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }\n                  goto LAB_000cfc05;\n                }" { (if_statement "if (2 < pTVar17->nTabRef) goto LAB_000cffd0;" if (parenthesized_expression "(2 < pTVar17->nTabRef)" ( (binary_expression "2 < pTVar17->nTabRef" number_literal < (field_expression "pTVar17->nTabRef" identifier -> field_identifier)) )) (goto_statement "goto LAB_000cffd0;" goto statement_identifier ;)) (expression_statement "pWVar35->a[iVar31].zCteErr = "circular reference: %s";" (assignment_expression "pWVar35->a[iVar31].zCteErr = "circular reference: %s"" (field_expression "pWVar35->a[iVar31].zCteErr" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier) = (string_literal ""circular reference: %s"" " string_content ")) ;) (expression_statement "pWVar28 = pParse_00->pWith;" (assignment_expression "pWVar28 = pParse_00->pWith" identifier = (field_expression "pParse_00->pWith" identifier -> field_identifier)) ;) (expression_statement "pParse_00->pWith = in_stack_ffffff7c;" (assignment_expression "pParse_00->pWith = in_stack_ffffff7c" (field_expression "pParse_00->pWith" identifier -> field_identifier) = identifier) ;) (if_statement "if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }" if (parenthesized_expression "(pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)" ( (binary_expression "pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0" (field_expression "pWalker->xSelectCallback" identifier -> field_identifier) != (cast_expression "(_func_int_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                    sqlite3WalkSelect(pWalker,pSVar18);\n                  }" { (expression_statement "sqlite3WalkSelect(pWalker,pSVar18);" (call_expression "sqlite3WalkSelect(pWalker,pSVar18)" identifier (argument_list "(pWalker,pSVar18)" ( identifier , identifier ))) ;) })) (goto_statement "goto LAB_000cfc05;" goto statement_identifier ;) })) (expression_statement "pSVar6 = pSVar18->pSrc;" (assignment_expression "pSVar6 = pSVar18->pSrc" identifier = (field_expression "pSVar18->pSrc" identifier -> field_identifier)) ;) (if_statement "if (pSVar6->nSrc < 1) goto LAB_000cfecc;" if (parenthesized_expression "(pSVar6->nSrc < 1)" ( (binary_expression "pSVar6->nSrc < 1" (field_expression "pSVar6->nSrc" identifier -> field_identifier) < number_literal) )) (goto_statement "goto LAB_000cfecc;" goto statement_identifier ;)) (expression_statement "ppcVar24 = &pSVar6->a[0].zDatabase;" (assignment_expression "ppcVar24 = &pSVar6->a[0].zDatabase" identifier = (pointer_expression "&pSVar6->a[0].zDatabase" & (field_expression "pSVar6->a[0].zDatabase" (subscript_expression "pSVar6->a[0]" (field_expression "pSVar6->a" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000cfe32;" goto statement_identifier ;) })) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (while_statement "while (pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }" while (parenthesized_expression "(pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]])" ( (comma_expression "pbVar25 = pbVar5 + iVar13, ""[*pbVar25] == ""[pbVar16[iVar13]]" (assignment_expression "pbVar25 = pbVar5 + iVar13" identifier = (binary_expression "pbVar5 + iVar13" identifier + identifier)) , (binary_expression """[*pbVar25] == ""[pbVar16[iVar13]]" (subscript_expression """[*pbVar25]" (string_literal """" " ") [ (pointer_expression "*pbVar25" * identifier) ]) == (subscript_expression """[pbVar16[iVar13]]" (string_literal """" " ") [ (subscript_expression "pbVar16[iVar13]" identifier [ identifier ]) ]))) )) (compound_statement "{\n                iVar13 = iVar13 + 1;\n                if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }\n              }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (if_statement "if (*pbVar25 == 0) {\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }" if (parenthesized_expression "(*pbVar25 == 0)" ( (binary_expression "*pbVar25 == 0" (pointer_expression "*pbVar25" * identifier) == number_literal) )) (compound_statement "{\n                  pcVar22 = pWVar35->a[iVar31].zCteErr;\n                  goto joined_r0x000cfd51;\n                }" { (expression_statement "pcVar22 = pWVar35->a[iVar31].zCteErr;" (assignment_expression "pcVar22 = pWVar35->a[iVar31].zCteErr" identifier = (field_expression "pWVar35->a[iVar31].zCteErr" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (goto_statement "goto joined_r0x000cfd51;" goto statement_identifier ;) })) })) })) (expression_statement "iVar31 = iVar31 + 1;" (assignment_expression "iVar31 = iVar31 + 1" identifier = (binary_expression "iVar31 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(pWVar35->nCte != iVar31)" ( (binary_expression "pWVar35->nCte != iVar31" (field_expression "pWVar35->nCte" identifier -> field_identifier) != identifier) )) ;) })) })) (if_statement "if (pFrom->pTab == (Table *)0x0) goto LAB_000cfcb3;" if (parenthesized_expression "(pFrom->pTab == (Table *)0x0)" ( (binary_expression "pFrom->pTab == (Table *)0x0" (field_expression "pFrom->pTab" identifier -> field_identifier) == (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfcb3;" goto statement_identifier ;)) (expression_statement "piTab = (int *)0xcf908;" (assignment_expression "piTab = (int *)0xcf908" identifier = (cast_expression "(int *)0xcf908" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);" (assignment_expression "iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33)" identifier = (call_expression "sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33)" identifier (argument_list "((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33)" ( (cast_expression "(Parse *)in_stack_ffffff74" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(SrcList_item *)pSVar33" ( (type_descriptor "SrcList_item *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "in_stack_ffffff7c = pWVar35;" (assignment_expression "in_stack_ffffff7c = pWVar35" identifier = identifier) ;) (if_statement "if (iVar31 == 0) goto LAB_000cf910;" if (parenthesized_expression "(iVar31 == 0)" ( (binary_expression "iVar31 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000cf910;" goto statement_identifier ;)) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;) })) (labeled_statement "LAB_000cf928:\n    if (db->mallocFailed == '\0') {\n      pSVar6 = p->pSrc;\n      local_40 = pSVar6 + 1;\n      if (1 < pSVar6->nSrc) {\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }\n      if (0 < pList_00->nExpr) {\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }\n      local_40 = (SrcList *)0x0;\n      pEVar30 = p->pEList;\n      goto LAB_000d07de;\n    }" statement_identifier : (if_statement "if (db->mallocFailed == '\0') {\n      pSVar6 = p->pSrc;\n      local_40 = pSVar6 + 1;\n      if (1 < pSVar6->nSrc) {\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }\n      if (0 < pList_00->nExpr) {\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }\n      local_40 = (SrcList *)0x0;\n      pEVar30 = p->pEList;\n      goto LAB_000d07de;\n    }" if (parenthesized_expression "(db->mallocFailed == '\0')" ( (binary_expression "db->mallocFailed == '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      pSVar6 = p->pSrc;\n      local_40 = pSVar6 + 1;\n      if (1 < pSVar6->nSrc) {\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }\n      if (0 < pList_00->nExpr) {\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }\n      local_40 = (SrcList *)0x0;\n      pEVar30 = p->pEList;\n      goto LAB_000d07de;\n    }" { (expression_statement "pSVar6 = p->pSrc;" (assignment_expression "pSVar6 = p->pSrc" identifier = (field_expression "p->pSrc" identifier -> field_identifier)) ;) (expression_statement "local_40 = pSVar6 + 1;" (assignment_expression "local_40 = pSVar6 + 1" identifier = (binary_expression "pSVar6 + 1" identifier + number_literal)) ;) (if_statement "if (1 < pSVar6->nSrc) {\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }" if (parenthesized_expression "(1 < pSVar6->nSrc)" ( (binary_expression "1 < pSVar6->nSrc" number_literal < (field_expression "pSVar6->nSrc" identifier -> field_identifier)) )) (compound_statement "{\n        local_60 = (char *)0x1;\n        do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);\n      }" { (expression_statement "local_60 = (char *)0x1;" (assignment_expression "local_60 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar9);" do (compound_statement "{\n          pcVar22 = local_40->a[0].zName;\n          if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;\n          bVar9 = (int)local_60 < pSVar6->nSrc + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        }" { (expression_statement "pcVar22 = local_40->a[0].zName;" (assignment_expression "pcVar22 = local_40->a[0].zName" identifier = (field_expression "local_40->a[0].zName" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (if_statement "if ((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)) {\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }" if (parenthesized_expression "((local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0))" ( (binary_expression "(local_40[-1].a[0].pTab != (Table *)0x0) && (pcVar22 != (char *)0x0)" (parenthesized_expression "(local_40[-1].a[0].pTab != (Table *)0x0)" ( (binary_expression "local_40[-1].a[0].pTab != (Table *)0x0" (field_expression "local_40[-1].a[0].pTab" (subscript_expression "local_40[-1].a[0]" (field_expression "local_40[-1].a" (subscript_expression "local_40[-1]" identifier [ number_literal ]) . field_identifier) [ number_literal ]) . field_identifier) != (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pcVar22 != (char *)0x0)" ( (binary_expression "pcVar22 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n            bVar11 = (byte)local_40->a[0].regReturn;\n            p_00 = local_40->a[0].fg;\n            bVar34 = bVar11 & 0x20;\n            uVar14 = (uint)((bVar11 & 0x20) != 0);\n            if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }\n            local_64 = (Column **)local_40->a[0].iCursor;\n            if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }\n            if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }" { (expression_statement "bVar11 = (byte)local_40->a[0].regReturn;" (assignment_expression "bVar11 = (byte)local_40->a[0].regReturn" identifier = (cast_expression "(byte)local_40->a[0].regReturn" ( (type_descriptor "byte" type_identifier) ) (field_expression "local_40->a[0].regReturn" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (expression_statement "p_00 = local_40->a[0].fg;" (assignment_expression "p_00 = local_40->a[0].fg" identifier = (field_expression "local_40->a[0].fg" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "bVar34 = bVar11 & 0x20;" (assignment_expression "bVar34 = bVar11 & 0x20" identifier = (binary_expression "bVar11 & 0x20" identifier & number_literal)) ;) (expression_statement "uVar14 = (uint)((bVar11 & 0x20) != 0);" (assignment_expression "uVar14 = (uint)((bVar11 & 0x20) != 0)" identifier = (call_expression "(uint)((bVar11 & 0x20) != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((bVar11 & 0x20) != 0)" ( (binary_expression "(bVar11 & 0x20) != 0" (parenthesized_expression "(bVar11 & 0x20)" ( (binary_expression "bVar11 & 0x20" identifier & number_literal) )) != number_literal) )))) ;) (if_statement "if ((bVar11 & 4) != 0) {\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }" if (parenthesized_expression "((bVar11 & 4) != 0)" ( (binary_expression "(bVar11 & 4) != 0" (parenthesized_expression "(bVar11 & 4)" ( (binary_expression "bVar11 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar31 = 0;\n              ppWhere = &p->pWhere;\n              if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;\n              uVar36 = bVar11 & 0xffffff20;\n              do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));\n              bVar34 = (byte)uVar36;\n              p_00 = local_40->a[0].fg;\n            }" { (if_statement "if ((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)) {\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }" if (parenthesized_expression "((p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0))" ( (binary_expression "(p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) || (local_40->a[0].iCursor != 0)" (parenthesized_expression "(p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0)" ( (binary_expression "p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0" identifier != (cast_expression "(anon_struct_4_7_7ffbf296_for_fg)0x0" ( (type_descriptor "anon_struct_4_7_7ffbf296_for_fg" type_identifier) ) number_literal)) )) || (parenthesized_expression "(local_40->a[0].iCursor != 0)" ( (binary_expression "local_40->a[0].iCursor != 0" (field_expression "local_40->a[0].iCursor" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) != number_literal) ))) )) (compound_statement "{\n                pcVar22 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }" { (expression_statement "pcVar22 = "a NATURAL join may not have an ON or USING clause";" (assignment_expression "pcVar22 = "a NATURAL join may not have an ON or USING clause"" identifier = (string_literal ""a NATURAL join may not have an ON or USING clause"" " string_content ")) ;) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) (expression_statement "iVar31 = 0;" (assignment_expression "iVar31 = 0" identifier = number_literal) ;) (expression_statement "ppWhere = &p->pWhere;" (assignment_expression "ppWhere = &p->pWhere" identifier = (pointer_expression "&p->pWhere" & (field_expression "p->pWhere" identifier -> field_identifier))) ;) (if_statement "if (*(short *)(pcVar22 + 0x2a) < 1) goto LAB_000d0070;" if (parenthesized_expression "(*(short *)(pcVar22 + 0x2a) < 1)" ( (binary_expression "*(short *)(pcVar22 + 0x2a) < 1" (pointer_expression "*(short *)(pcVar22 + 0x2a)" * (cast_expression "(short *)(pcVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar22 + 0x2a)" ( (binary_expression "pcVar22 + 0x2a" identifier + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_000d0070;" goto statement_identifier ;)) (expression_statement "uVar36 = bVar11 & 0xffffff20;" (assignment_expression "uVar36 = bVar11 & 0xffffff20" identifier = (binary_expression "bVar11 & 0xffffff20" identifier & number_literal)) ;) (do_statement "do {\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              } while (iVar31 < *(short *)(pcVar22 + 0x2a));" do (compound_statement "{\n                in_stack_ffffff68 = (char *)&sColname;\n                iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);\n                if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }\n                iVar31 = iVar31 + 1;\n              }" { (expression_statement "in_stack_ffffff68 = (char *)&sColname;" (assignment_expression "in_stack_ffffff68 = (char *)&sColname" identifier = (cast_expression "(char *)&sColname" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&sColname" & identifier))) ;) (expression_statement "iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74);" (assignment_expression "iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74)" identifier = (call_expression "tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74)" identifier (argument_list "((SrcList *)&iLeft,(int)&sColname,\n                                             (char *)in_stack_ffffff6c,piTab,\n                                             (int *)in_stack_ffffff74)" ( (cast_expression "(SrcList *)&iLeft" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&iLeft" & identifier)) , (cast_expression "(int)&sColname" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sColname" & identifier)) , (cast_expression "(char *)in_stack_ffffff6c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(int *)in_stack_ffffff74" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar13 != 0) {\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n                  addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);\n                }" { (expression_statement "addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere);" (call_expression "addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere)" identifier (argument_list "(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14,\n                               ppWhere)" ( identifier , identifier , identifier , (cast_expression "(int)sColname.z" ( (type_descriptor "int" primitive_type) ) (field_expression "sColname.z" identifier . field_identifier)) , (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier , identifier ))) ;) })) (expression_statement "iVar31 = iVar31 + 1;" (assignment_expression "iVar31 = iVar31 + 1" identifier = (binary_expression "iVar31 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar31 < *(short *)(pcVar22 + 0x2a))" ( (binary_expression "iVar31 < *(short *)(pcVar22 + 0x2a)" identifier < (pointer_expression "*(short *)(pcVar22 + 0x2a)" * (cast_expression "(short *)(pcVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar22 + 0x2a)" ( (binary_expression "pcVar22 + 0x2a" identifier + number_literal) ))))) )) ;) (expression_statement "bVar34 = (byte)uVar36;" (assignment_expression "bVar34 = (byte)uVar36" identifier = (cast_expression "(byte)uVar36" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (expression_statement "p_00 = local_40->a[0].fg;" (assignment_expression "p_00 = local_40->a[0].fg" identifier = (field_expression "local_40->a[0].fg" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) })) (expression_statement "local_64 = (Column **)local_40->a[0].iCursor;" (assignment_expression "local_64 = (Column **)local_40->a[0].iCursor" identifier = (cast_expression "(Column **)local_40->a[0].iCursor" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "local_40->a[0].iCursor" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) (if_statement "if (p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0) {\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }" if (parenthesized_expression "(p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0)" ( (binary_expression "p_00 != (anon_struct_4_7_7ffbf296_for_fg)0x0" identifier != (cast_expression "(anon_struct_4_7_7ffbf296_for_fg)0x0" ( (type_descriptor "anon_struct_4_7_7ffbf296_for_fg" type_identifier) ) number_literal)) )) (compound_statement "{\n              if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }\n              piTab = (int *)0xcf9d0;\n              pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);\n              p->pWhere = pEVar15;\n              local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;\n              local_64 = (Column **)local_40->a[0].iCursor;\n            }" { (if_statement "if (local_64 != (Column **)0x0) {\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }" if (parenthesized_expression "(local_64 != (Column **)0x0)" ( (binary_expression "local_64 != (Column **)0x0" identifier != (cast_expression "(Column **)0x0" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n                pcVar22 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }" { (expression_statement "pcVar22 = "cannot have both ON and USING clauses in the same join";" (assignment_expression "pcVar22 = "cannot have both ON and USING clauses in the same join"" identifier = (string_literal ""cannot have both ON and USING clauses in the same join"" " string_content ")) ;) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) (if_statement "if (bVar34 != 0) {\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }" if (parenthesized_expression "(bVar34 != 0)" ( (binary_expression "bVar34 != 0" identifier != number_literal) )) (compound_statement "{\n                setJoinExpr((Expr *)p_00,local_40->a[0].regResult);\n                p_00 = local_40->a[0].fg;\n              }" { (expression_statement "setJoinExpr((Expr *)p_00,local_40->a[0].regResult);" (call_expression "setJoinExpr((Expr *)p_00,local_40->a[0].regResult)" identifier (argument_list "((Expr *)p_00,local_40->a[0].regResult)" ( (cast_expression "(Expr *)p_00" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (field_expression "local_40->a[0].regResult" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) ))) ;) (expression_statement "p_00 = local_40->a[0].fg;" (assignment_expression "p_00 = local_40->a[0].fg" identifier = (field_expression "local_40->a[0].fg" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) })) (expression_statement "piTab = (int *)0xcf9d0;" (assignment_expression "piTab = (int *)0xcf9d0" identifier = (cast_expression "(int *)0xcf9d0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00);" (assignment_expression "pEVar15 = sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00)" identifier = (call_expression "sqlite3ExprAnd(pParse->db,p->pWhere,(Expr *)p_00)" identifier (argument_list "(pParse->db,p->pWhere,(Expr *)p_00)" ( (field_expression "pParse->db" identifier -> field_identifier) , (field_expression "p->pWhere" identifier -> field_identifier) , (cast_expression "(Expr *)p_00" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "p->pWhere = pEVar15;" (assignment_expression "p->pWhere = pEVar15" (field_expression "p->pWhere" identifier -> field_identifier) = identifier) ;) (expression_statement "local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0;" (assignment_expression "local_40->a[0].fg = (anon_struct_4_7_7ffbf296_for_fg)0x0" (field_expression "local_40->a[0].fg" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier) = (cast_expression "(anon_struct_4_7_7ffbf296_for_fg)0x0" ( (type_descriptor "anon_struct_4_7_7ffbf296_for_fg" type_identifier) ) number_literal)) ;) (expression_statement "local_64 = (Column **)local_40->a[0].iCursor;" (assignment_expression "local_64 = (Column **)local_40->a[0].iCursor" identifier = (cast_expression "(Column **)local_40->a[0].iCursor" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "local_40->a[0].iCursor" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier))) ;) })) (if_statement "if ((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])) {\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }" if (parenthesized_expression "((local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1]))" ( (binary_expression "(local_64 != (Column **)0x0) && (local_70 = 0, 0 < (int)local_64[1])" (parenthesized_expression "(local_64 != (Column **)0x0)" ( (binary_expression "local_64 != (Column **)0x0" identifier != (cast_expression "(Column **)0x0" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) && (parenthesized_expression "(local_70 = 0, 0 < (int)local_64[1])" ( (comma_expression "local_70 = 0, 0 < (int)local_64[1]" (assignment_expression "local_70 = 0" identifier = number_literal) , (binary_expression "0 < (int)local_64[1]" number_literal < (cast_expression "(int)local_64[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_64[1]" identifier [ number_literal ])))) ))) )) (compound_statement "{\nLAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);\n              if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }" { (labeled_statement "LAB_000cfa10:\n              pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);" statement_identifier : (expression_statement "pbVar5 = *(byte **)((int)*local_64 + local_70 * 8);" (assignment_expression "pbVar5 = *(byte **)((int)*local_64 + local_70 * 8)" identifier = (pointer_expression "*(byte **)((int)*local_64 + local_70 * 8)" * (cast_expression "(byte **)((int)*local_64 + local_70 * 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)*local_64 + local_70 * 8)" ( (binary_expression "(int)*local_64 + local_70 * 8" (cast_expression "(int)*local_64" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*local_64" * identifier)) + (binary_expression "local_70 * 8" identifier * number_literal)) ))))) ;)) (if_statement "if (0 < *(short *)(pcVar22 + 0x2a)) {\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }" if (parenthesized_expression "(0 < *(short *)(pcVar22 + 0x2a))" ( (binary_expression "0 < *(short *)(pcVar22 + 0x2a)" number_literal < (pointer_expression "*(short *)(pcVar22 + 0x2a)" * (cast_expression "(short *)(pcVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar22 + 0x2a)" ( (binary_expression "pcVar22 + 0x2a" identifier + number_literal) ))))) )) (compound_statement "{\n                iVar31 = 0;\n                do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));\n              }" { (expression_statement "iVar31 = 0;" (assignment_expression "iVar31 = 0" identifier = number_literal) ;) (do_statement "do {\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                } while (iVar31 != *(short *)(pcVar22 + 0x2a));" do (compound_statement "{\n                  pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);\n                  bVar11 = *pbVar16;\n                  pbVar25 = pbVar5;\n                  if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }\n                  iVar31 = iVar31 + 1;\n                }" { (expression_statement "pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10);" (assignment_expression "pbVar16 = *(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10)" identifier = (pointer_expression "*(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10)" * (cast_expression "(byte **)(*(int *)(pcVar22 + 4) + iVar31 * 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar22 + 4) + iVar31 * 0x10)" ( (binary_expression "*(int *)(pcVar22 + 4) + iVar31 * 0x10" (pointer_expression "*(int *)(pcVar22 + 4)" * (cast_expression "(int *)(pcVar22 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar22 + 4)" ( (binary_expression "pcVar22 + 4" identifier + number_literal) )))) + (binary_expression "iVar31 * 0x10" identifier * number_literal)) ))))) ;) (expression_statement "bVar11 = *pbVar16;" (assignment_expression "bVar11 = *pbVar16" identifier = (pointer_expression "*pbVar16" * identifier)) ;) (expression_statement "pbVar25 = pbVar5;" (assignment_expression "pbVar25 = pbVar5" identifier = identifier) ;) (if_statement "if (""[*pbVar5] == ""[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }" if (parenthesized_expression "(""[*pbVar5] == ""[bVar11])" ( (binary_expression """[*pbVar5] == ""[bVar11]" (subscript_expression """[*pbVar5]" (string_literal """" " ") [ (pointer_expression "*pbVar5" * identifier) ]) == (subscript_expression """[bVar11]" (string_literal """" " ") [ identifier ])) )) (compound_statement "{\n                    do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);\n                  }" { (do_statement "do {\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    } while (""[bVar11] == ""[*pbVar25]);" do (compound_statement "{\n                      if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar16 = pbVar16 + 1;\n                      pbVar25 = pbVar25 + 1;\n                      bVar11 = *pbVar16;\n                    }" { (if_statement "if (bVar11 == 0) {\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                        in_stack_ffffff68 = (char *)&sColname;\n                        iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);\n                        if (iVar13 == 0) goto LAB_000cfac6;\n                        addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);\n                        local_70 = local_70 + 1;\n                        if (local_70 < (int)local_64[1]) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }" { (expression_statement "in_stack_ffffff68 = (char *)&sColname;" (assignment_expression "in_stack_ffffff68 = (char *)&sColname" identifier = (cast_expression "(char *)&sColname" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&sColname" & identifier))) ;) (expression_statement "iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74);" (assignment_expression "iVar13 = tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74)" identifier = (call_expression "tableAndColumnIndex((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74)" identifier (argument_list "((SrcList *)&iLeft,(int)&sColname,\n                                                     (char *)in_stack_ffffff6c,piTab,\n                                                     (int *)in_stack_ffffff74)" ( (cast_expression "(SrcList *)&iLeft" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&iLeft" & identifier)) , (cast_expression "(int)&sColname" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&sColname" & identifier)) , (cast_expression "(char *)in_stack_ffffff6c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(int *)in_stack_ffffff74" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_000cfac6;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000cfac6;" goto statement_identifier ;)) (expression_statement "addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere);" (call_expression "addWhereTerm(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere)" identifier (argument_list "(pParse,pSVar6,iLeft,(int)sColname.z,(int)local_60,iVar31,uVar14\n                                     ,&p->pWhere)" ( identifier , identifier , identifier , (cast_expression "(int)sColname.z" ( (type_descriptor "int" primitive_type) ) (field_expression "sColname.z" identifier . field_identifier)) , (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) , identifier , identifier , (pointer_expression "&p->pWhere" & (field_expression "p->pWhere" identifier -> field_identifier)) ))) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_70 < (int)local_64[1]) goto LAB_000cfa10;" if (parenthesized_expression "(local_70 < (int)local_64[1])" ( (binary_expression "local_70 < (int)local_64[1]" identifier < (cast_expression "(int)local_64[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "local_64[1]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_000cfa10;" goto statement_identifier ;)) (goto_statement "goto LAB_000d0070;" goto statement_identifier ;) })) (expression_statement "pbVar16 = pbVar16 + 1;" (assignment_expression "pbVar16 = pbVar16 + 1" identifier = (binary_expression "pbVar16 + 1" identifier + number_literal)) ;) (expression_statement "pbVar25 = pbVar25 + 1;" (assignment_expression "pbVar25 = pbVar25 + 1" identifier = (binary_expression "pbVar25 + 1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar16;" (assignment_expression "bVar11 = *pbVar16" identifier = (pointer_expression "*pbVar16" * identifier)) ;) }) while (parenthesized_expression "(""[bVar11] == ""[*pbVar25])" ( (binary_expression """[bVar11] == ""[*pbVar25]" (subscript_expression """[bVar11]" (string_literal """" " ") [ identifier ]) == (subscript_expression """[*pbVar25]" (string_literal """" " ") [ (pointer_expression "*pbVar25" * identifier) ])) )) ;) })) (expression_statement "iVar31 = iVar31 + 1;" (assignment_expression "iVar31 = iVar31 + 1" identifier = (binary_expression "iVar31 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar31 != *(short *)(pcVar22 + 0x2a))" ( (binary_expression "iVar31 != *(short *)(pcVar22 + 0x2a)" identifier != (pointer_expression "*(short *)(pcVar22 + 0x2a)" * (cast_expression "(short *)(pcVar22 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar22 + 0x2a)" ( (binary_expression "pcVar22 + 0x2a" identifier + number_literal) ))))) )) ;) })) (labeled_statement "LAB_000cfac6:\n              pcVar22 = "cannot join using column %s - column not present in both tables";" statement_identifier : (expression_statement "pcVar22 = "cannot join using column %s - column not present in both tables";" (assignment_expression "pcVar22 = "cannot join using column %s - column not present in both tables"" identifier = (string_literal ""cannot join using column %s - column not present in both tables"" " string_content ")) ;)) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000d0070:\n          local_40 = (SrcList *)&local_40->a[0].u1;" statement_identifier : (expression_statement "local_40 = (SrcList *)&local_40->a[0].u1;" (assignment_expression "local_40 = (SrcList *)&local_40->a[0].u1" identifier = (cast_expression "(SrcList *)&local_40->a[0].u1" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&local_40->a[0].u1" & (field_expression "local_40->a[0].u1" (subscript_expression "local_40->a[0]" (field_expression "local_40->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) ;)) (expression_statement "bVar9 = (int)local_60 < pSVar6->nSrc + -1;" (assignment_expression "bVar9 = (int)local_60 < pSVar6->nSrc + -1" identifier = (binary_expression "(int)local_60 < pSVar6->nSrc + -1" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) < (binary_expression "pSVar6->nSrc + -1" (field_expression "pSVar6->nSrc" identifier -> field_identifier) + number_literal))) ;) (expression_statement "local_60 = (char *)((int)local_60 + 1);" (assignment_expression "local_60 = (char *)((int)local_60 + 1)" identifier = (cast_expression "(char *)((int)local_60 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_60 + 1)" ( (binary_expression "(int)local_60 + 1" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) })) (if_statement "if (0 < pList_00->nExpr) {\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }" if (parenthesized_expression "(0 < pList_00->nExpr)" ( (binary_expression "0 < pList_00->nExpr" number_literal < (field_expression "pList_00->nExpr" identifier -> field_identifier)) )) (compound_statement "{\n        pEVar15 = pList_00->a[0].pExpr;\n        uVar12 = pEVar15->op;\n        if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }\n        local_44 = 0;\n        pEVar30 = (ExprList *)0x0;\n        uVar10 = pParse->db->flags;\n        local_4c = pList_00->a;\n        do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );\n      }" { (expression_statement "pEVar15 = pList_00->a[0].pExpr;" (assignment_expression "pEVar15 = pList_00->a[0].pExpr" identifier = (field_expression "pList_00->a[0].pExpr" (subscript_expression "pList_00->a[0]" (field_expression "pList_00->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (expression_statement "uVar12 = pEVar15->op;" (assignment_expression "uVar12 = pEVar15->op" identifier = (field_expression "pEVar15->op" identifier -> field_identifier)) ;) (if_statement "if (uVar12 == 0xa8) {\n          local_40 = (SrcList *)0x0;\n        }\n        else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }" if (parenthesized_expression "(uVar12 == 0xa8)" ( (binary_expression "uVar12 == 0xa8" identifier == number_literal) )) (compound_statement "{\n          local_40 = (SrcList *)0x0;\n        }" { (expression_statement "local_40 = (SrcList *)0x0;" (assignment_expression "local_40 = (SrcList *)0x0" identifier = (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }" else (compound_statement "{\n          pEVar30 = pList_00 + 1;\n          iVar31 = 0;\n          local_40 = (SrcList *)0x0;\n          pEVar20 = pEVar15;\n          uVar23 = uVar12;\n          do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);\n        }" { (expression_statement "pEVar30 = pList_00 + 1;" (assignment_expression "pEVar30 = pList_00 + 1" identifier = (binary_expression "pList_00 + 1" identifier + number_literal)) ;) (expression_statement "iVar31 = 0;" (assignment_expression "iVar31 = 0" identifier = number_literal) ;) (expression_statement "local_40 = (SrcList *)0x0;" (assignment_expression "local_40 = (SrcList *)0x0" identifier = (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pEVar20 = pEVar15;" (assignment_expression "pEVar20 = pEVar15" identifier = identifier) ;) (expression_statement "uVar23 = uVar12;" (assignment_expression "uVar23 = uVar12" identifier = identifier) ;) (do_statement "do {\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          } while (uVar23 != 0xa8);" do (compound_statement "{\n            if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;\n            iVar31 = iVar31 + 1;\n            local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);\n            if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }\n            pEVar20 = (Expr *)pEVar30->nExpr;\n            pEVar30 = (ExprList *)&pEVar30->a[0].u;\n            uVar23 = pEVar20->op;\n          }" { (if_statement "if ((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;" if (parenthesized_expression "((uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8))" ( (binary_expression "(uVar23 == 0x82) && (pEVar20->pRight->op == 0xa8)" (parenthesized_expression "(uVar23 == 0x82)" ( (binary_expression "uVar23 == 0x82" identifier == number_literal) )) && (parenthesized_expression "(pEVar20->pRight->op == 0xa8)" ( (binary_expression "pEVar20->pRight->op == 0xa8" (field_expression "pEVar20->pRight->op" (field_expression "pEVar20->pRight" identifier -> field_identifier) -> field_identifier) == number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar31 = iVar31 + 1;" (assignment_expression "iVar31 = iVar31 + 1" identifier = (binary_expression "iVar31 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = (SrcList *)((uint)local_40 | pEVar20->flags);" (assignment_expression "local_40 = (SrcList *)((uint)local_40 | pEVar20->flags)" identifier = (cast_expression "(SrcList *)((uint)local_40 | pEVar20->flags)" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_40 | pEVar20->flags)" ( (binary_expression "(uint)local_40 | pEVar20->flags" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) | (field_expression "pEVar20->flags" identifier -> field_identifier)) )))) ;) (if_statement "if (iVar31 == pList_00->nExpr) {\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }" if (parenthesized_expression "(iVar31 == pList_00->nExpr)" ( (binary_expression "iVar31 == pList_00->nExpr" identifier == (field_expression "pList_00->nExpr" identifier -> field_identifier)) )) (compound_statement "{\n              pEVar30 = p->pEList;\n              goto LAB_000d07de;\n            }" { (expression_statement "pEVar30 = p->pEList;" (assignment_expression "pEVar30 = p->pEList" identifier = (field_expression "p->pEList" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000d07de;" goto statement_identifier ;) })) (expression_statement "pEVar20 = (Expr *)pEVar30->nExpr;" (assignment_expression "pEVar20 = (Expr *)pEVar30->nExpr" identifier = (cast_expression "(Expr *)pEVar30->nExpr" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pEVar30->nExpr" identifier -> field_identifier))) ;) (expression_statement "pEVar30 = (ExprList *)&pEVar30->a[0].u;" (assignment_expression "pEVar30 = (ExprList *)&pEVar30->a[0].u" identifier = (cast_expression "(ExprList *)&pEVar30->a[0].u" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pEVar30->a[0].u" & (field_expression "pEVar30->a[0].u" (subscript_expression "pEVar30->a[0]" (field_expression "pEVar30->a" identifier -> field_identifier) [ number_literal ]) . field_identifier)))) ;) (expression_statement "uVar23 = pEVar20->op;" (assignment_expression "uVar23 = pEVar20->op" identifier = (field_expression "pEVar20->op" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(uVar23 != 0xa8)" ( (binary_expression "uVar23 != 0xa8" identifier != number_literal) )) ;) }))) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "pEVar30 = (ExprList *)0x0;" (assignment_expression "pEVar30 = (ExprList *)0x0" identifier = (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar10 = pParse->db->flags;" (assignment_expression "uVar10 = pParse->db->flags" identifier = (field_expression "pParse->db->flags" (field_expression "pParse->db" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "local_4c = pList_00->a;" (assignment_expression "local_4c = pList_00->a" identifier = (field_expression "pList_00->a" identifier -> field_identifier)) ;) (do_statement "do {\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        } while( true );" do (compound_statement "{\n          local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);\n          if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 1;\n          if (pList_00->nExpr <= local_44) goto LAB_000d07cd;\n          pEVar15 = local_4c->pExpr;\n          uVar12 = pEVar15->op;\n        }" { (expression_statement "local_40 = (SrcList *)((uint)local_40 | pEVar15->flags);" (assignment_expression "local_40 = (SrcList *)((uint)local_40 | pEVar15->flags)" identifier = (cast_expression "(SrcList *)((uint)local_40 | pEVar15->flags)" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_40 | pEVar15->flags)" ( (binary_expression "(uint)local_40 | pEVar15->flags" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) | (field_expression "pEVar15->flags" identifier -> field_identifier)) )))) ;) (if_statement "if (uVar12 == 0xa8) {\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }\n          else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }" if (parenthesized_expression "(uVar12 == 0xa8)" ( (binary_expression "uVar12 == 0xa8" identifier == number_literal) )) (compound_statement "{\n            local_74 = (Column **)0x0;\n            if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }\n          }" { (expression_statement "local_74 = (Column **)0x0;" (assignment_expression "local_74 = (Column **)0x0" identifier = (cast_expression "(Column **)0x0" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (if_statement "if (pList->nSrc < 1) {\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }" if (parenthesized_expression "(pList->nSrc < 1)" ( (binary_expression "pList->nSrc < 1" (field_expression "pList->nSrc" identifier -> field_identifier) < number_literal) )) (compound_statement "{\nLAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";\n              sqlite3ErrorMsg(pParse,"no tables specified");\n            }" { (labeled_statement "LAB_000d0870:\n              in_stack_ffffff68 = "no tables specified";" statement_identifier : (expression_statement "in_stack_ffffff68 = "no tables specified";" (assignment_expression "in_stack_ffffff68 = "no tables specified"" identifier = (string_literal ""no tables specified"" " string_content ")) ;)) (expression_statement "sqlite3ErrorMsg(pParse,"no tables specified");" (call_expression "sqlite3ErrorMsg(pParse,"no tables specified")" identifier (argument_list "(pParse,"no tables specified")" ( identifier , (string_literal ""no tables specified"" " string_content ") ))) ;) }) (else_clause "else {\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }" else (compound_statement "{\nLAB_000d01d4:\n              bVar9 = false;\n              local_78 = 0;\n              local_80 = pList->a;\n              do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);\n              if (!bVar9) goto LAB_000d02c3;\n            }" { (labeled_statement "LAB_000d01d4:\n              bVar9 = false;" statement_identifier : (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;)) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "local_80 = pList->a;" (assignment_expression "local_80 = pList->a" identifier = (field_expression "pList->a" identifier -> field_identifier)) ;) (do_statement "do {\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              } while (local_78 < pList->nSrc);" do (compound_statement "{\n                pTVar17 = local_80->pTab;\n                pSVar33 = local_80->pSelect;\n                local_64 = (Column **)local_80->zAlias;\n                if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }\n                if (db->mallocFailed != '\0') break;\n                if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 1;\n              }" { (expression_statement "pTVar17 = local_80->pTab;" (assignment_expression "pTVar17 = local_80->pTab" identifier = (field_expression "local_80->pTab" identifier -> field_identifier)) ;) (expression_statement "pSVar33 = local_80->pSelect;" (assignment_expression "pSVar33 = local_80->pSelect" identifier = (field_expression "local_80->pSelect" identifier -> field_identifier)) ;) (expression_statement "local_64 = (Column **)local_80->zAlias;" (assignment_expression "local_64 = (Column **)local_80->zAlias" identifier = (cast_expression "(Column **)local_80->zAlias" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "local_80->zAlias" identifier -> field_identifier))) ;) (if_statement "if (local_64 == (Column **)0x0) {\n                  local_64 = (Column **)pTVar17->zName;\n                }" if (parenthesized_expression "(local_64 == (Column **)0x0)" ( (binary_expression "local_64 == (Column **)0x0" identifier == (cast_expression "(Column **)0x0" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n                  local_64 = (Column **)pTVar17->zName;\n                }" { (expression_statement "local_64 = (Column **)pTVar17->zName;" (assignment_expression "local_64 = (Column **)pTVar17->zName" identifier = (cast_expression "(Column **)pTVar17->zName" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "pTVar17->zName" identifier -> field_identifier))) ;) })) (if_statement "if (db->mallocFailed != '\0') break;" if (parenthesized_expression "(db->mallocFailed != '\0')" ( (binary_expression "db->mallocFailed != '\0'" (field_expression "db->mallocFailed" identifier -> field_identifier) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (if_statement "if ((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)) {\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }" if (parenthesized_expression "((pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0))" ( (binary_expression "(pSVar33 == (Select *)0x0) || ((pSVar33->selFlags & 0x800) == 0)" (parenthesized_expression "(pSVar33 == (Select *)0x0)" ( (binary_expression "pSVar33 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((pSVar33->selFlags & 0x800) == 0)" ( (binary_expression "(pSVar33->selFlags & 0x800) == 0" (parenthesized_expression "(pSVar33->selFlags & 0x800)" ( (binary_expression "pSVar33->selFlags & 0x800" (field_expression "pSVar33->selFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                  if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  bVar11 = *(byte *)local_74;\n                  ppCVar2 = local_74;\n                  ppCVar27 = local_64;\n                  if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }\n                }" { (if_statement "if (local_74 == (Column **)0x0) {\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }" if (parenthesized_expression "(local_74 == (Column **)0x0)" ( (binary_expression "local_74 == (Column **)0x0" identifier == (cast_expression "(Column **)0x0" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\nLAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }" { (labeled_statement "LAB_000d0438:\n                    if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }" statement_identifier : (if_statement "if (pTVar17->pSchema == (Schema *)0x0) {\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }\n                    else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }" if (parenthesized_expression "(pTVar17->pSchema == (Schema *)0x0)" ( (binary_expression "pTVar17->pSchema == (Schema *)0x0" (field_expression "pTVar17->pSchema" identifier -> field_identifier) == (cast_expression "(Schema *)0x0" ( (type_descriptor "Schema *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                      local_60 = "*";\n                      pSVar33 = (Select *)0x0;\n                    }" { (expression_statement "local_60 = "*";" (assignment_expression "local_60 = "*"" identifier = (string_literal ""*"" " string_content ")) ;) (expression_statement "pSVar33 = (Select *)0x0;" (assignment_expression "pSVar33 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }" else (compound_statement "{\n                      piTab = (int *)0xd0458;\n                      iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);\n                      if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }\n                    }" { (expression_statement "piTab = (int *)0xd0458;" (assignment_expression "piTab = (int *)0xd0458" identifier = (cast_expression "(int *)0xd0458" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema);" (assignment_expression "iVar31 = sqlite3SchemaToIndex(db,pTVar17->pSchema)" identifier = (call_expression "sqlite3SchemaToIndex(db,pTVar17->pSchema)" identifier (argument_list "(db,pTVar17->pSchema)" ( identifier , (field_expression "pTVar17->pSchema" identifier -> field_identifier) )))) ;) (if_statement "if (iVar31 < 0) {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }" if (parenthesized_expression "(iVar31 < 0)" ( (binary_expression "iVar31 < 0" identifier < number_literal) )) (compound_statement "{\n                        pSVar33 = (Select *)0x0;\n                        local_60 = "*";\n                      }" { (expression_statement "pSVar33 = (Select *)0x0;" (assignment_expression "pSVar33 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = "*";" (assignment_expression "local_60 = "*"" identifier = (string_literal ""*"" " string_content ")) ;) }) (else_clause "else {\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }" else (compound_statement "{\n                        pSVar33 = (Select *)0x0;\n                        local_60 = db->aDb[iVar31].zDbSName;\n                      }" { (expression_statement "pSVar33 = (Select *)0x0;" (assignment_expression "pSVar33 = (Select *)0x0" identifier = (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = db->aDb[iVar31].zDbSName;" (assignment_expression "local_60 = db->aDb[iVar31].zDbSName" identifier = (field_expression "db->aDb[iVar31].zDbSName" (subscript_expression "db->aDb[iVar31]" (field_expression "db->aDb" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) }))) })))) (goto_statement "goto LAB_000d0474;" goto statement_identifier ;) })) (expression_statement "bVar11 = *(byte *)local_74;" (assignment_expression "bVar11 = *(byte *)local_74" identifier = (pointer_expression "*(byte *)local_74" * (cast_expression "(byte *)local_74" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "ppCVar2 = local_74;" (assignment_expression "ppCVar2 = local_74" identifier = identifier) ;) (expression_statement "ppCVar27 = local_64;" (assignment_expression "ppCVar27 = local_64" identifier = identifier) ;) (if_statement "if (""[bVar11] == ""[*(byte *)local_64]) {\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }" if (parenthesized_expression "(""[bVar11] == ""[*(byte *)local_64])" ( (binary_expression """[bVar11] == ""[*(byte *)local_64]" (subscript_expression """[bVar11]" (string_literal """" " ") [ identifier ]) == (subscript_expression """[*(byte *)local_64]" (string_literal """" " ") [ (pointer_expression "*(byte *)local_64" * (cast_expression "(byte *)local_64" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ])) )) (compound_statement "{\n                    do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);\n                  }" { (do_statement "do {\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    } while (""[bVar11] == ""[*(byte *)ppCVar27]);" do (compound_statement "{\n                      if (bVar11 == 0) goto LAB_000d0438;\n                      ppCVar2 = (Column **)((int)ppCVar2 + 1);\n                      ppCVar27 = (Column **)((int)ppCVar27 + 1);\n                      bVar11 = *(byte *)ppCVar2;\n                    }" { (if_statement "if (bVar11 == 0) goto LAB_000d0438;" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000d0438;" goto statement_identifier ;)) (expression_statement "ppCVar2 = (Column **)((int)ppCVar2 + 1);" (assignment_expression "ppCVar2 = (Column **)((int)ppCVar2 + 1)" identifier = (cast_expression "(Column **)((int)ppCVar2 + 1)" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppCVar2 + 1)" ( (binary_expression "(int)ppCVar2 + 1" (cast_expression "(int)ppCVar2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "ppCVar27 = (Column **)((int)ppCVar27 + 1);" (assignment_expression "ppCVar27 = (Column **)((int)ppCVar27 + 1)" identifier = (cast_expression "(Column **)((int)ppCVar27 + 1)" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)ppCVar27 + 1)" ( (binary_expression "(int)ppCVar27 + 1" (cast_expression "(int)ppCVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) (expression_statement "bVar11 = *(byte *)ppCVar2;" (assignment_expression "bVar11 = *(byte *)ppCVar2" identifier = (pointer_expression "*(byte *)ppCVar2" * (cast_expression "(byte *)ppCVar2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ;) }) while (parenthesized_expression "(""[bVar11] == ""[*(byte *)ppCVar27])" ( (binary_expression """[bVar11] == ""[*(byte *)ppCVar27]" (subscript_expression """[bVar11]" (string_literal """" " ") [ identifier ]) == (subscript_expression """[*(byte *)ppCVar27]" (string_literal """" " ") [ (pointer_expression "*(byte *)ppCVar27" * (cast_expression "(byte *)ppCVar27" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ])) )) ;) })) }) (else_clause "else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }" else (compound_statement "{\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }\n                }" { (expression_statement "local_60 = (char *)0x0;" (assignment_expression "local_60 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000d0474:\n                  if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }" statement_identifier : (if_statement "if (0 < pTVar17->nCol) {\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }" if (parenthesized_expression "(0 < pTVar17->nCol)" ( (binary_expression "0 < pTVar17->nCol" number_literal < (field_expression "pTVar17->nCol" identifier -> field_identifier)) )) (compound_statement "{\n                    bVar32 = pSVar33 == (Select *)0x0;\n                    iVar31 = 0;\n                    do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);\n                  }" { (expression_statement "bVar32 = pSVar33 == (Select *)0x0;" (assignment_expression "bVar32 = pSVar33 == (Select *)0x0" identifier = (binary_expression "pSVar33 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "iVar31 = 0;" (assignment_expression "iVar31 = 0" identifier = number_literal) ;) (do_statement "do {\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    } while (iVar31 < pTVar17->nCol);" do (compound_statement "{\n                      pCVar29 = pTVar17->aCol + iVar31;\n                      pcVar22 = pCVar29->zName;\n                      if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }\nLAB_000d062b:\n                      iVar31 = iVar31 + 1;\n                    }" { (expression_statement "pCVar29 = pTVar17->aCol + iVar31;" (assignment_expression "pCVar29 = pTVar17->aCol + iVar31" identifier = (binary_expression "pTVar17->aCol + iVar31" (field_expression "pTVar17->aCol" identifier -> field_identifier) + identifier)) ;) (expression_statement "pcVar22 = pCVar29->zName;" (assignment_expression "pcVar22 = pCVar29->zName" identifier = (field_expression "pCVar29->zName" identifier -> field_identifier)) ;) (if_statement "if (local_74 == (Column **)0x0 || bVar32) {\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }\n                      else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }" if (parenthesized_expression "(local_74 == (Column **)0x0 || bVar32)" ( (binary_expression "local_74 == (Column **)0x0 || bVar32" (binary_expression "local_74 == (Column **)0x0" identifier == (cast_expression "(Column **)0x0" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) || identifier) )) (compound_statement "{\n                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;\n                        if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;\n                        if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }\nLAB_000d0623:\n                        bVar9 = true;\n                      }" { (if_statement "if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))\n                        goto LAB_000d062b;" if (parenthesized_expression "(((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))" ( (binary_expression "((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0)" (parenthesized_expression "((p->selFlags & 0x20000) == 0)" ( (binary_expression "(p->selFlags & 0x20000) == 0" (parenthesized_expression "(p->selFlags & 0x20000)" ( (binary_expression "p->selFlags & 0x20000" (field_expression "p->selFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "((pCVar29->colFlags & 2) != 0)" ( (binary_expression "(pCVar29->colFlags & 2) != 0" (parenthesized_expression "(pCVar29->colFlags & 2)" ( (binary_expression "pCVar29->colFlags & 2" (field_expression "pCVar29->colFlags" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (goto_statement "goto LAB_000d062b;" goto statement_identifier ;)) (if_statement "if ((local_78 < 1) || (local_74 != (Column **)0x0)) goto LAB_000d04f4;" if (parenthesized_expression "((local_78 < 1) || (local_74 != (Column **)0x0))" ( (binary_expression "(local_78 < 1) || (local_74 != (Column **)0x0)" (parenthesized_expression "(local_78 < 1)" ( (binary_expression "local_78 < 1" identifier < number_literal) )) || (parenthesized_expression "(local_74 != (Column **)0x0)" ( (binary_expression "local_74 != (Column **)0x0" identifier != (cast_expression "(Column **)0x0" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ))) )) (goto_statement "goto LAB_000d04f4;" goto statement_identifier ;)) (if_statement "if (((local_80->fg).jointype & 4) == 0) {\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }\n                        else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }" if (parenthesized_expression "(((local_80->fg).jointype & 4) == 0)" ( (binary_expression "((local_80->fg).jointype & 4) == 0" (parenthesized_expression "((local_80->fg).jointype & 4)" ( (binary_expression "(local_80->fg).jointype & 4" (field_expression "(local_80->fg).jointype" (parenthesized_expression "(local_80->fg)" ( (field_expression "local_80->fg" identifier -> field_identifier) )) . field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\nLAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }\nLAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                          if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piTab = (int *)0xd058f;\n                          pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n                          sColname.z = pcVar22;\n                          if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }\n                          if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }\n                        }" { (labeled_statement "LAB_000d04da:\n                          if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }" statement_identifier : (if_statement "if (local_80->pUsing != (IdList *)0x0) {\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }" if (parenthesized_expression "(local_80->pUsing != (IdList *)0x0)" ( (binary_expression "local_80->pUsing != (IdList *)0x0" (field_expression "local_80->pUsing" identifier -> field_identifier) != (cast_expression "(IdList *)0x0" ( (type_descriptor "IdList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            piTab = (int *)0xd04ec;\n                            iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);\n                            if (-1 < iVar13) goto LAB_000d0623;\n                          }" { (expression_statement "piTab = (int *)0xd04ec;" (assignment_expression "piTab = (int *)0xd04ec" identifier = (cast_expression "(int *)0xd04ec" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22);" (assignment_expression "iVar13 = sqlite3IdListIndex(local_80->pUsing,pcVar22)" identifier = (call_expression "sqlite3IdListIndex(local_80->pUsing,pcVar22)" identifier (argument_list "(local_80->pUsing,pcVar22)" ( (field_expression "local_80->pUsing" identifier -> field_identifier) , identifier )))) ;) (if_statement "if (-1 < iVar13) goto LAB_000d0623;" if (parenthesized_expression "(-1 < iVar13)" ( (binary_expression "-1 < iVar13" number_literal < identifier) )) (goto_statement "goto LAB_000d0623;" goto statement_identifier ;)) }))) (labeled_statement "LAB_000d04f4:\n                          pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);" statement_identifier : (expression_statement "pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);" (assignment_expression "pEVar15 = sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" identifier = (call_expression "sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" identifier (argument_list "(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" ( identifier , (cast_expression "(int)pSVar33" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(char *)pTVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;)) (if_statement "if ((uVar10 & 0x44) == 4) {\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }\n                          else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" if (parenthesized_expression "((uVar10 & 0x44) == 4)" ( (binary_expression "(uVar10 & 0x44) == 4" (parenthesized_expression "(uVar10 & 0x44)" ( (binary_expression "uVar10 & 0x44" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                            sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                            pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }\n                            in_stack_ffffff68 = (char *)(Expr *)0x120ecd;\n                            in_stack_ffffff6c = local_64;\n                            pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);\n                            local_68 = pcVar22;\n                          }" { (expression_statement "sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);" (call_expression "sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" identifier (argument_list "(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" ( identifier , (cast_expression "(int)pSVar33" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(char *)pTVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);" (assignment_expression "pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68)" identifier = (call_expression "sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68)" identifier (argument_list "(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68)" ( identifier , number_literal , identifier , (cast_expression "(Expr *)in_stack_ffffff68" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (local_60 != (char *)0x0) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }" if (parenthesized_expression "(local_60 != (char *)0x0)" ( (binary_expression "local_60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                            }" { (expression_statement "sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);" (call_expression "sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" identifier (argument_list "(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" ( identifier , (cast_expression "(int)pSVar33" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(char *)pTVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);" (assignment_expression "pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68)" identifier = (call_expression "sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68)" identifier (argument_list "(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68)" ( identifier , number_literal , identifier , (cast_expression "(Expr *)in_stack_ffffff68" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) })) (expression_statement "in_stack_ffffff68 = (char *)(Expr *)0x120ecd;" (assignment_expression "in_stack_ffffff68 = (char *)(Expr *)0x120ecd" identifier = (cast_expression "(char *)(Expr *)0x120ecd" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (cast_expression "(Expr *)0x120ecd" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ;) (expression_statement "in_stack_ffffff6c = local_64;" (assignment_expression "in_stack_ffffff6c = local_64" identifier = identifier) ;) (expression_statement "pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22);" (assignment_expression "pcVar22 = sqlite3MPrintf(db,"%s.%s",local_64,pcVar22)" identifier = (call_expression "sqlite3MPrintf(db,"%s.%s",local_64,pcVar22)" identifier (argument_list "(db,"%s.%s",local_64,pcVar22)" ( identifier , (string_literal ""%s.%s"" " string_content ") , identifier , identifier )))) ;) (expression_statement "local_68 = pcVar22;" (assignment_expression "local_68 = pcVar22" identifier = identifier) ;) }) (else_clause "else {\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" else (compound_statement "{\n                            if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" { (if_statement "if (1 < pList->nSrc) {\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }" if (parenthesized_expression "(1 < pList->nSrc)" ( (binary_expression "1 < pList->nSrc" number_literal < (field_expression "pList->nSrc" identifier -> field_identifier)) )) (compound_statement "{\n                              sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                              pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);\n                              if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }\n                            }" { (expression_statement "sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);" (call_expression "sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" identifier (argument_list "(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" ( identifier , (cast_expression "(int)pSVar33" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(char *)pTVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68);" (assignment_expression "pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68)" identifier = (call_expression "sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68)" identifier (argument_list "(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68)" ( identifier , number_literal , identifier , (cast_expression "(Expr *)in_stack_ffffff68" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (local_60 != (char *)0x0) {\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }" if (parenthesized_expression "(local_60 != (char *)0x0)" ( (binary_expression "local_60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                                sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);\n                                pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );\n                              }" { (expression_statement "sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17);" (call_expression "sqlite3Expr(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" identifier (argument_list "(in_stack_ffffff74,(int)pSVar33,(char *)pTVar17)" ( identifier , (cast_expression "(int)pSVar33" ( (type_descriptor "int" primitive_type) ) identifier) , (cast_expression "(char *)pTVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (expression_statement "pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      );" (assignment_expression "pEVar15 = sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      )" identifier = (call_expression "sqlite3PExpr(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      )" identifier (argument_list "(pParse,0x82,pEVar15,(Expr *)in_stack_ffffff68\n                                                      )" ( identifier , number_literal , identifier , (cast_expression "(Expr *)in_stack_ffffff68" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) })) })) (expression_statement "local_68 = (char *)0x0;" (assignment_expression "local_68 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "piTab = (int *)0xd058f;" (assignment_expression "piTab = (int *)0xd058f" identifier = (cast_expression "(int *)0xd058f" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);" (assignment_expression "pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15)" identifier = (call_expression "sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15)" identifier (argument_list "((Parse *)pParse->db,pEVar30,pEVar15)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , identifier , identifier )))) ;) (expression_statement "sColname.z = pcVar22;" (assignment_expression "sColname.z = pcVar22" (field_expression "sColname.z" identifier . field_identifier) = identifier) ;) (if_statement "if (pcVar22 == (char *)0x0) {\n                            sColname.n = 0;\n                          }\n                          else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }" if (parenthesized_expression "(pcVar22 == (char *)0x0)" ( (binary_expression "pcVar22 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            sColname.n = 0;\n                          }" { (expression_statement "sColname.n = 0;" (assignment_expression "sColname.n = 0" (field_expression "sColname.n" identifier . field_identifier) = number_literal) ;) }) (else_clause "else {\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }" else (compound_statement "{\n                            sVar21 = strlen(pcVar22);\n                            sColname.n = sVar21 & 0x3fffffff;\n                          }" { (expression_statement "sVar21 = strlen(pcVar22);" (assignment_expression "sVar21 = strlen(pcVar22)" identifier = (call_expression "strlen(pcVar22)" identifier (argument_list "(pcVar22)" ( identifier )))) ;) (expression_statement "sColname.n = sVar21 & 0x3fffffff;" (assignment_expression "sColname.n = sVar21 & 0x3fffffff" (field_expression "sColname.n" identifier . field_identifier) = (binary_expression "sVar21 & 0x3fffffff" identifier & number_literal)) ;) }))) (if_statement "if ((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)) {\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }" if (parenthesized_expression "((pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0))" ( (binary_expression "(pEVar30 != (ExprList *)0x0) &&\n                             (sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)" (parenthesized_expression "(pEVar30 != (ExprList *)0x0)" ( (binary_expression "pEVar30 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0)" ( (comma_expression "sqlite3ExprListSetName(pParse,pEVar30,&sColname,0),\n                             (p->selFlags & 0x800) != 0" (call_expression "sqlite3ExprListSetName(pParse,pEVar30,&sColname,0)" identifier (argument_list "(pParse,pEVar30,&sColname,0)" ( identifier , identifier , (pointer_expression "&sColname" & identifier) , number_literal ))) , (binary_expression "(p->selFlags & 0x800) != 0" (parenthesized_expression "(p->selFlags & 0x800)" ( (binary_expression "p->selFlags & 0x800" (field_expression "p->selFlags" identifier -> field_identifier) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                            iVar13 = pEVar30->nExpr;\n                            if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;\n                            *puVar1 = *puVar1 | 2;\n                          }" { (expression_statement "iVar13 = pEVar30->nExpr;" (assignment_expression "iVar13 = pEVar30->nExpr" identifier = (field_expression "pEVar30->nExpr" identifier -> field_identifier)) ;) (if_statement "if (pSVar33 == (Select *)0x0) {\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }\n                            else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }" if (parenthesized_expression "(pSVar33 == (Select *)0x0)" ( (binary_expression "pSVar33 == (Select *)0x0" identifier == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }" { (expression_statement "pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22);" (assignment_expression "pcVar22 = sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22)" identifier = (call_expression "sqlite3MPrintf(db,"%s.%s.%s",local_60,local_64,pcVar22)" identifier (argument_list "(db,"%s.%s.%s",local_60,local_64,pcVar22)" ( identifier , (string_literal ""%s.%s.%s"" " string_content ") , identifier , identifier , identifier )))) ;) (expression_statement "pEVar30->a[iVar13 + -1].zSpan = pcVar22;" (assignment_expression "pEVar30->a[iVar13 + -1].zSpan = pcVar22" (field_expression "pEVar30->a[iVar13 + -1].zSpan" (subscript_expression "pEVar30->a[iVar13 + -1]" (field_expression "pEVar30->a" identifier -> field_identifier) [ (binary_expression "iVar13 + -1" identifier + number_literal) ]) . field_identifier) = identifier) ;) }) (else_clause "else {\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }" else (compound_statement "{\n                              piTab = (int *)0xd0601;\n                              pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);\n                              pEVar30->a[iVar13 + -1].zSpan = pcVar22;\n                            }" { (expression_statement "piTab = (int *)0xd0601;" (assignment_expression "piTab = (int *)0xd0601" identifier = (cast_expression "(int *)0xd0601" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan);" (assignment_expression "pcVar22 = sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan)" identifier = (call_expression "sqlite3DbStrDup(db,pSVar33->pEList->a[iVar31].zSpan)" identifier (argument_list "(db,pSVar33->pEList->a[iVar31].zSpan)" ( identifier , (field_expression "pSVar33->pEList->a[iVar31].zSpan" (subscript_expression "pSVar33->pEList->a[iVar31]" (field_expression "pSVar33->pEList->a" (field_expression "pSVar33->pEList" identifier -> field_identifier) -> field_identifier) [ identifier ]) . field_identifier) )))) ;) (expression_statement "pEVar30->a[iVar13 + -1].zSpan = pcVar22;" (assignment_expression "pEVar30->a[iVar13 + -1].zSpan = pcVar22" (field_expression "pEVar30->a[iVar13 + -1].zSpan" (subscript_expression "pEVar30->a[iVar13 + -1]" (field_expression "pEVar30->a" identifier -> field_identifier) [ (binary_expression "iVar13 + -1" identifier + number_literal) ]) . field_identifier) = identifier) ;) }))) (expression_statement "puVar1 = &pEVar30->a[iVar13 + -1].field_0xd;" (assignment_expression "puVar1 = &pEVar30->a[iVar13 + -1].field_0xd" identifier = (pointer_expression "&pEVar30->a[iVar13 + -1].field_0xd" & (field_expression "pEVar30->a[iVar13 + -1].field_0xd" (subscript_expression "pEVar30->a[iVar13 + -1]" (field_expression "pEVar30->a" identifier -> field_identifier) [ (binary_expression "iVar13 + -1" identifier + number_literal) ]) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 2;" (assignment_expression "*puVar1 = *puVar1 | 2" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 2" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) })) (if_statement "if (local_68 != (char *)0x0) {\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }" if (parenthesized_expression "(local_68 != (char *)0x0)" ( (binary_expression "local_68 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            piTab = (int *)0xd0623;\n                            sqlite3DbFreeNN(db,local_68);\n                          }" { (expression_statement "piTab = (int *)0xd0623;" (assignment_expression "piTab = (int *)0xd0623" identifier = (cast_expression "(int *)0xd0623" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "sqlite3DbFreeNN(db,local_68);" (call_expression "sqlite3DbFreeNN(db,local_68)" identifier (argument_list "(db,local_68)" ( identifier , identifier ))) ;) })) }) (else_clause "else {\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }" else (compound_statement "{\n                          in_stack_ffffff68 = (char *)0x0;\n                          iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);\n                          if (iVar13 == 0) goto LAB_000d04da;\n                        }" { (expression_statement "in_stack_ffffff68 = (char *)0x0;" (assignment_expression "in_stack_ffffff68 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74);" (assignment_expression "iVar13 = tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74)" identifier = (call_expression "tableAndColumnIndex((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74)" identifier (argument_list "((SrcList *)0x0,0,(char *)in_stack_ffffff6c,\n                                                       piTab,(int *)in_stack_ffffff74)" ( (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , number_literal , (cast_expression "(char *)in_stack_ffffff6c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , identifier , (cast_expression "(int *)in_stack_ffffff74" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar13 == 0) goto LAB_000d04da;" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000d04da;" goto statement_identifier ;)) }))) (labeled_statement "LAB_000d0623:\n                        bVar9 = true;" statement_identifier : (expression_statement "bVar9 = true;" (assignment_expression "bVar9 = true" identifier = true) ;)) }) (else_clause "else {\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }" else (compound_statement "{\n                        iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);\n                        if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;\n                      }" { (expression_statement "iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab);" (assignment_expression "iVar13 = sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab)" identifier = (call_expression "sqlite3MatchSpanName\n                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab)" identifier (argument_list "((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,\n                                            (char *)piTab)" ( (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) , identifier , (cast_expression "(char *)in_stack_ffffff6c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)piTab" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if ((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))\n                        goto LAB_000d04f4;" if (parenthesized_expression "((iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))" ( (binary_expression "(iVar13 != 0) &&\n                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0)))" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) && (parenthesized_expression "(((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0)))" ( (parenthesized_expression "((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))" ( (binary_expression "(p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0)" (binary_expression "(p->selFlags & 0x20000) != 0" (parenthesized_expression "(p->selFlags & 0x20000)" ( (binary_expression "p->selFlags & 0x20000" (field_expression "p->selFlags" identifier -> field_identifier) & number_literal) )) != number_literal) || (parenthesized_expression "((pCVar29->colFlags & 2) == 0)" ( (binary_expression "(pCVar29->colFlags & 2) == 0" (parenthesized_expression "(pCVar29->colFlags & 2)" ( (binary_expression "pCVar29->colFlags & 2" (field_expression "pCVar29->colFlags" identifier -> field_identifier) & number_literal) )) == number_literal) ))) )) ))) )) (goto_statement "goto LAB_000d04f4;" goto statement_identifier ;)) }))) (labeled_statement "LAB_000d062b:\n                      iVar31 = iVar31 + 1;" statement_identifier : (expression_statement "iVar31 = iVar31 + 1;" (assignment_expression "iVar31 = iVar31 + 1" identifier = (binary_expression "iVar31 + 1" identifier + number_literal)) ;)) }) while (parenthesized_expression "(iVar31 < pTVar17->nCol)" ( (binary_expression "iVar31 < pTVar17->nCol" identifier < (field_expression "pTVar17->nCol" identifier -> field_identifier)) )) ;) }))) }))) (expression_statement "local_78 = local_78 + 1;" (assignment_expression "local_78 = local_78 + 1" identifier = (binary_expression "local_78 + 1" identifier + number_literal)) ;) (expression_statement "local_80 = local_80 + 1;" (assignment_expression "local_80 = local_80 + 1" identifier = (binary_expression "local_80 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_78 < pList->nSrc)" ( (binary_expression "local_78 < pList->nSrc" identifier < (field_expression "pList->nSrc" identifier -> field_identifier)) )) ;) (if_statement "if (!bVar9) goto LAB_000d02c3;" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (goto_statement "goto LAB_000d02c3;" goto statement_identifier ;)) }))) }) (else_clause "else if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }" else (if_statement "if ((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)) {\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }\n          else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }" if (parenthesized_expression "((uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8))" ( (binary_expression "(uVar12 == 0x82) && (pEVar15->pRight->op == 0xa8)" (parenthesized_expression "(uVar12 == 0x82)" ( (binary_expression "uVar12 == 0x82" identifier == number_literal) )) && (parenthesized_expression "(pEVar15->pRight->op == 0xa8)" ( (binary_expression "pEVar15->pRight->op == 0xa8" (field_expression "pEVar15->pRight->op" (field_expression "pEVar15->pRight" identifier -> field_identifier) -> field_identifier) == number_literal) ))) )) (compound_statement "{\n            local_74 = (Column **)(pEVar15->pLeft->u).zToken;\n            if (0 < pList->nSrc) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;\n            in_stack_ffffff68 = "no such table: %s";\n            sqlite3ErrorMsg(pParse,"no such table: %s");\n            in_stack_ffffff6c = local_74;\n          }" { (expression_statement "local_74 = (Column **)(pEVar15->pLeft->u).zToken;" (assignment_expression "local_74 = (Column **)(pEVar15->pLeft->u).zToken" identifier = (cast_expression "(Column **)(pEVar15->pLeft->u).zToken" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "(pEVar15->pLeft->u).zToken" (parenthesized_expression "(pEVar15->pLeft->u)" ( (field_expression "pEVar15->pLeft->u" (field_expression "pEVar15->pLeft" identifier -> field_identifier) -> field_identifier) )) . field_identifier))) ;) (if_statement "if (0 < pList->nSrc) goto LAB_000d01d4;" if (parenthesized_expression "(0 < pList->nSrc)" ( (binary_expression "0 < pList->nSrc" number_literal < (field_expression "pList->nSrc" identifier -> field_identifier)) )) (goto_statement "goto LAB_000d01d4;" goto statement_identifier ;)) (labeled_statement "LAB_000d02c3:\n            if (local_74 == (Column **)0x0) goto LAB_000d0870;" statement_identifier : (if_statement "if (local_74 == (Column **)0x0) goto LAB_000d0870;" if (parenthesized_expression "(local_74 == (Column **)0x0)" ( (binary_expression "local_74 == (Column **)0x0" identifier == (cast_expression "(Column **)0x0" ( (type_descriptor "Column **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (goto_statement "goto LAB_000d0870;" goto statement_identifier ;))) (expression_statement "in_stack_ffffff68 = "no such table: %s";" (assignment_expression "in_stack_ffffff68 = "no such table: %s"" identifier = (string_literal ""no such table: %s"" " string_content ")) ;) (expression_statement "sqlite3ErrorMsg(pParse,"no such table: %s");" (call_expression "sqlite3ErrorMsg(pParse,"no such table: %s")" identifier (argument_list "(pParse,"no such table: %s")" ( identifier , (string_literal ""no such table: %s"" " string_content ") ))) ;) (expression_statement "in_stack_ffffff6c = local_74;" (assignment_expression "in_stack_ffffff6c = local_74" identifier = identifier) ;) }) (else_clause "else {\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }" else (compound_statement "{\n            piTab = (int *)0xd0155;\n            pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);\n            if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }\n            local_4c->pExpr = (Expr *)0x0;\n          }" { (expression_statement "piTab = (int *)0xd0155;" (assignment_expression "piTab = (int *)0xd0155" identifier = (cast_expression "(int *)0xd0155" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15);" (assignment_expression "pEVar30 = sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15)" identifier = (call_expression "sqlite3ExprListAppend((Parse *)pParse->db,pEVar30,pEVar15)" identifier (argument_list "((Parse *)pParse->db,pEVar30,pEVar15)" ( (cast_expression "(Parse *)pParse->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse->db" identifier -> field_identifier)) , identifier , identifier )))) ;) (if_statement "if (pEVar30 != (ExprList *)0x0) {\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }" if (parenthesized_expression "(pEVar30 != (ExprList *)0x0)" ( (binary_expression "pEVar30 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar31 = pEVar30->nExpr;\n              pEVar30->a[iVar31 + -1].zName = local_4c->zName;\n              pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;\n              local_4c->zName = (char *)0x0;\n              local_4c->zSpan = (char *)0x0;\n            }" { (expression_statement "iVar31 = pEVar30->nExpr;" (assignment_expression "iVar31 = pEVar30->nExpr" identifier = (field_expression "pEVar30->nExpr" identifier -> field_identifier)) ;) (expression_statement "pEVar30->a[iVar31 + -1].zName = local_4c->zName;" (assignment_expression "pEVar30->a[iVar31 + -1].zName = local_4c->zName" (field_expression "pEVar30->a[iVar31 + -1].zName" (subscript_expression "pEVar30->a[iVar31 + -1]" (field_expression "pEVar30->a" identifier -> field_identifier) [ (binary_expression "iVar31 + -1" identifier + number_literal) ]) . field_identifier) = (field_expression "local_4c->zName" identifier -> field_identifier)) ;) (expression_statement "pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan;" (assignment_expression "pEVar30->a[iVar31 + -1].zSpan = local_4c->zSpan" (field_expression "pEVar30->a[iVar31 + -1].zSpan" (subscript_expression "pEVar30->a[iVar31 + -1]" (field_expression "pEVar30->a" identifier -> field_identifier) [ (binary_expression "iVar31 + -1" identifier + number_literal) ]) . field_identifier) = (field_expression "local_4c->zSpan" identifier -> field_identifier)) ;) (expression_statement "local_4c->zName = (char *)0x0;" (assignment_expression "local_4c->zName = (char *)0x0" (field_expression "local_4c->zName" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_4c->zSpan = (char *)0x0;" (assignment_expression "local_4c->zSpan = (char *)0x0" (field_expression "local_4c->zSpan" identifier -> field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) (expression_statement "local_4c->pExpr = (Expr *)0x0;" (assignment_expression "local_4c->pExpr = (Expr *)0x0" (field_expression "local_4c->pExpr" identifier -> field_identifier) = (cast_expression "(Expr *)0x0" ( (type_descriptor "Expr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))))) (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" identifier = (binary_expression "local_44 + 1" identifier + number_literal)) ;) (expression_statement "local_4c = local_4c + 1;" (assignment_expression "local_4c = local_4c + 1" identifier = (binary_expression "local_4c + 1" identifier + number_literal)) ;) (if_statement "if (pList_00->nExpr <= local_44) goto LAB_000d07cd;" if (parenthesized_expression "(pList_00->nExpr <= local_44)" ( (binary_expression "pList_00->nExpr <= local_44" (field_expression "pList_00->nExpr" identifier -> field_identifier) <= identifier) )) (goto_statement "goto LAB_000d07cd;" goto statement_identifier ;)) (expression_statement "pEVar15 = local_4c->pExpr;" (assignment_expression "pEVar15 = local_4c->pExpr" identifier = (field_expression "local_4c->pExpr" identifier -> field_identifier)) ;) (expression_statement "uVar12 = pEVar15->op;" (assignment_expression "uVar12 = pEVar15->op" identifier = (field_expression "pEVar15->op" identifier -> field_identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_40 = (SrcList *)0x0;" (assignment_expression "local_40 = (SrcList *)0x0" identifier = (cast_expression "(SrcList *)0x0" ( (type_descriptor "SrcList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pEVar30 = p->pEList;" (assignment_expression "pEVar30 = p->pEList" identifier = (field_expression "p->pEList" identifier -> field_identifier)) ;) (goto_statement "goto LAB_000d07de;" goto statement_identifier ;) }))) })) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;) (labeled_statement "LAB_000cfe32:\n  do {\n    if ((*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)) {\n      pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n      if (""[*pbVar16] == ""[*pbVar5]) {\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    ppcVar24 = ppcVar24 + 0x11;\n  } while (iVar13 < pSVar6->nSrc);" statement_identifier : (do_statement "do {\n    if ((*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)) {\n      pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n      if (""[*pbVar16] == ""[*pbVar5]) {\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    ppcVar24 = ppcVar24 + 0x11;\n  } while (iVar13 < pSVar6->nSrc);" do (compound_statement "{\n    if ((*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)) {\n      pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n      if (""[*pbVar16] == ""[*pbVar5]) {\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    ppcVar24 = ppcVar24 + 0x11;\n  }" { (if_statement "if ((*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)) {\n      pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n      if (""[*pbVar16] == ""[*pbVar5]) {\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }\n    }" if (parenthesized_expression "((*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0))" ( (binary_expression "(*ppcVar24 == (char *)0x0) && (pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)" (parenthesized_expression "(*ppcVar24 == (char *)0x0)" ( (binary_expression "*ppcVar24 == (char *)0x0" (pointer_expression "*ppcVar24" * identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0)" ( (comma_expression "pbVar5 = (byte *)ppcVar24[1], pbVar5 != (byte *)0x0" (assignment_expression "pbVar5 = (byte *)ppcVar24[1]" identifier = (cast_expression "(byte *)ppcVar24[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "ppcVar24[1]" identifier [ number_literal ]))) , (binary_expression "pbVar5 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      pbVar16 = (byte *)pWVar35->a[iVar31].zName;\n      if (""[*pbVar16] == ""[*pbVar5]) {\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }\n    }" { (expression_statement "pbVar16 = (byte *)pWVar35->a[iVar31].zName;" (assignment_expression "pbVar16 = (byte *)pWVar35->a[iVar31].zName" identifier = (cast_expression "(byte *)pWVar35->a[iVar31].zName" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pWVar35->a[iVar31].zName" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (if_statement "if (""[*pbVar16] == ""[*pbVar5]) {\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }" if (parenthesized_expression "(""[*pbVar16] == ""[*pbVar5])" ( (binary_expression """[*pbVar16] == ""[*pbVar5]" (subscript_expression """[*pbVar16]" (string_literal """" " ") [ (pointer_expression "*pbVar16" * identifier) ]) == (subscript_expression """[*pbVar5]" (string_literal """" " ") [ (pointer_expression "*pbVar5" * identifier) ])) )) (compound_statement "{\n        if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }\n        ppcVar24[3] = (char *)pTVar17;\n        puVar1 = &pSVar6->a[iVar13].fg.field_0x1;\n        *puVar1 = *puVar1 | 0x20;\n        pTVar17->nTabRef = pTVar17->nTabRef + 1;\n        pSVar18->selFlags = pSVar18->selFlags | 0x2000;\n      }" { (if_statement "if (*pbVar5 != 0) {\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }" if (parenthesized_expression "(*pbVar5 != 0)" ( (binary_expression "*pbVar5 != 0" (pointer_expression "*pbVar5" * identifier) != number_literal) )) (compound_statement "{\n          iVar19 = 1;\n          do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);\n        }" { (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (do_statement "do {\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          } while (*pbVar25 != 0);" do (compound_statement "{\n            pbVar25 = pbVar5 + iVar19;\n            if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar19 = iVar19 + 1;\n          }" { (expression_statement "pbVar25 = pbVar5 + iVar19;" (assignment_expression "pbVar25 = pbVar5 + iVar19" identifier = (binary_expression "pbVar5 + iVar19" identifier + identifier)) ;) (if_statement "if (""[*pbVar25] != ""[pbVar16[iVar19]]) {\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }" if (parenthesized_expression "(""[*pbVar25] != ""[pbVar16[iVar19]])" ( (binary_expression """[*pbVar25] != ""[pbVar16[iVar19]]" (subscript_expression """[*pbVar25]" (string_literal """" " ") [ (pointer_expression "*pbVar25" * identifier) ]) != (subscript_expression """[pbVar16[iVar19]]" (string_literal """" " ") [ (subscript_expression "pbVar16[iVar19]" identifier [ identifier ]) ])) )) (compound_statement "{\n              iVar13 = iVar13 + 1;\n              ppcVar24 = ppcVar24 + 0x11;\n              if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "ppcVar24 = ppcVar24 + 0x11;" (assignment_expression "ppcVar24 = ppcVar24 + 0x11" identifier = (binary_expression "ppcVar24 + 0x11" identifier + number_literal)) ;) (if_statement "if (iVar13 < pSVar6->nSrc) goto LAB_000cfe32;" if (parenthesized_expression "(iVar13 < pSVar6->nSrc)" ( (binary_expression "iVar13 < pSVar6->nSrc" identifier < (field_expression "pSVar6->nSrc" identifier -> field_identifier)) )) (goto_statement "goto LAB_000cfe32;" goto statement_identifier ;)) (goto_statement "goto LAB_000cfecc;" goto statement_identifier ;) })) (expression_statement "iVar19 = iVar19 + 1;" (assignment_expression "iVar19 = iVar19 + 1" identifier = (binary_expression "iVar19 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pbVar25 != 0)" ( (binary_expression "*pbVar25 != 0" (pointer_expression "*pbVar25" * identifier) != number_literal) )) ;) })) (expression_statement "ppcVar24[3] = (char *)pTVar17;" (assignment_expression "ppcVar24[3] = (char *)pTVar17" (subscript_expression "ppcVar24[3]" identifier [ number_literal ]) = (cast_expression "(char *)pTVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "puVar1 = &pSVar6->a[iVar13].fg.field_0x1;" (assignment_expression "puVar1 = &pSVar6->a[iVar13].fg.field_0x1" identifier = (pointer_expression "&pSVar6->a[iVar13].fg.field_0x1" & (field_expression "pSVar6->a[iVar13].fg.field_0x1" (field_expression "pSVar6->a[iVar13].fg" (subscript_expression "pSVar6->a[iVar13]" (field_expression "pSVar6->a" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier))) ;) (expression_statement "*puVar1 = *puVar1 | 0x20;" (assignment_expression "*puVar1 = *puVar1 | 0x20" (pointer_expression "*puVar1" * identifier) = (binary_expression "*puVar1 | 0x20" (pointer_expression "*puVar1" * identifier) | number_literal)) ;) (expression_statement "pTVar17->nTabRef = pTVar17->nTabRef + 1;" (assignment_expression "pTVar17->nTabRef = pTVar17->nTabRef + 1" (field_expression "pTVar17->nTabRef" identifier -> field_identifier) = (binary_expression "pTVar17->nTabRef + 1" (field_expression "pTVar17->nTabRef" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pSVar18->selFlags = pSVar18->selFlags | 0x2000;" (assignment_expression "pSVar18->selFlags = pSVar18->selFlags | 0x2000" (field_expression "pSVar18->selFlags" identifier -> field_identifier) = (binary_expression "pSVar18->selFlags | 0x2000" (field_expression "pSVar18->selFlags" identifier -> field_identifier) | number_literal)) ;) })) })) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "ppcVar24 = ppcVar24 + 0x11;" (assignment_expression "ppcVar24 = ppcVar24 + 0x11" identifier = (binary_expression "ppcVar24 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < pSVar6->nSrc)" ( (binary_expression "iVar13 < pSVar6->nSrc" identifier < (field_expression "pSVar6->nSrc" identifier -> field_identifier)) )) ;)) (labeled_statement "LAB_000cfecc:\n  if (2 < pTVar17->nTabRef) {\nLAB_000cffd0:\n    pcVar22 = "multiple references to recursive table: %s";\n    pbVar16 = (byte *)in_stack_ffffff7c->a[iVar31].zName;\nLAB_000cfd64:\n    sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" statement_identifier : (if_statement "if (2 < pTVar17->nTabRef) {\nLAB_000cffd0:\n    pcVar22 = "multiple references to recursive table: %s";\n    pbVar16 = (byte *)in_stack_ffffff7c->a[iVar31].zName;\nLAB_000cfd64:\n    sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" if (parenthesized_expression "(2 < pTVar17->nTabRef)" ( (binary_expression "2 < pTVar17->nTabRef" number_literal < (field_expression "pTVar17->nTabRef" identifier -> field_identifier)) )) (compound_statement "{\nLAB_000cffd0:\n    pcVar22 = "multiple references to recursive table: %s";\n    pbVar16 = (byte *)in_stack_ffffff7c->a[iVar31].zName;\nLAB_000cfd64:\n    sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" { (labeled_statement "LAB_000cffd0:\n    pcVar22 = "multiple references to recursive table: %s";" statement_identifier : (expression_statement "pcVar22 = "multiple references to recursive table: %s";" (assignment_expression "pcVar22 = "multiple references to recursive table: %s"" identifier = (string_literal ""multiple references to recursive table: %s"" " string_content ")) ;)) (expression_statement "pbVar16 = (byte *)in_stack_ffffff7c->a[iVar31].zName;" (assignment_expression "pbVar16 = (byte *)in_stack_ffffff7c->a[iVar31].zName" identifier = (cast_expression "(byte *)in_stack_ffffff7c->a[iVar31].zName" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "in_stack_ffffff7c->a[iVar31].zName" (subscript_expression "in_stack_ffffff7c->a[iVar31]" (field_expression "in_stack_ffffff7c->a" identifier -> field_identifier) [ identifier ]) . field_identifier))) ;) (labeled_statement "LAB_000cfd64:\n    sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16);" statement_identifier : (expression_statement "sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16);" (call_expression "sqlite3ErrorMsg(pParse_00,pcVar22,pbVar16)" identifier (argument_list "(pParse_00,pcVar22,pbVar16)" ( identifier , identifier , identifier ))) ;)) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) }))) (expression_statement "pWVar35->a[iVar31].zCteErr = "circular reference: %s";" (assignment_expression "pWVar35->a[iVar31].zCteErr = "circular reference: %s"" (field_expression "pWVar35->a[iVar31].zCteErr" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier) = (string_literal ""circular reference: %s"" " string_content ")) ;) (expression_statement "pWVar28 = pParse_00->pWith;" (assignment_expression "pWVar28 = pParse_00->pWith" identifier = (field_expression "pParse_00->pWith" identifier -> field_identifier)) ;) (expression_statement "pParse_00->pWith = in_stack_ffffff7c;" (assignment_expression "pParse_00->pWith = in_stack_ffffff7c" (field_expression "pParse_00->pWith" identifier -> field_identifier) = identifier) ;) (expression_statement "pSVar7 = pSVar18->pPrior;" (assignment_expression "pSVar7 = pSVar18->pPrior" identifier = (field_expression "pSVar18->pPrior" identifier -> field_identifier)) ;) (expression_statement "pSVar7->pWith = pSVar18->pWith;" (assignment_expression "pSVar7->pWith = pSVar18->pWith" (field_expression "pSVar7->pWith" identifier -> field_identifier) = (field_expression "pSVar18->pWith" identifier -> field_identifier)) ;) (if_statement "if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n    sqlite3WalkSelect(pWalker,pSVar7);\n  }" if (parenthesized_expression "(pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)" ( (binary_expression "pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0" (field_expression "pWalker->xSelectCallback" identifier -> field_identifier) != (cast_expression "(_func_int_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    sqlite3WalkSelect(pWalker,pSVar7);\n  }" { (expression_statement "sqlite3WalkSelect(pWalker,pSVar7);" (call_expression "sqlite3WalkSelect(pWalker,pSVar7)" identifier (argument_list "(pWalker,pSVar7)" ( identifier , identifier ))) ;) })) (expression_statement "pSVar7->pWith = (With *)0x0;" (assignment_expression "pSVar7->pWith = (With *)0x0" (field_expression "pSVar7->pWith" identifier -> field_identifier) = (cast_expression "(With *)0x0" ( (type_descriptor "With *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000cfc05:\n  pParse_00->pWith = in_stack_ffffff7c;" statement_identifier : (expression_statement "pParse_00->pWith = in_stack_ffffff7c;" (assignment_expression "pParse_00->pWith = in_stack_ffffff7c" (field_expression "pParse_00->pWith" identifier -> field_identifier) = identifier) ;)) (expression_statement "pSVar7 = pSVar18;" (assignment_expression "pSVar7 = pSVar18" identifier = identifier) ;) (do_statement "do {\n    pSVar26 = pSVar7;\n    pSVar7 = pSVar26->pPrior;\n  } while (pSVar7 != (Select *)0x0);" do (compound_statement "{\n    pSVar26 = pSVar7;\n    pSVar7 = pSVar26->pPrior;\n  }" { (expression_statement "pSVar26 = pSVar7;" (assignment_expression "pSVar26 = pSVar7" identifier = identifier) ;) (expression_statement "pSVar7 = pSVar26->pPrior;" (assignment_expression "pSVar7 = pSVar26->pPrior" identifier = (field_expression "pSVar26->pPrior" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(pSVar7 != (Select *)0x0)" ( (binary_expression "pSVar7 != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "pEVar30 = pSVar26->pEList;" (assignment_expression "pEVar30 = pSVar26->pEList" identifier = (field_expression "pSVar26->pEList" identifier -> field_identifier)) ;) (expression_statement "pEVar8 = pWVar35->a[iVar31].pCols;" (assignment_expression "pEVar8 = pWVar35->a[iVar31].pCols" identifier = (field_expression "pWVar35->a[iVar31].pCols" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier)) ;) (if_statement "if ((pEVar8 != (ExprList *)0x0) && (pEVar30 != (ExprList *)0x0)) {\n    iVar13 = pEVar30->nExpr;\n    iVar19 = pEVar8->nExpr;\n    if (iVar13 != iVar19) {\n      sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19);\n      pParse_00->pWith = pWVar28;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }" if (parenthesized_expression "((pEVar8 != (ExprList *)0x0) && (pEVar30 != (ExprList *)0x0))" ( (binary_expression "(pEVar8 != (ExprList *)0x0) && (pEVar30 != (ExprList *)0x0)" (parenthesized_expression "(pEVar8 != (ExprList *)0x0)" ( (binary_expression "pEVar8 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pEVar30 != (ExprList *)0x0)" ( (binary_expression "pEVar30 != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    iVar13 = pEVar30->nExpr;\n    iVar19 = pEVar8->nExpr;\n    if (iVar13 != iVar19) {\n      sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19);\n      pParse_00->pWith = pWVar28;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }" { (expression_statement "iVar13 = pEVar30->nExpr;" (assignment_expression "iVar13 = pEVar30->nExpr" identifier = (field_expression "pEVar30->nExpr" identifier -> field_identifier)) ;) (expression_statement "iVar19 = pEVar8->nExpr;" (assignment_expression "iVar19 = pEVar8->nExpr" identifier = (field_expression "pEVar8->nExpr" identifier -> field_identifier)) ;) (if_statement "if (iVar13 != iVar19) {\n      sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19);\n      pParse_00->pWith = pWVar28;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }" if (parenthesized_expression "(iVar13 != iVar19)" ( (binary_expression "iVar13 != iVar19" identifier != identifier) )) (compound_statement "{\n      sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19);\n      pParse_00->pWith = pWVar28;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }" { (expression_statement "sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19);" (call_expression "sqlite3ErrorMsg(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19)" identifier (argument_list "(pParse_00,"table %s has %d values for %d columns",\n                      in_stack_ffffff7c->a[iVar31].zName,iVar13,iVar19)" ( identifier , (string_literal ""table %s has %d values for %d columns"" " string_content ") , (field_expression "in_stack_ffffff7c->a[iVar31].zName" (subscript_expression "in_stack_ffffff7c->a[iVar31]" (field_expression "in_stack_ffffff7c->a" identifier -> field_identifier) [ identifier ]) . field_identifier) , identifier , identifier ))) ;) (expression_statement "pParse_00->pWith = pWVar28;" (assignment_expression "pParse_00->pWith = pWVar28" (field_expression "pParse_00->pWith" identifier -> field_identifier) = identifier) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) })) (expression_statement "sqlite3ColumnsFromExprList\n            ((Parse *)pParse_00->db,(ExprList *)&pTVar17->aCol,(i16 *)in_stack_ffffff68,\n             in_stack_ffffff6c);" (call_expression "sqlite3ColumnsFromExprList\n            ((Parse *)pParse_00->db,(ExprList *)&pTVar17->aCol,(i16 *)in_stack_ffffff68,\n             in_stack_ffffff6c)" identifier (argument_list "((Parse *)pParse_00->db,(ExprList *)&pTVar17->aCol,(i16 *)in_stack_ffffff68,\n             in_stack_ffffff6c)" ( (cast_expression "(Parse *)pParse_00->db" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pParse_00->db" identifier -> field_identifier)) , (cast_expression "(ExprList *)&pTVar17->aCol" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pTVar17->aCol" & (field_expression "pTVar17->aCol" identifier -> field_identifier))) , (cast_expression "(i16 *)in_stack_ffffff68" ( (type_descriptor "i16 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) ;) (if_statement "if (bVar11 < 2) {\n    pcVar22 = "multiple recursive references: %s";\n    if ((pSVar18->selFlags & 0x2000) == 0) {\n      pcVar22 = "recursive reference in a subquery: %s";\n    }\n    pWVar35->a[iVar31].zCteErr = pcVar22;\n    if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n      sqlite3WalkSelect(pWalker,pSVar18);\n    }\n  }" if (parenthesized_expression "(bVar11 < 2)" ( (binary_expression "bVar11 < 2" identifier < number_literal) )) (compound_statement "{\n    pcVar22 = "multiple recursive references: %s";\n    if ((pSVar18->selFlags & 0x2000) == 0) {\n      pcVar22 = "recursive reference in a subquery: %s";\n    }\n    pWVar35->a[iVar31].zCteErr = pcVar22;\n    if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n      sqlite3WalkSelect(pWalker,pSVar18);\n    }\n  }" { (expression_statement "pcVar22 = "multiple recursive references: %s";" (assignment_expression "pcVar22 = "multiple recursive references: %s"" identifier = (string_literal ""multiple recursive references: %s"" " string_content ")) ;) (if_statement "if ((pSVar18->selFlags & 0x2000) == 0) {\n      pcVar22 = "recursive reference in a subquery: %s";\n    }" if (parenthesized_expression "((pSVar18->selFlags & 0x2000) == 0)" ( (binary_expression "(pSVar18->selFlags & 0x2000) == 0" (parenthesized_expression "(pSVar18->selFlags & 0x2000)" ( (binary_expression "pSVar18->selFlags & 0x2000" (field_expression "pSVar18->selFlags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar22 = "recursive reference in a subquery: %s";\n    }" { (expression_statement "pcVar22 = "recursive reference in a subquery: %s";" (assignment_expression "pcVar22 = "recursive reference in a subquery: %s"" identifier = (string_literal ""recursive reference in a subquery: %s"" " string_content ")) ;) })) (expression_statement "pWVar35->a[iVar31].zCteErr = pcVar22;" (assignment_expression "pWVar35->a[iVar31].zCteErr = pcVar22" (field_expression "pWVar35->a[iVar31].zCteErr" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) (if_statement "if (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0) {\n      sqlite3WalkSelect(pWalker,pSVar18);\n    }" if (parenthesized_expression "(pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)" ( (binary_expression "pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0" (field_expression "pWalker->xSelectCallback" identifier -> field_identifier) != (cast_expression "(_func_int_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      sqlite3WalkSelect(pWalker,pSVar18);\n    }" { (expression_statement "sqlite3WalkSelect(pWalker,pSVar18);" (call_expression "sqlite3WalkSelect(pWalker,pSVar18)" identifier (argument_list "(pWalker,pSVar18)" ( identifier , identifier ))) ;) })) })) (expression_statement "pWVar35->a[iVar31].zCteErr = (char *)0x0;" (assignment_expression "pWVar35->a[iVar31].zCteErr = (char *)0x0" (field_expression "pWVar35->a[iVar31].zCteErr" (subscript_expression "pWVar35->a[iVar31]" (field_expression "pWVar35->a" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pParse_00->pWith = pWVar28;" (assignment_expression "pParse_00->pWith = pWVar28" (field_expression "pParse_00->pWith" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_000cfc82:\n  if (pFrom->pTab == (Table *)0x0) {\n    if (pFrom->zName == (char *)0x0) {\nLAB_000cfd90:\n      if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);\n      pFrom->pTab = pTVar17;\n      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n      if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      pTVar17->nTabRef = pTVar17->nTabRef + 1;\n      if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }\n      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);\n      if (iVar31 != 0) goto LAB_000cfae4;\n      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n      pFrom->pSelect = pSVar18;\n      iVar3 = pTVar17->nCol;\n      pTVar17->nCol = -1;\n      if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }\n      pTVar17->nCol = iVar3;\n    }\n  }" statement_identifier : (if_statement "if (pFrom->pTab == (Table *)0x0) {\n    if (pFrom->zName == (char *)0x0) {\nLAB_000cfd90:\n      if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);\n      pFrom->pTab = pTVar17;\n      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n      if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      pTVar17->nTabRef = pTVar17->nTabRef + 1;\n      if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }\n      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);\n      if (iVar31 != 0) goto LAB_000cfae4;\n      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n      pFrom->pSelect = pSVar18;\n      iVar3 = pTVar17->nCol;\n      pTVar17->nCol = -1;\n      if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }\n      pTVar17->nCol = iVar3;\n    }\n  }" if (parenthesized_expression "(pFrom->pTab == (Table *)0x0)" ( (binary_expression "pFrom->pTab == (Table *)0x0" (field_expression "pFrom->pTab" identifier -> field_identifier) == (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (pFrom->zName == (char *)0x0) {\nLAB_000cfd90:\n      if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);\n      pFrom->pTab = pTVar17;\n      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n      if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      pTVar17->nTabRef = pTVar17->nTabRef + 1;\n      if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }\n      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);\n      if (iVar31 != 0) goto LAB_000cfae4;\n      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n      pFrom->pSelect = pSVar18;\n      iVar3 = pTVar17->nCol;\n      pTVar17->nCol = -1;\n      if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }\n      pTVar17->nCol = iVar3;\n    }\n  }" { (if_statement "if (pFrom->zName == (char *)0x0) {\nLAB_000cfd90:\n      if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);\n      pFrom->pTab = pTVar17;\n      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n      if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      pTVar17->nTabRef = pTVar17->nTabRef + 1;\n      if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }\n      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);\n      if (iVar31 != 0) goto LAB_000cfae4;\n      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n      pFrom->pSelect = pSVar18;\n      iVar3 = pTVar17->nCol;\n      pTVar17->nCol = -1;\n      if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }\n      pTVar17->nCol = iVar3;\n    }" if (parenthesized_expression "(pFrom->zName == (char *)0x0)" ( (binary_expression "pFrom->zName == (char *)0x0" (field_expression "pFrom->zName" identifier -> field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000cfd90:\n      if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;\n    }" { (labeled_statement "LAB_000cfd90:\n      if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;" statement_identifier : (if_statement "if ((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)) goto LAB_000cfae4;" if (parenthesized_expression "((((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0))" ( (binary_expression "(((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)) ||\n         (iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)" (parenthesized_expression "(((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0))" ( (binary_expression "((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) &&\n          (iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)" (parenthesized_expression "((pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0))" ( (binary_expression "(pFrom->pSelect != (Select *)0x0) &&\n           (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)" (parenthesized_expression "(pFrom->pSelect != (Select *)0x0)" ( (binary_expression "pFrom->pSelect != (Select *)0x0" (field_expression "pFrom->pSelect" identifier -> field_identifier) != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)" ( (binary_expression "pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0" (field_expression "pWalker->xSelectCallback" identifier -> field_identifier) != (cast_expression "(_func_int_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0)" ( (comma_expression "iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect), iVar31 != 0" (assignment_expression "iVar31 = sqlite3WalkSelect(pWalker,pFrom->pSelect)" identifier = (call_expression "sqlite3WalkSelect(pWalker,pFrom->pSelect)" identifier (argument_list "(pWalker,pFrom->pSelect)" ( identifier , (field_expression "pFrom->pSelect" identifier -> field_identifier) )))) , (binary_expression "iVar31 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0)" ( (comma_expression "iVar31 = sqlite3ExpandSubquery(pParse,pFrom), iVar31 != 0" (assignment_expression "iVar31 = sqlite3ExpandSubquery(pParse,pFrom)" identifier = (call_expression "sqlite3ExpandSubquery(pParse,pFrom)" identifier (argument_list "(pParse,pFrom)" ( identifier , identifier )))) , (binary_expression "iVar31 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;))) }) (else_clause "else {\nLAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);\n      pFrom->pTab = pTVar17;\n      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n      if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      pTVar17->nTabRef = pTVar17->nTabRef + 1;\n      if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }\n      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);\n      if (iVar31 != 0) goto LAB_000cfae4;\n      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n      pFrom->pSelect = pSVar18;\n      iVar3 = pTVar17->nCol;\n      pTVar17->nCol = -1;\n      if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }\n      pTVar17->nCol = iVar3;\n    }" else (compound_statement "{\nLAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);\n      pFrom->pTab = pTVar17;\n      if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;\n      if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      pTVar17->nTabRef = pTVar17->nTabRef + 1;\n      if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }\n      iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);\n      if (iVar31 != 0) goto LAB_000cfae4;\n      pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);\n      pFrom->pSelect = pSVar18;\n      iVar3 = pTVar17->nCol;\n      pTVar17->nCol = -1;\n      if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }\n      pTVar17->nCol = iVar3;\n    }" { (labeled_statement "LAB_000cfcb3:\n      pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);" statement_identifier : (expression_statement "pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom);" (assignment_expression "pTVar17 = sqlite3LocateTableItem(pParse,0,pFrom)" identifier = (call_expression "sqlite3LocateTableItem(pParse,0,pFrom)" identifier (argument_list "(pParse,0,pFrom)" ( identifier , number_literal , identifier )))) ;)) (expression_statement "pFrom->pTab = pTVar17;" (assignment_expression "pFrom->pTab = pTVar17" (field_expression "pFrom->pTab" identifier -> field_identifier) = identifier) ;) (if_statement "if (pTVar17 == (Table *)0x0) goto LAB_000cfae4;" if (parenthesized_expression "(pTVar17 == (Table *)0x0)" ( (binary_expression "pTVar17 == (Table *)0x0" identifier == (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (if_statement "if (0xfffe < pTVar17->nTabRef) {\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }" if (parenthesized_expression "(0xfffe < pTVar17->nTabRef)" ( (binary_expression "0xfffe < pTVar17->nTabRef" number_literal < (field_expression "pTVar17->nTabRef" identifier -> field_identifier)) )) (compound_statement "{\n        sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);\n        pFrom->pTab = (Table *)0x0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }" { (expression_statement "sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName);" (call_expression "sqlite3ErrorMsg(pParse,"too many references to \"%s\": max 65535",pTVar17->zName)" identifier (argument_list "(pParse,"too many references to \"%s\": max 65535",pTVar17->zName)" ( identifier , (string_literal ""too many references to \"%s\": max 65535"" " string_content escape_sequence string_content escape_sequence string_content ") , (field_expression "pTVar17->zName" identifier -> field_identifier) ))) ;) (expression_statement "pFrom->pTab = (Table *)0x0;" (assignment_expression "pFrom->pTab = (Table *)0x0" (field_expression "pFrom->pTab" identifier -> field_identifier) = (cast_expression "(Table *)0x0" ( (type_descriptor "Table *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) (expression_statement "pTVar17->nTabRef = pTVar17->nTabRef + 1;" (assignment_expression "pTVar17->nTabRef = pTVar17->nTabRef + 1" (field_expression "pTVar17->nTabRef" identifier -> field_identifier) = (binary_expression "pTVar17->nTabRef + 1" (field_expression "pTVar17->nTabRef" identifier -> field_identifier) + number_literal)) ;) (if_statement "if (pTVar17->nModuleArg == 0) {\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }" if (parenthesized_expression "(pTVar17->nModuleArg == 0)" ( (binary_expression "pTVar17->nModuleArg == 0" (field_expression "pTVar17->nModuleArg" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n        if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;\n      }" { (if_statement "if (((pFrom->fg).field_0x1 & 4) != 0) {\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }" if (parenthesized_expression "(((pFrom->fg).field_0x1 & 4) != 0)" ( (binary_expression "((pFrom->fg).field_0x1 & 4) != 0" (parenthesized_expression "((pFrom->fg).field_0x1 & 4)" ( (binary_expression "(pFrom->fg).field_0x1 & 4" (field_expression "(pFrom->fg).field_0x1" (parenthesized_expression "(pFrom->fg)" ( (field_expression "pFrom->fg" identifier -> field_identifier) )) . field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n          pcVar22 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }" { (expression_statement "pcVar22 = "\'%s\' is not a function";" (assignment_expression "pcVar22 = "\'%s\' is not a function"" identifier = (string_literal ""\'%s\' is not a function"" " escape_sequence string_content escape_sequence string_content ")) ;) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) (if_statement "if (pTVar17->pSelect == (Select *)0x0) goto LAB_000cfc89;" if (parenthesized_expression "(pTVar17->pSelect == (Select *)0x0)" ( (binary_expression "pTVar17->pSelect == (Select *)0x0" (field_expression "pTVar17->pSelect" identifier -> field_identifier) == (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfc89;" goto statement_identifier ;)) })) (expression_statement "iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17);" (assignment_expression "iVar31 = sqlite3ViewGetColumnNames(pParse,pTVar17)" identifier = (call_expression "sqlite3ViewGetColumnNames(pParse,pTVar17)" identifier (argument_list "(pParse,pTVar17)" ( identifier , identifier )))) ;) (if_statement "if (iVar31 != 0) goto LAB_000cfae4;" if (parenthesized_expression "(iVar31 != 0)" ( (binary_expression "iVar31 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (expression_statement "pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c);" (assignment_expression "pSVar18 = sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c)" identifier = (call_expression "sqlite3SelectDup(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c)" identifier (argument_list "(in_stack_ffffff74,pSVar33,(int)in_stack_ffffff7c)" ( identifier , identifier , (cast_expression "(int)in_stack_ffffff7c" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "pFrom->pSelect = pSVar18;" (assignment_expression "pFrom->pSelect = pSVar18" (field_expression "pFrom->pSelect" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar3 = pTVar17->nCol;" (assignment_expression "iVar3 = pTVar17->nCol" identifier = (field_expression "pTVar17->nCol" identifier -> field_identifier)) ;) (expression_statement "pTVar17->nCol = -1;" (assignment_expression "pTVar17->nCol = -1" (field_expression "pTVar17->nCol" identifier -> field_identifier) = number_literal) ;) (if_statement "if ((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)) {\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }" if (parenthesized_expression "((pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0))" ( (binary_expression "(pFrom->pSelect != (Select *)0x0) &&\n         (pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)" (parenthesized_expression "(pFrom->pSelect != (Select *)0x0)" ( (binary_expression "pFrom->pSelect != (Select *)0x0" (field_expression "pFrom->pSelect" identifier -> field_identifier) != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0)" ( (binary_expression "pWalker->xSelectCallback != (_func_int_Walker_ptr_Select_ptr *)0x0" (field_expression "pWalker->xSelectCallback" identifier -> field_identifier) != (cast_expression "(_func_int_Walker_ptr_Select_ptr *)0x0" ( (type_descriptor "_func_int_Walker_ptr_Select_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        sqlite3WalkSelect(pWalker,pFrom->pSelect);\n      }" { (expression_statement "sqlite3WalkSelect(pWalker,pFrom->pSelect);" (call_expression "sqlite3WalkSelect(pWalker,pFrom->pSelect)" identifier (argument_list "(pWalker,pFrom->pSelect)" ( identifier , (field_expression "pFrom->pSelect" identifier -> field_identifier) ))) ;) })) (expression_statement "pTVar17->nCol = iVar3;" (assignment_expression "pTVar17->nCol = iVar3" (field_expression "pTVar17->nCol" identifier -> field_identifier) = identifier) ;) }))) }))) (labeled_statement "LAB_000cfc89:\n  piTab = (int *)0xcfc94;" statement_identifier : (expression_statement "piTab = (int *)0xcfc94;" (assignment_expression "piTab = (int *)0xcfc94" identifier = (cast_expression "(int *)0xcfc94" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;)) (expression_statement "iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33);" (assignment_expression "iVar31 = sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33)" identifier = (call_expression "sqlite3IndexedByLookup((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33)" identifier (argument_list "((Parse *)in_stack_ffffff74,(SrcList_item *)pSVar33)" ( (cast_expression "(Parse *)in_stack_ffffff74" ( (type_descriptor "Parse *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(SrcList_item *)pSVar33" ( (type_descriptor "SrcList_item *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar31 != 0) goto LAB_000cfae4;" if (parenthesized_expression "(iVar31 != 0)" ( (binary_expression "iVar31 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (labeled_statement "LAB_000cf910:\n  pSVar33 = (Select *)((int)&pSVar33->pEList + 1);" statement_identifier : (expression_statement "pSVar33 = (Select *)((int)&pSVar33->pEList + 1);" (assignment_expression "pSVar33 = (Select *)((int)&pSVar33->pEList + 1)" identifier = (cast_expression "(Select *)((int)&pSVar33->pEList + 1)" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pSVar33->pEList + 1)" ( (binary_expression "(int)&pSVar33->pEList + 1" (cast_expression "(int)&pSVar33->pEList" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pSVar33->pEList" & (field_expression "pSVar33->pEList" identifier -> field_identifier))) + number_literal) )))) ;)) (expression_statement "pFrom = pFrom + 1;" (assignment_expression "pFrom = pFrom + 1" identifier = (binary_expression "pFrom + 1" identifier + number_literal)) ;) (if_statement "if (pList->nSrc <= (int)pSVar33) goto LAB_000cf928;" if (parenthesized_expression "(pList->nSrc <= (int)pSVar33)" ( (binary_expression "pList->nSrc <= (int)pSVar33" (field_expression "pList->nSrc" identifier -> field_identifier) <= (cast_expression "(int)pSVar33" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000cf928;" goto statement_identifier ;)) (goto_statement "goto LAB_000cf800;" goto statement_identifier ;) (labeled_statement "LAB_000d07cd:\n  exprListDeleteNN(db,pList_00);" statement_identifier : (expression_statement "exprListDeleteNN(db,pList_00);" (call_expression "exprListDeleteNN(db,pList_00)" identifier (argument_list "(db,pList_00)" ( identifier , identifier ))) ;)) (expression_statement "p->pEList = pEVar30;" (assignment_expression "p->pEList = pEVar30" (field_expression "p->pEList" identifier -> field_identifier) = identifier) ;) (labeled_statement "LAB_000d07de:\n  local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (if_statement "if (pEVar30 == (ExprList *)0x0) goto LAB_000cfaec;" if (parenthesized_expression "(pEVar30 == (ExprList *)0x0)" ( (binary_expression "pEVar30 == (ExprList *)0x0" identifier == (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;)) (if_statement "if (pEVar30->nExpr <= db->aLimit[2]) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      p->selFlags = p->selFlags | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }" if (parenthesized_expression "(pEVar30->nExpr <= db->aLimit[2])" ( (binary_expression "pEVar30->nExpr <= db->aLimit[2]" (field_expression "pEVar30->nExpr" identifier -> field_identifier) <= (subscript_expression "db->aLimit[2]" (field_expression "db->aLimit" identifier -> field_identifier) [ number_literal ])) )) (compound_statement "{\n    if (((uint)local_40 & 0x200004) != 0) {\n      p->selFlags = p->selFlags | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }" { (if_statement "if (((uint)local_40 & 0x200004) != 0) {\n      p->selFlags = p->selFlags | 0x40000;\n    }" if (parenthesized_expression "(((uint)local_40 & 0x200004) != 0)" ( (binary_expression "((uint)local_40 & 0x200004) != 0" (parenthesized_expression "((uint)local_40 & 0x200004)" ( (binary_expression "(uint)local_40 & 0x200004" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      p->selFlags = p->selFlags | 0x40000;\n    }" { (expression_statement "p->selFlags = p->selFlags | 0x40000;" (assignment_expression "p->selFlags = p->selFlags | 0x40000" (field_expression "p->selFlags" identifier -> field_identifier) = (binary_expression "p->selFlags | 0x40000" (field_expression "p->selFlags" identifier -> field_identifier) | number_literal)) ;) })) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) (expression_statement "pcVar22 = "too many columns in result set";" (assignment_expression "pcVar22 = "too many columns in result set"" identifier = (string_literal ""too many columns in result set"" " string_content ")) ;) (labeled_statement "LAB_000cfad7:\n  sqlite3ErrorMsg(pParse,pcVar22);" statement_identifier : (expression_statement "sqlite3ErrorMsg(pParse,pcVar22);" (call_expression "sqlite3ErrorMsg(pParse,pcVar22)" identifier (argument_list "(pParse,pcVar22)" ( identifier , identifier ))) ;)) (labeled_statement "LAB_000cfae4:\n  local_48 = 2;" statement_identifier : (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;)) (labeled_statement "LAB_000cfaec:\n  if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }" statement_identifier : (if_statement "if (iVar4 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }" if (parenthesized_expression "(iVar4 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar4 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_48;\n  }" { (return_statement "return local_48;" return identifier ;) }))) comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 FUN_000cf720(int *param_1,int *param_2)\n\n{\n  undefined2 uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  int iVar13;\n  byte *pbVar14;\n  int *piVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  char *pcVar18;\n  undefined4 uVar19;\n  size_t sVar20;\n  char *pcVar21;\n  char cVar22;\n  int *piVar23;\n  byte *pbVar24;\n  byte *pbVar25;\n  undefined4 *puVar26;\n  int *piVar27;\n  int iVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  byte *local_88;\n  int *local_80;\n  int local_78;\n  byte *local_74;\n  int local_70;\n  char *local_68;\n  byte *local_64;\n  char *local_60;\n  int *local_4c;\n  undefined4 local_48;\n  int local_44;\n  int *local_40;\n  undefined1 local_2c [4];\n  char *local_28;\n  uint local_24;\n  int local_20;\n  \n  piVar2 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *piVar2;\n  uVar4 = param_2[2];\n  param_2[2] = uVar4 | 0x40;\n  if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);\nLAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n  iVar13 = piVar7[0x41];\n  piVar7[0x41] = (int)piVar8;\n  iVar17 = piVar15[0xd];\n  *(int *)(iVar17 + 0x40) = piVar15[0x10];\n  if (param_1[2] != 0) {\n    FUN_0004a550();\n  }\n  *(undefined4 *)(iVar17 + 0x40) = 0;\nLAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;\n  piVar9 = piVar15;\n  do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);\n  piVar23 = (int *)*piVar23;\n  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  FUN_000ae410(puVar16 + 1);\n  if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }\n  piVar8[iVar28 * 4 + 5] = 0;\n  piVar7[0x41] = iVar13;\nLAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }\nLAB_000cfc89:\n  iVar28 = FUN_000757e0();\n  if (iVar28 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);\n  piVar27 = piVar27 + 0x11;\n  if (*piVar5 <= (int)local_88) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  FUN_00056520();\n  *param_2 = (int)piVar27;\nLAB_000d07de:\n  local_48 = 0;\n  if (piVar27 == (int *)0x0) goto LAB_000cfaec;\n  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar21 = "too many columns in result set";\nLAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    \n  FUN_00116110();\n}\n\n" (function_definition "undefined4 FUN_000cf720(int *param_1,int *param_2)\n\n{\n  undefined2 uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  int iVar13;\n  byte *pbVar14;\n  int *piVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  char *pcVar18;\n  undefined4 uVar19;\n  size_t sVar20;\n  char *pcVar21;\n  char cVar22;\n  int *piVar23;\n  byte *pbVar24;\n  byte *pbVar25;\n  undefined4 *puVar26;\n  int *piVar27;\n  int iVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  byte *local_88;\n  int *local_80;\n  int local_78;\n  byte *local_74;\n  int local_70;\n  char *local_68;\n  byte *local_64;\n  char *local_60;\n  int *local_4c;\n  undefined4 local_48;\n  int local_44;\n  int *local_40;\n  undefined1 local_2c [4];\n  char *local_28;\n  uint local_24;\n  int local_20;\n  \n  piVar2 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *piVar2;\n  uVar4 = param_2[2];\n  param_2[2] = uVar4 | 0x40;\n  if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);\nLAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n  iVar13 = piVar7[0x41];\n  piVar7[0x41] = (int)piVar8;\n  iVar17 = piVar15[0xd];\n  *(int *)(iVar17 + 0x40) = piVar15[0x10];\n  if (param_1[2] != 0) {\n    FUN_0004a550();\n  }\n  *(undefined4 *)(iVar17 + 0x40) = 0;\nLAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;\n  piVar9 = piVar15;\n  do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);\n  piVar23 = (int *)*piVar23;\n  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  FUN_000ae410(puVar16 + 1);\n  if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }\n  piVar8[iVar28 * 4 + 5] = 0;\n  piVar7[0x41] = iVar13;\nLAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }\nLAB_000cfc89:\n  iVar28 = FUN_000757e0();\n  if (iVar28 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);\n  piVar27 = piVar27 + 0x11;\n  if (*piVar5 <= (int)local_88) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  FUN_00056520();\n  *param_2 = (int)piVar27;\nLAB_000d07de:\n  local_48 = 0;\n  if (piVar27 == (int *)0x0) goto LAB_000cfaec;\n  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar21 = "too many columns in result set";\nLAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    \n  FUN_00116110();\n}" type_identifier (function_declarator "FUN_000cf720(int *param_1,int *param_2)" identifier (parameter_list "(int *param_1,int *param_2)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) ))) (compound_statement "{\n  undefined2 uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  int iVar13;\n  byte *pbVar14;\n  int *piVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  char *pcVar18;\n  undefined4 uVar19;\n  size_t sVar20;\n  char *pcVar21;\n  char cVar22;\n  int *piVar23;\n  byte *pbVar24;\n  byte *pbVar25;\n  undefined4 *puVar26;\n  int *piVar27;\n  int iVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  byte *local_88;\n  int *local_80;\n  int local_78;\n  byte *local_74;\n  int local_70;\n  char *local_68;\n  byte *local_64;\n  char *local_60;\n  int *local_4c;\n  undefined4 local_48;\n  int local_44;\n  int *local_40;\n  undefined1 local_2c [4];\n  char *local_28;\n  uint local_24;\n  int local_20;\n  \n  piVar2 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *piVar2;\n  uVar4 = param_2[2];\n  param_2[2] = uVar4 | 0x40;\n  if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);\nLAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n  iVar13 = piVar7[0x41];\n  piVar7[0x41] = (int)piVar8;\n  iVar17 = piVar15[0xd];\n  *(int *)(iVar17 + 0x40) = piVar15[0x10];\n  if (param_1[2] != 0) {\n    FUN_0004a550();\n  }\n  *(undefined4 *)(iVar17 + 0x40) = 0;\nLAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;\n  piVar9 = piVar15;\n  do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);\n  piVar23 = (int *)*piVar23;\n  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  FUN_000ae410(puVar16 + 1);\n  if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }\n  piVar8[iVar28 * 4 + 5] = 0;\n  piVar7[0x41] = iVar13;\nLAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }\nLAB_000cfc89:\n  iVar28 = FUN_000757e0();\n  if (iVar28 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);\n  piVar27 = piVar27 + 0x11;\n  if (*piVar5 <= (int)local_88) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  FUN_00056520();\n  *param_2 = (int)piVar27;\nLAB_000d07de:\n  local_48 = 0;\n  if (piVar27 == (int *)0x0) goto LAB_000cfaec;\n  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar21 = "too many columns in result set";\nLAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    \n  FUN_00116110();\n}" { (declaration "undefined2 uVar1;" type_identifier identifier ;) (declaration "int *piVar2;" primitive_type (pointer_declarator "*piVar2" * identifier) ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "int *piVar6;" primitive_type (pointer_declarator "*piVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "char cVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "byte *pbVar14;" type_identifier (pointer_declarator "*pbVar14" * identifier) ;) (declaration "int *piVar15;" primitive_type (pointer_declarator "*piVar15" * identifier) ;) (declaration "undefined4 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "int iVar17;" primitive_type identifier ;) (declaration "char *pcVar18;" primitive_type (pointer_declarator "*pcVar18" * identifier) ;) (declaration "undefined4 uVar19;" type_identifier identifier ;) (declaration "size_t sVar20;" primitive_type identifier ;) (declaration "char *pcVar21;" primitive_type (pointer_declarator "*pcVar21" * identifier) ;) (declaration "char cVar22;" primitive_type identifier ;) (declaration "int *piVar23;" primitive_type (pointer_declarator "*piVar23" * identifier) ;) (declaration "byte *pbVar24;" type_identifier (pointer_declarator "*pbVar24" * identifier) ;) (declaration "byte *pbVar25;" type_identifier (pointer_declarator "*pbVar25" * identifier) ;) (declaration "undefined4 *puVar26;" type_identifier (pointer_declarator "*puVar26" * identifier) ;) (declaration "int *piVar27;" primitive_type (pointer_declarator "*piVar27" * identifier) ;) (declaration "int iVar28;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "bool bVar29;" primitive_type identifier ;) (declaration "byte *local_88;" type_identifier (pointer_declarator "*local_88" * identifier) ;) (declaration "int *local_80;" primitive_type (pointer_declarator "*local_80" * identifier) ;) (declaration "int local_78;" primitive_type identifier ;) (declaration "byte *local_74;" type_identifier (pointer_declarator "*local_74" * identifier) ;) (declaration "int local_70;" primitive_type identifier ;) (declaration "char *local_68;" primitive_type (pointer_declarator "*local_68" * identifier) ;) (declaration "byte *local_64;" type_identifier (pointer_declarator "*local_64" * identifier) ;) (declaration "char *local_60;" primitive_type (pointer_declarator "*local_60" * identifier) ;) (declaration "int *local_4c;" primitive_type (pointer_declarator "*local_4c" * identifier) ;) (declaration "undefined4 local_48;" type_identifier identifier ;) (declaration "int local_44;" primitive_type identifier ;) (declaration "int *local_40;" primitive_type (pointer_declarator "*local_40" * identifier) ;) (declaration "undefined1 local_2c [4];" type_identifier (array_declarator "local_2c [4]" identifier [ number_literal ]) ;) (declaration "char *local_28;" primitive_type (pointer_declarator "*local_28" * identifier) ;) (declaration "uint local_24;" type_identifier identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "piVar2 = (int *)*param_1;" (assignment_expression "piVar2 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" identifier = (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) ;) (expression_statement "iVar3 = *piVar2;" (assignment_expression "iVar3 = *piVar2" identifier = (pointer_expression "*piVar2" * identifier)) ;) (expression_statement "uVar4 = param_2[2];" (assignment_expression "uVar4 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) (expression_statement "param_2[2] = uVar4 | 0x40;" (assignment_expression "param_2[2] = uVar4 | 0x40" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "uVar4 | 0x40" identifier | number_literal)) ;) (if_statement "if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }" if (parenthesized_expression "(*(char *)(iVar3 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x4d)" * (cast_expression "(char *)(iVar3 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4d)" ( (binary_expression "iVar3 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }" { (if_statement "if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }" if (parenthesized_expression "((uVar4 & 0x40) != 0)" ( (binary_expression "(uVar4 & 0x40) != 0" (parenthesized_expression "(uVar4 & 0x40)" ( (binary_expression "uVar4 & 0x40" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }" { (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) (expression_statement "piVar5 = (int *)param_2[8];" (assignment_expression "piVar5 = (int *)param_2[8]" identifier = (cast_expression "(int *)param_2[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[8]" identifier [ number_literal ]))) ;) (expression_statement "piVar6 = (int *)*param_2;" (assignment_expression "piVar6 = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "iVar28 = param_2[0x10];" (assignment_expression "iVar28 = param_2[0x10]" identifier = (subscript_expression "param_2[0x10]" identifier [ number_literal ])) ;) (if_statement "if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (compound_statement "{\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }" { (expression_statement "*(int *)(iVar28 + 4) = piVar2[0x41];" (assignment_expression "*(int *)(iVar28 + 4) = piVar2[0x41]" (pointer_expression "*(int *)(iVar28 + 4)" * (cast_expression "(int *)(iVar28 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 4)" ( (binary_expression "iVar28 + 4" identifier + number_literal) )))) = (subscript_expression "piVar2[0x41]" identifier [ number_literal ])) ;) (expression_statement "piVar2[0x41] = iVar28;" (assignment_expression "piVar2[0x41] = iVar28" (subscript_expression "piVar2[0x41]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "FUN_00039910();" (call_expression "FUN_00039910()" identifier (argument_list "()" ( ))) ;) (if_statement "if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }" if (parenthesized_expression "(0 < *piVar5)" ( (binary_expression "0 < *piVar5" number_literal < (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }" { (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar27 = piVar5 + 2;" (assignment_expression "piVar27 = piVar5 + 2" identifier = (binary_expression "piVar5 + 2" identifier + number_literal)) ;) (labeled_statement "LAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;" statement_identifier : (if_statement "if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;" if (parenthesized_expression "((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0)" ( (binary_expression "(*(byte *)((int)piVar27 + 0x25) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)piVar27 + 0x25) & 0x20)" ( (binary_expression "*(byte *)((int)piVar27 + 0x25) & 0x20" (pointer_expression "*(byte *)((int)piVar27 + 0x25)" * (cast_expression "(byte *)((int)piVar27 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 + 0x25)" ( (binary_expression "(int)piVar27 + 0x25" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_000cf910;" goto statement_identifier ;))) (if_statement "if (piVar27[1] != 0) goto LAB_000cfc82;" if (parenthesized_expression "(piVar27[1] != 0)" ( (binary_expression "piVar27[1] != 0" (subscript_expression "piVar27[1]" identifier [ number_literal ]) != number_literal) )) (goto_statement "goto LAB_000cfc82;" goto statement_identifier ;)) (expression_statement "pbVar25 = (byte *)piVar27[2];" (assignment_expression "pbVar25 = (byte *)piVar27[2]" identifier = (cast_expression "(byte *)piVar27[2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar27[2]" identifier [ number_literal ]))) ;) (if_statement "if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }" if (parenthesized_expression "(pbVar25 == (byte *)0x0)" ( (binary_expression "pbVar25 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }" { (if_statement "if (piVar27[4] == 0) goto LAB_000cfd90;" if (parenthesized_expression "(piVar27[4] == 0)" ( (binary_expression "piVar27[4] == 0" (subscript_expression "piVar27[4]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000cfd90;" goto statement_identifier ;)) (goto_statement "goto LAB_000cfc89;" goto statement_identifier ;) })) (expression_statement "piVar7 = (int *)*param_1;" (assignment_expression "piVar7 = (int *)*param_1" identifier = (cast_expression "(int *)*param_1" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (for_statement "for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }" for ( (assignment_expression "piVar8 = (int *)piVar7[0x41]" identifier = (cast_expression "(int *)piVar7[0x41]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar7[0x41]" identifier [ number_literal ]))) ; (binary_expression "piVar8 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "piVar8 = (int *)piVar8[1]" identifier = (cast_expression "(int *)piVar8[1]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[1]" identifier [ number_literal ]))) ) (compound_statement "{\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }" { (if_statement "if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }" if (parenthesized_expression "(0 < *piVar8)" ( (binary_expression "0 < *piVar8" number_literal < (pointer_expression "*piVar8" * identifier)) )) (compound_statement "{\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (do_statement "do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);" do (compound_statement "{\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          }" { (expression_statement "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];" (assignment_expression "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2]" identifier = (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ;) (if_statement "if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }" if (parenthesized_expression "((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14])" ( (binary_expression "(&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]" (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar25" * identifier) ]) == (subscript_expression "(&DAT_0012c6e0)[*pbVar14]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar14" * identifier) ])) )) (compound_statement "{\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }" { (if_statement "if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }" if (parenthesized_expression "(*pbVar25 == 0)" ( (binary_expression "*pbVar25 == 0" (pointer_expression "*pbVar25" * identifier) == number_literal) )) (compound_statement "{\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }" { (expression_statement "pcVar21 = (char *)piVar8[iVar28 * 4 + 5];" (assignment_expression "pcVar21 = (char *)piVar8[iVar28 * 4 + 5]" identifier = (cast_expression "(char *)piVar8[iVar28 * 4 + 5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ;) (labeled_statement "joined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;" statement_identifier : (if_statement "if (pcVar21 != (char *)0x0) goto LAB_000cfd64;" if (parenthesized_expression "(pcVar21 != (char *)0x0)" ( (binary_expression "pcVar21 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfd64;" goto statement_identifier ;))) (if_statement "if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }" if (parenthesized_expression "((*(byte *)((int)piVar27 + 0x25) & 4) != 0)" ( (binary_expression "(*(byte *)((int)piVar27 + 0x25) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar27 + 0x25) & 4)" ( (binary_expression "*(byte *)((int)piVar27 + 0x25) & 4" (pointer_expression "*(byte *)((int)piVar27 + 0x25)" * (cast_expression "(byte *)((int)piVar27 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 + 0x25)" ( (binary_expression "(int)piVar27 + 0x25" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }" { (expression_statement "pcVar21 = "\'%s\' is not a function";" (assignment_expression "pcVar21 = "\'%s\' is not a function"" identifier = (string_literal ""\'%s\' is not a function"" " escape_sequence string_content escape_sequence string_content ")) ;) (expression_statement "pbVar14 = pbVar25;" (assignment_expression "pbVar14 = pbVar25" identifier = identifier) ;) (goto_statement "goto LAB_000cfd64;" goto statement_identifier ;) })) (expression_statement "iVar13 = *piVar7;" (assignment_expression "iVar13 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "puVar16 = (undefined4 *)FUN_00044520();" (assignment_expression "puVar16 = (undefined4 *)FUN_00044520()" identifier = (cast_expression "(undefined4 *)FUN_00044520()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00044520()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar27[4] = (int)puVar16;" (assignment_expression "piVar27[4] = (int)puVar16" (subscript_expression "piVar27[4]" identifier [ number_literal ]) = (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (expression_statement "puVar16[8] = 1;" (assignment_expression "puVar16[8] = 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar19 = FUN_00044980();" (assignment_expression "uVar19 = FUN_00044980()" identifier = (call_expression "FUN_00044980()" identifier (argument_list "()" ( )))) ;) (expression_statement "puVar16[9] = puVar16[9] | 0x42;" (assignment_expression "puVar16[9] = puVar16[9] | 0x42" (subscript_expression "puVar16[9]" identifier [ number_literal ]) = (binary_expression "puVar16[9] | 0x42" (subscript_expression "puVar16[9]" identifier [ number_literal ]) | number_literal)) ;) (expression_statement "*puVar16 = uVar19;" (assignment_expression "*puVar16 = uVar19" (pointer_expression "*puVar16" * identifier) = identifier) ;) (expression_statement "*(undefined2 *)(puVar16 + 0xb) = 200;" (assignment_expression "*(undefined2 *)(puVar16 + 0xb) = 200" (pointer_expression "*(undefined2 *)(puVar16 + 0xb)" * (cast_expression "(undefined2 *)(puVar16 + 0xb)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 0xb)" ( (binary_expression "puVar16 + 0xb" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*(undefined2 *)(puVar16 + 10) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar16 + 10) = 0xffff" (pointer_expression "*(undefined2 *)(puVar16 + 10)" * (cast_expression "(undefined2 *)(puVar16 + 10)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 10)" ( (binary_expression "puVar16 + 10" identifier + number_literal) )))) = number_literal) ;) (expression_statement "piVar15 = (int *)FUN_0005a810();" (assignment_expression "piVar15 = (int *)FUN_0005a810()" identifier = (cast_expression "(int *)FUN_0005a810()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0005a810()" identifier (argument_list "()" ( ))))) ;) (expression_statement "piVar27[5] = (int)piVar15;" (assignment_expression "piVar27[5] = (int)piVar15" (subscript_expression "piVar27[5]" identifier [ number_literal ]) = (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;" if (parenthesized_expression "(*(char *)(iVar13 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar13 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar13 + 0x4d)" * (cast_expression "(char *)(iVar13 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + 0x4d)" ( (binary_expression "iVar13 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (expression_statement "bVar11 = (char)piVar15[1] + 0x85;" (assignment_expression "bVar11 = (char)piVar15[1] + 0x85" identifier = (binary_expression "(char)piVar15[1] + 0x85" (cast_expression "(char)piVar15[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "piVar15[1]" identifier [ number_literal ])) + number_literal)) ;) (if_statement "if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }" if (parenthesized_expression "(1 < bVar11)" ( (binary_expression "1 < bVar11" number_literal < identifier) )) (compound_statement "{\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }" { (if_statement "if (2 < (uint)puVar16[8]) goto LAB_000cffd0;" if (parenthesized_expression "(2 < (uint)puVar16[8])" ( (binary_expression "2 < (uint)puVar16[8]" number_literal < (cast_expression "(uint)puVar16[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar16[8]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_000cffd0;" goto statement_identifier ;)) (expression_statement "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";" (assignment_expression "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s"" (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) = (cast_expression "(int)"circular reference: %s"" ( (type_descriptor "int" primitive_type) ) (string_literal ""circular reference: %s"" " string_content "))) ;) (expression_statement "iVar13 = piVar7[0x41];" (assignment_expression "iVar13 = piVar7[0x41]" identifier = (subscript_expression "piVar7[0x41]" identifier [ number_literal ])) ;) (expression_statement "piVar7[0x41] = (int)piVar8;" (assignment_expression "piVar7[0x41] = (int)piVar8" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n                    FUN_0004a550();\n                  }" { (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" identifier (argument_list "()" ( ))) ;) })) (goto_statement "goto LAB_000cfc05;" goto statement_identifier ;) })) (expression_statement "piVar9 = (int *)piVar15[8];" (assignment_expression "piVar9 = (int *)piVar15[8]" identifier = (cast_expression "(int *)piVar15[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar15[8]" identifier [ number_literal ]))) ;) (if_statement "if (*piVar9 < 1) goto LAB_000cfecc;" if (parenthesized_expression "(*piVar9 < 1)" ( (binary_expression "*piVar9 < 1" (pointer_expression "*piVar9" * identifier) < number_literal) )) (goto_statement "goto LAB_000cfecc;" goto statement_identifier ;)) (expression_statement "piVar23 = piVar9 + 3;" (assignment_expression "piVar23 = piVar9 + 3" identifier = (binary_expression "piVar9 + 3" identifier + number_literal)) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (goto_statement "goto LAB_000cfe32;" goto statement_identifier ;) })) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) (while_statement "while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }" while (parenthesized_expression "(pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]])" ( (comma_expression "pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]" (assignment_expression "pbVar24 = pbVar25 + iVar13" identifier = (binary_expression "pbVar25 + iVar13" identifier + identifier)) , (binary_expression "(&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]" (subscript_expression "(&DAT_0012c6e0)[*pbVar24]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar24" * identifier) ]) == (subscript_expression "(&DAT_0012c6e0)[pbVar14[iVar13]]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (subscript_expression "pbVar14[iVar13]" identifier [ identifier ]) ]))) )) (compound_statement "{\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (if_statement "if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }" if (parenthesized_expression "(*pbVar24 == 0)" ( (binary_expression "*pbVar24 == 0" (pointer_expression "*pbVar24" * identifier) == number_literal) )) (compound_statement "{\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }" { (expression_statement "pcVar21 = (char *)piVar8[iVar28 * 4 + 5];" (assignment_expression "pcVar21 = (char *)piVar8[iVar28 * 4 + 5]" identifier = (cast_expression "(char *)piVar8[iVar28 * 4 + 5]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ;) (goto_statement "goto joined_r0x000cfd51;" goto statement_identifier ;) })) })) })) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar8 != iVar28)" ( (binary_expression "*piVar8 != iVar28" (pointer_expression "*piVar8" * identifier) != identifier) )) ;) })) })) (if_statement "if (piVar27[4] == 0) goto LAB_000cfcb3;" if (parenthesized_expression "(piVar27[4] == 0)" ( (binary_expression "piVar27[4] == 0" (subscript_expression "piVar27[4]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000cfcb3;" goto statement_identifier ;)) (expression_statement "iVar28 = FUN_000757e0();" (assignment_expression "iVar28 = FUN_000757e0()" identifier = (call_expression "FUN_000757e0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar28 == 0) goto LAB_000cf910;" if (parenthesized_expression "(iVar28 == 0)" ( (binary_expression "iVar28 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000cf910;" goto statement_identifier ;)) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;) })) (labeled_statement "LAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }" statement_identifier : (if_statement "if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }" if (parenthesized_expression "(*(char *)(iVar3 + 0x4d) == '\0')" ( (binary_expression "*(char *)(iVar3 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x4d)" * (cast_expression "(char *)(iVar3 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4d)" ( (binary_expression "iVar3 + 0x4d" identifier + number_literal) )))) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }" { (expression_statement "piVar27 = (int *)param_2[8];" (assignment_expression "piVar27 = (int *)param_2[8]" identifier = (cast_expression "(int *)param_2[8]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_2[8]" identifier [ number_literal ]))) ;) (expression_statement "local_40 = piVar27 + 0x13;" (assignment_expression "local_40 = piVar27 + 0x13" identifier = (binary_expression "piVar27 + 0x13" identifier + number_literal)) ;) (if_statement "if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }" if (parenthesized_expression "(1 < *piVar27)" ( (binary_expression "1 < *piVar27" number_literal < (pointer_expression "*piVar27" * identifier)) )) (compound_statement "{\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }" { (expression_statement "local_60 = (char *)0x1;" (assignment_expression "local_60 = (char *)0x1" identifier = (cast_expression "(char *)0x1" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (do_statement "do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);" do (compound_statement "{\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        }" { (expression_statement "iVar28 = local_40[4];" (assignment_expression "iVar28 = local_40[4]" identifier = (subscript_expression "local_40[4]" identifier [ number_literal ])) ;) (if_statement "if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }" if (parenthesized_expression "((local_40[-0xd] != 0) && (iVar28 != 0))" ( (binary_expression "(local_40[-0xd] != 0) && (iVar28 != 0)" (parenthesized_expression "(local_40[-0xd] != 0)" ( (binary_expression "local_40[-0xd] != 0" (subscript_expression "local_40[-0xd]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) ))) )) (compound_statement "{\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }" { (expression_statement "bVar11 = *(byte *)(local_40 + 9);" (assignment_expression "bVar11 = *(byte *)(local_40 + 9)" identifier = (pointer_expression "*(byte *)(local_40 + 9)" * (cast_expression "(byte *)(local_40 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_40 + 9)" ( (binary_expression "local_40 + 9" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = local_40[0xb];" (assignment_expression "iVar13 = local_40[0xb]" identifier = (subscript_expression "local_40[0xb]" identifier [ number_literal ])) ;) (expression_statement "bVar29 = (bVar11 & 0x20) != 0;" (assignment_expression "bVar29 = (bVar11 & 0x20) != 0" identifier = (binary_expression "(bVar11 & 0x20) != 0" (parenthesized_expression "(bVar11 & 0x20)" ( (binary_expression "bVar11 & 0x20" identifier & number_literal) )) != number_literal)) ;) (if_statement "if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }" if (parenthesized_expression "((bVar11 & 4) != 0)" ( (binary_expression "(bVar11 & 4) != 0" (parenthesized_expression "(bVar11 & 4)" ( (binary_expression "bVar11 & 4" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }" { (if_statement "if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }" if (parenthesized_expression "((iVar13 != 0) || (local_40[0xc] != 0))" ( (binary_expression "(iVar13 != 0) || (local_40[0xc] != 0)" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) || (parenthesized_expression "(local_40[0xc] != 0)" ( (binary_expression "local_40[0xc] != 0" (subscript_expression "local_40[0xc]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }" { (expression_statement "pcVar21 = "a NATURAL join may not have an ON or USING clause";" (assignment_expression "pcVar21 = "a NATURAL join may not have an ON or USING clause"" identifier = (string_literal ""a NATURAL join may not have an ON or USING clause"" " string_content ")) ;) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (if_statement "if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;" if (parenthesized_expression "(*(short *)(iVar28 + 0x2a) < 1)" ( (binary_expression "*(short *)(iVar28 + 0x2a) < 1" (pointer_expression "*(short *)(iVar28 + 0x2a)" * (cast_expression "(short *)(iVar28 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x2a)" ( (binary_expression "iVar28 + 0x2a" identifier + number_literal) )))) < number_literal) )) (goto_statement "goto LAB_000d0070;" goto statement_identifier ;)) (do_statement "do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));" do (compound_statement "{\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              }" { (expression_statement "iVar17 = FUN_00039c70(local_2c,&local_28);" (assignment_expression "iVar17 = FUN_00039c70(local_2c,&local_28)" identifier = (call_expression "FUN_00039c70(local_2c,&local_28)" identifier (argument_list "(local_2c,&local_28)" ( identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }" if (parenthesized_expression "(iVar17 != 0)" ( (binary_expression "iVar17 != 0" identifier != number_literal) )) (compound_statement "{\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }" { (expression_statement "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);" (call_expression "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9)" identifier (argument_list "(local_28,local_60,iVar13,bVar29,param_2 + 9)" ( identifier , identifier , identifier , identifier , (binary_expression "param_2 + 9" identifier + number_literal) ))) ;) })) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < *(short *)(iVar28 + 0x2a))" ( (binary_expression "iVar13 < *(short *)(iVar28 + 0x2a)" identifier < (pointer_expression "*(short *)(iVar28 + 0x2a)" * (cast_expression "(short *)(iVar28 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x2a)" ( (binary_expression "iVar28 + 0x2a" identifier + number_literal) ))))) )) ;) (expression_statement "iVar13 = local_40[0xb];" (assignment_expression "iVar13 = local_40[0xb]" identifier = (subscript_expression "local_40[0xb]" identifier [ number_literal ])) ;) })) (expression_statement "local_64 = (byte *)local_40[0xc];" (assignment_expression "local_64 = (byte *)local_40[0xc]" identifier = (cast_expression "(byte *)local_40[0xc]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_40[0xc]" identifier [ number_literal ]))) ;) (if_statement "if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }" { (if_statement "if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }" if (parenthesized_expression "(local_64 != (byte *)0x0)" ( (binary_expression "local_64 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }" { (expression_statement "pcVar21 = "cannot have both ON and USING clauses in the same join";" (assignment_expression "pcVar21 = "cannot have both ON and USING clauses in the same join"" identifier = (string_literal ""cannot have both ON and USING clauses in the same join"" " string_content ")) ;) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) (if_statement "if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }" if (parenthesized_expression "((bVar11 & 0x20) != 0)" ( (binary_expression "(bVar11 & 0x20) != 0" (parenthesized_expression "(bVar11 & 0x20)" ( (binary_expression "bVar11 & 0x20" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n                FUN_00039da0();\n              }" { (expression_statement "FUN_00039da0();" (call_expression "FUN_00039da0()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "iVar13 = FUN_000569c0();" (assignment_expression "iVar13 = FUN_000569c0()" identifier = (call_expression "FUN_000569c0()" identifier (argument_list "()" ( )))) ;) (expression_statement "param_2[9] = iVar13;" (assignment_expression "param_2[9] = iVar13" (subscript_expression "param_2[9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_40[0xb] = 0;" (assignment_expression "local_40[0xb] = 0" (subscript_expression "local_40[0xb]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_64 = (byte *)local_40[0xc];" (assignment_expression "local_64 = (byte *)local_40[0xc]" identifier = (cast_expression "(byte *)local_40[0xc]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_40[0xc]" identifier [ number_literal ]))) ;) })) (if_statement "if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }" if (parenthesized_expression "((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4)))" ( (binary_expression "(local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))" (parenthesized_expression "(local_64 != (byte *)0x0)" ( (binary_expression "local_64 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(local_70 = 0, 0 < *(int *)((int)local_64 + 4))" ( (comma_expression "local_70 = 0, 0 < *(int *)((int)local_64 + 4)" (assignment_expression "local_70 = 0" identifier = number_literal) , (binary_expression "0 < *(int *)((int)local_64 + 4)" number_literal < (pointer_expression "*(int *)((int)local_64 + 4)" * (cast_expression "(int *)((int)local_64 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_64 + 4)" ( (binary_expression "(int)local_64 + 4" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))))) ))) )) (compound_statement "{\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }" { (labeled_statement "LAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);" statement_identifier : (expression_statement "pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);" (assignment_expression "pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8)" identifier = (pointer_expression "*(byte **)(*(int *)local_64 + local_70 * 8)" * (cast_expression "(byte **)(*(int *)local_64 + local_70 * 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)local_64 + local_70 * 8)" ( (binary_expression "*(int *)local_64 + local_70 * 8" (pointer_expression "*(int *)local_64" * (cast_expression "(int *)local_64" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) + (binary_expression "local_70 * 8" identifier * number_literal)) ))))) ;)) (if_statement "if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }" if (parenthesized_expression "(0 < *(short *)(iVar28 + 0x2a))" ( (binary_expression "0 < *(short *)(iVar28 + 0x2a)" number_literal < (pointer_expression "*(short *)(iVar28 + 0x2a)" * (cast_expression "(short *)(iVar28 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x2a)" ( (binary_expression "iVar28 + 0x2a" identifier + number_literal) ))))) )) (compound_statement "{\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }" { (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (do_statement "do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));" do (compound_statement "{\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                }" { (expression_statement "pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);" (assignment_expression "pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10)" identifier = (pointer_expression "*(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10)" * (cast_expression "(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(iVar28 + 4) + iVar13 * 0x10)" ( (binary_expression "*(int *)(iVar28 + 4) + iVar13 * 0x10" (pointer_expression "*(int *)(iVar28 + 4)" * (cast_expression "(int *)(iVar28 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 4)" ( (binary_expression "iVar28 + 4" identifier + number_literal) )))) + (binary_expression "iVar13 * 0x10" identifier * number_literal)) ))))) ;) (expression_statement "bVar11 = *pbVar14;" (assignment_expression "bVar11 = *pbVar14" identifier = (pointer_expression "*pbVar14" * identifier)) ;) (expression_statement "pbVar24 = pbVar25;" (assignment_expression "pbVar24 = pbVar25" identifier = identifier) ;) (if_statement "if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }" if (parenthesized_expression "((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11])" ( (binary_expression "(&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]" (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar25" * identifier) ]) == (subscript_expression "(&DAT_0012c6e0)[bVar11]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ identifier ])) )) (compound_statement "{\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }" { (do_statement "do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);" do (compound_statement "{\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    }" { (if_statement "if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }" if (parenthesized_expression "(bVar11 == 0)" ( (binary_expression "bVar11 == 0" identifier == number_literal) )) (compound_statement "{\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }" { (expression_statement "iVar17 = FUN_00039c70(local_2c,&local_28);" (assignment_expression "iVar17 = FUN_00039c70(local_2c,&local_28)" identifier = (call_expression "FUN_00039c70(local_2c,&local_28)" identifier (argument_list "(local_2c,&local_28)" ( identifier , (pointer_expression "&local_28" & identifier) )))) ;) (if_statement "if (iVar17 == 0) goto LAB_000cfac6;" if (parenthesized_expression "(iVar17 == 0)" ( (binary_expression "iVar17 == 0" identifier == number_literal) )) (goto_statement "goto LAB_000cfac6;" goto statement_identifier ;)) (expression_statement "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);" (call_expression "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9)" identifier (argument_list "(local_28,local_60,iVar13,bVar29,param_2 + 9)" ( identifier , identifier , identifier , identifier , (binary_expression "param_2 + 9" identifier + number_literal) ))) ;) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" identifier = (binary_expression "local_70 + 1" identifier + number_literal)) ;) (if_statement "if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;" if (parenthesized_expression "(local_70 < *(int *)((int)local_64 + 4))" ( (binary_expression "local_70 < *(int *)((int)local_64 + 4)" identifier < (pointer_expression "*(int *)((int)local_64 + 4)" * (cast_expression "(int *)((int)local_64 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_64 + 4)" ( (binary_expression "(int)local_64 + 4" (cast_expression "(int)local_64" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (goto_statement "goto LAB_000cfa10;" goto statement_identifier ;)) (goto_statement "goto LAB_000d0070;" goto statement_identifier ;) })) (expression_statement "pbVar14 = pbVar14 + 1;" (assignment_expression "pbVar14 = pbVar14 + 1" identifier = (binary_expression "pbVar14 + 1" identifier + number_literal)) ;) (expression_statement "pbVar24 = pbVar24 + 1;" (assignment_expression "pbVar24 = pbVar24 + 1" identifier = (binary_expression "pbVar24 + 1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar14;" (assignment_expression "bVar11 = *pbVar14" identifier = (pointer_expression "*pbVar14" * identifier)) ;) }) while (parenthesized_expression "((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24])" ( (binary_expression "(&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]" (subscript_expression "(&DAT_0012c6e0)[bVar11]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ identifier ]) == (subscript_expression "(&DAT_0012c6e0)[*pbVar24]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar24" * identifier) ])) )) ;) })) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 != *(short *)(iVar28 + 0x2a))" ( (binary_expression "iVar13 != *(short *)(iVar28 + 0x2a)" identifier != (pointer_expression "*(short *)(iVar28 + 0x2a)" * (cast_expression "(short *)(iVar28 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 + 0x2a)" ( (binary_expression "iVar28 + 0x2a" identifier + number_literal) ))))) )) ;) })) (labeled_statement "LAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";" statement_identifier : (expression_statement "pcVar21 = "cannot join using column %s - column not present in both tables";" (assignment_expression "pcVar21 = "cannot join using column %s - column not present in both tables"" identifier = (string_literal ""cannot join using column %s - column not present in both tables"" " string_content ")) ;)) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) })) (labeled_statement "LAB_000d0070:\n          local_40 = local_40 + 0x11;" statement_identifier : (expression_statement "local_40 = local_40 + 0x11;" (assignment_expression "local_40 = local_40 + 0x11" identifier = (binary_expression "local_40 + 0x11" identifier + number_literal)) ;)) (expression_statement "bVar29 = (int)local_60 < *piVar27 + -1;" (assignment_expression "bVar29 = (int)local_60 < *piVar27 + -1" identifier = (binary_expression "(int)local_60 < *piVar27 + -1" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) < (binary_expression "*piVar27 + -1" (pointer_expression "*piVar27" * identifier) + number_literal))) ;) (expression_statement "local_60 = (char *)((int)local_60 + 1);" (assignment_expression "local_60 = (char *)((int)local_60 + 1)" identifier = (cast_expression "(char *)((int)local_60 + 1)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_60 + 1)" ( (binary_expression "(int)local_60 + 1" (cast_expression "(int)local_60" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(bVar29)" ( identifier )) ;) })) (if_statement "if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }" if (parenthesized_expression "(0 < *piVar6)" ( (binary_expression "0 < *piVar6" number_literal < (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }" { (expression_statement "pcVar21 = (char *)piVar6[1];" (assignment_expression "pcVar21 = (char *)piVar6[1]" identifier = (cast_expression "(char *)piVar6[1]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar6[1]" identifier [ number_literal ]))) ;) (expression_statement "cVar12 = *pcVar21;" (assignment_expression "cVar12 = *pcVar21" identifier = (pointer_expression "*pcVar21" * identifier)) ;) (if_statement "if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }" if (parenthesized_expression "(cVar12 == -0x58)" ( (binary_expression "cVar12 == -0x58" identifier == number_literal) )) (compound_statement "{\n          local_40 = (int *)0x0;\n        }" { (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }" else (compound_statement "{\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }" { (expression_statement "piVar27 = piVar6 + 6;" (assignment_expression "piVar27 = piVar6 + 6" identifier = (binary_expression "piVar6 + 6" identifier + number_literal)) ;) (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pcVar18 = pcVar21;" (assignment_expression "pcVar18 = pcVar21" identifier = identifier) ;) (expression_statement "cVar22 = cVar12;" (assignment_expression "cVar22 = cVar12" identifier = identifier) ;) (do_statement "do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);" do (compound_statement "{\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          }" { (if_statement "if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;" if (parenthesized_expression "((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58))" ( (binary_expression "(cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)" (parenthesized_expression "(cVar22 == -0x7e)" ( (binary_expression "cVar22 == -0x7e" identifier == number_literal) )) && (parenthesized_expression "(**(char **)(pcVar18 + 0x10) == -0x58)" ( (binary_expression "**(char **)(pcVar18 + 0x10) == -0x58" (pointer_expression "**(char **)(pcVar18 + 0x10)" * (pointer_expression "*(char **)(pcVar18 + 0x10)" * (cast_expression "(char **)(pcVar18 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar18 + 0x10)" ( (binary_expression "pcVar18 + 0x10" identifier + number_literal) ))))) == number_literal) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) (expression_statement "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));" (assignment_expression "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4))" identifier = (cast_expression "(int *)((uint)local_40 | *(uint *)(pcVar18 + 4))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_40 | *(uint *)(pcVar18 + 4))" ( (binary_expression "(uint)local_40 | *(uint *)(pcVar18 + 4)" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) | (pointer_expression "*(uint *)(pcVar18 + 4)" * (cast_expression "(uint *)(pcVar18 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar18 + 4)" ( (binary_expression "pcVar18 + 4" identifier + number_literal) ))))) )))) ;) (if_statement "if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }" if (parenthesized_expression "(iVar28 == *piVar6)" ( (binary_expression "iVar28 == *piVar6" identifier == (pointer_expression "*piVar6" * identifier)) )) (compound_statement "{\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }" { (expression_statement "piVar27 = (int *)*param_2;" (assignment_expression "piVar27 = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_000d07de;" goto statement_identifier ;) })) (expression_statement "pcVar18 = (char *)*piVar27;" (assignment_expression "pcVar18 = (char *)*piVar27" identifier = (cast_expression "(char *)*piVar27" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar27" * identifier))) ;) (expression_statement "piVar27 = piVar27 + 5;" (assignment_expression "piVar27 = piVar27 + 5" identifier = (binary_expression "piVar27 + 5" identifier + number_literal)) ;) (expression_statement "cVar22 = *pcVar18;" (assignment_expression "cVar22 = *pcVar18" identifier = (pointer_expression "*pcVar18" * identifier)) ;) }) while (parenthesized_expression "(cVar22 != -0x58)" ( (binary_expression "cVar22 != -0x58" identifier != number_literal) )) ;) }))) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" identifier = number_literal) ;) (expression_statement "piVar27 = (int *)0x0;" (assignment_expression "piVar27 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar4 = *(uint *)(*piVar2 + 0x1c);" (assignment_expression "uVar4 = *(uint *)(*piVar2 + 0x1c)" identifier = (pointer_expression "*(uint *)(*piVar2 + 0x1c)" * (cast_expression "(uint *)(*piVar2 + 0x1c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar2 + 0x1c)" ( (binary_expression "*piVar2 + 0x1c" (pointer_expression "*piVar2" * identifier) + number_literal) ))))) ;) (expression_statement "local_4c = piVar6 + 1;" (assignment_expression "local_4c = piVar6 + 1" identifier = (binary_expression "piVar6 + 1" identifier + number_literal)) ;) (do_statement "do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );" do (compound_statement "{\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        }" { (expression_statement "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));" (assignment_expression "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4))" identifier = (cast_expression "(int *)((uint)local_40 | *(uint *)(pcVar21 + 4))" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)local_40 | *(uint *)(pcVar21 + 4))" ( (binary_expression "(uint)local_40 | *(uint *)(pcVar21 + 4)" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) | (pointer_expression "*(uint *)(pcVar21 + 4)" * (cast_expression "(uint *)(pcVar21 + 4)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 4)" ( (binary_expression "pcVar21 + 4" identifier + number_literal) ))))) )))) ;) (if_statement "if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" if (parenthesized_expression "(cVar12 == -0x58)" ( (binary_expression "cVar12 == -0x58" identifier == number_literal) )) (compound_statement "{\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }" { (expression_statement "local_74 = (byte *)0x0;" (assignment_expression "local_74 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }" if (parenthesized_expression "(*piVar5 < 1)" ( (binary_expression "*piVar5 < 1" (pointer_expression "*piVar5" * identifier) < number_literal) )) (compound_statement "{\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }" { (labeled_statement "LAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");" statement_identifier : (expression_statement "FUN_00074ee0(piVar2,"no tables specified");" (call_expression "FUN_00074ee0(piVar2,"no tables specified")" identifier (argument_list "(piVar2,"no tables specified")" ( identifier , (string_literal ""no tables specified"" " string_content ") ))) ;)) }) (else_clause "else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }" else (compound_statement "{\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }" { (labeled_statement "LAB_000d01d4:\n              bVar29 = false;" statement_identifier : (expression_statement "bVar29 = false;" (assignment_expression "bVar29 = false" identifier = false) ;)) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" identifier = number_literal) ;) (expression_statement "local_80 = piVar5 + 2;" (assignment_expression "local_80 = piVar5 + 2" identifier = (binary_expression "piVar5 + 2" identifier + number_literal)) ;) (do_statement "do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);" do (compound_statement "{\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              }" { (expression_statement "puVar16 = (undefined4 *)local_80[4];" (assignment_expression "puVar16 = (undefined4 *)local_80[4]" identifier = (cast_expression "(undefined4 *)local_80[4]" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[4]" identifier [ number_literal ]))) ;) (expression_statement "local_88 = (byte *)local_80[5];" (assignment_expression "local_88 = (byte *)local_80[5]" identifier = (cast_expression "(byte *)local_80[5]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[5]" identifier [ number_literal ]))) ;) (expression_statement "local_64 = (byte *)local_80[3];" (assignment_expression "local_64 = (byte *)local_80[3]" identifier = (cast_expression "(byte *)local_80[3]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "local_80[3]" identifier [ number_literal ]))) ;) (if_statement "if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }" if (parenthesized_expression "(local_64 == (byte *)0x0)" ( (binary_expression "local_64 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                  local_64 = (byte *)*puVar16;\n                }" { (expression_statement "local_64 = (byte *)*puVar16;" (assignment_expression "local_64 = (byte *)*puVar16" identifier = (cast_expression "(byte *)*puVar16" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) })) (if_statement "if (*(char *)(iVar3 + 0x4d) != '\0') break;" if (parenthesized_expression "(*(char *)(iVar3 + 0x4d) != '\0')" ( (binary_expression "*(char *)(iVar3 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar3 + 0x4d)" * (cast_expression "(char *)(iVar3 + 0x4d)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x4d)" ( (binary_expression "iVar3 + 0x4d" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (break_statement "break;" break ;)) (if_statement "if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }" if (parenthesized_expression "((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0))" ( (binary_expression "(local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)" (parenthesized_expression "(local_88 == (byte *)0x0)" ( (binary_expression "local_88 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((*(byte *)((int)local_88 + 9) & 8) == 0)" ( (binary_expression "(*(byte *)((int)local_88 + 9) & 8) == 0" (parenthesized_expression "(*(byte *)((int)local_88 + 9) & 8)" ( (binary_expression "*(byte *)((int)local_88 + 9) & 8" (pointer_expression "*(byte *)((int)local_88 + 9)" * (cast_expression "(byte *)((int)local_88 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_88 + 9)" ( (binary_expression "(int)local_88 + 9" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }" { (if_statement "if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }" if (parenthesized_expression "(local_74 == (byte *)0x0)" ( (binary_expression "local_74 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }" { (labeled_statement "LAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" statement_identifier : (if_statement "if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" if (parenthesized_expression "(puVar16[0x12] == 0)" ( (binary_expression "puVar16[0x12] == 0" (subscript_expression "puVar16[0x12]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }" { (expression_statement "local_60 = "*";" (assignment_expression "local_60 = "*"" identifier = (string_literal ""*"" " string_content ")) ;) (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" else (compound_statement "{\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" { (expression_statement "iVar28 = FUN_0004c580();" (assignment_expression "iVar28 = FUN_0004c580()" identifier = (call_expression "FUN_0004c580()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }" if (parenthesized_expression "(iVar28 < 0)" ( (binary_expression "iVar28 < 0" identifier < number_literal) )) (compound_statement "{\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }" { (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = "*";" (assignment_expression "local_60 = "*"" identifier = (string_literal ""*"" " string_content ")) ;) }) (else_clause "else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }" else (compound_statement "{\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }" { (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" identifier = (pointer_expression "*(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" * (cast_expression "(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" ( (binary_expression "iVar28 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar28 * 0x10" identifier * number_literal) + (pointer_expression "*(int *)(iVar3 + 0x10)" * (cast_expression "(int *)(iVar3 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x10)" ( (binary_expression "iVar3 + 0x10" identifier + number_literal) ))))) ))))) ;) }))) })))) (goto_statement "goto LAB_000d0474;" goto statement_identifier ;) })) (if_statement "if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }" if (parenthesized_expression "((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64])" ( (binary_expression "(&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]" (subscript_expression "(&DAT_0012c6e0)[*local_74]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*local_74" * identifier) ]) == (subscript_expression "(&DAT_0012c6e0)[*local_64]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*local_64" * identifier) ])) )) (compound_statement "{\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }" { (if_statement "if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }" if (parenthesized_expression "(*local_74 != 0)" ( (binary_expression "*local_74 != 0" (pointer_expression "*local_74" * identifier) != number_literal) )) (compound_statement "{\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }" { (expression_statement "local_88 = local_74;" (assignment_expression "local_88 = local_74" identifier = identifier) ;) (expression_statement "pbVar25 = local_64;" (assignment_expression "pbVar25 = local_64" identifier = identifier) ;) (do_statement "do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);" do (compound_statement "{\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      }" { (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" identifier = (binary_expression "local_88 + 1" identifier + number_literal)) ;) (expression_statement "pbVar25 = pbVar25 + 1;" (assignment_expression "pbVar25 = pbVar25 + 1" identifier = (binary_expression "pbVar25 + 1" identifier + number_literal)) ;) (if_statement "if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;" if (parenthesized_expression "((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])" ( (binary_expression "(&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25]" (subscript_expression "(&DAT_0012c6e0)[*local_88]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*local_88" * identifier) ]) != (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar25" * identifier) ])) )) (goto_statement "goto LAB_000d029d;" goto statement_identifier ;)) }) while (parenthesized_expression "(*local_88 != 0)" ( (binary_expression "*local_88 != 0" (pointer_expression "*local_88" * identifier) != number_literal) )) ;) })) (goto_statement "goto LAB_000d0438;" goto statement_identifier ;) })) }) (else_clause "else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }" else (compound_statement "{\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }" { (expression_statement "local_60 = (char *)0x0;" (assignment_expression "local_60 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (labeled_statement "LAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }" statement_identifier : (if_statement "if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }" if (parenthesized_expression "(0 < *(short *)((int)puVar16 + 0x2a))" ( (binary_expression "0 < *(short *)((int)puVar16 + 0x2a)" number_literal < (pointer_expression "*(short *)((int)puVar16 + 0x2a)" * (cast_expression "(short *)((int)puVar16 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) (compound_statement "{\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }" { (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" identifier = number_literal) ;) (do_statement "do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));" do (compound_statement "{\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    }" { (expression_statement "puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);" (assignment_expression "puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1])" identifier = (cast_expression "(undefined4 *)(iVar28 * 0x10 + puVar16[1])" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar28 * 0x10 + puVar16[1])" ( (binary_expression "iVar28 * 0x10 + puVar16[1]" (binary_expression "iVar28 * 0x10" identifier * number_literal) + (subscript_expression "puVar16[1]" identifier [ number_literal ])) )))) ;) (expression_statement "pcVar21 = (char *)*puVar26;" (assignment_expression "pcVar21 = (char *)*puVar26" identifier = (cast_expression "(char *)*puVar26" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar26" * identifier))) ;) (if_statement "if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }" if (parenthesized_expression "(local_74 == (byte *)0x0 || local_88 == (byte *)0x0)" ( (binary_expression "local_74 == (byte *)0x0 || local_88 == (byte *)0x0" (binary_expression "local_74 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) || (binary_expression "local_88 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) )) (compound_statement "{\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }" { (if_statement "if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }" if (parenthesized_expression "(((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0))" ( (binary_expression "((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" (parenthesized_expression "((*(byte *)((int)param_2 + 10) & 2) != 0)" ( (binary_expression "(*(byte *)((int)param_2 + 10) & 2) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 10) & 2)" ( (binary_expression "*(byte *)((int)param_2 + 10) & 2" (pointer_expression "*(byte *)((int)param_2 + 10)" * (cast_expression "(byte *)((int)param_2 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 10)" ( (binary_expression "(int)param_2 + 10" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) || (parenthesized_expression "((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" ( (binary_expression "(*(byte *)((int)puVar26 + 0xf) & 2) == 0" (parenthesized_expression "(*(byte *)((int)puVar26 + 0xf) & 2)" ( (binary_expression "*(byte *)((int)puVar26 + 0xf) & 2" (pointer_expression "*(byte *)((int)puVar26 + 0xf)" * (cast_expression "(byte *)((int)puVar26 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar26 + 0xf)" ( (binary_expression "(int)puVar26 + 0xf" (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) (compound_statement "{\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }" { (if_statement "if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;" if (parenthesized_expression "(((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))" ( (binary_expression "((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))))" (parenthesized_expression "((local_78 < 1) || (local_74 != (byte *)0x0))" ( (binary_expression "(local_78 < 1) || (local_74 != (byte *)0x0)" (parenthesized_expression "(local_78 < 1)" ( (binary_expression "local_78 < 1" identifier < number_literal) )) || (parenthesized_expression "(local_74 != (byte *)0x0)" ( (binary_expression "local_74 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))))" ( (parenthesized_expression "(((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))" ( (binary_expression "((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))" (parenthesized_expression "((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0))" ( (binary_expression "(*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)" (binary_expression "(*(byte *)(local_80 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)(local_80 + 9) & 4)" ( (binary_expression "*(byte *)(local_80 + 9) & 4" (pointer_expression "*(byte *)(local_80 + 9)" * (cast_expression "(byte *)(local_80 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(local_80 + 9)" ( (binary_expression "local_80 + 9" identifier + number_literal) )))) & number_literal) )) == number_literal) || (parenthesized_expression "(iVar13 = FUN_00039c70(0,0), iVar13 == 0)" ( (comma_expression "iVar13 = FUN_00039c70(0,0), iVar13 == 0" (assignment_expression "iVar13 = FUN_00039c70(0,0)" identifier = (call_expression "FUN_00039c70(0,0)" identifier (argument_list "(0,0)" ( number_literal , number_literal )))) , (binary_expression "iVar13 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))" ( (parenthesized_expression "(local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))" ( (binary_expression "local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)" (binary_expression "local_80[0xc] == 0" (subscript_expression "local_80[0xc]" identifier [ number_literal ]) == number_literal) || (parenthesized_expression "(iVar13 = FUN_0004bf80(), iVar13 < 0)" ( (comma_expression "iVar13 = FUN_0004bf80(), iVar13 < 0" (assignment_expression "iVar13 = FUN_0004bf80()" identifier = (call_expression "FUN_0004bf80()" identifier (argument_list "()" ( )))) , (binary_expression "iVar13 < 0" identifier < number_literal)) ))) )) ))) )) ))) )) (goto_statement "goto LAB_000d04f4;" goto statement_identifier ;)) (goto_statement "goto LAB_000d0623;" goto statement_identifier ;) })) }) (else_clause "else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }" else (compound_statement "{\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }" { (expression_statement "iVar13 = FUN_00045a10(0);" (assignment_expression "iVar13 = FUN_00045a10(0)" identifier = (call_expression "FUN_00045a10(0)" identifier (argument_list "(0)" ( number_literal )))) ;) (if_statement "if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }" if (parenthesized_expression "((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0))))" ( (binary_expression "(iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))" (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) && (parenthesized_expression "(((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))" ( (parenthesized_expression "((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0))" ( (binary_expression "(*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" (binary_expression "(*(byte *)((int)param_2 + 10) & 2) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 10) & 2)" ( (binary_expression "*(byte *)((int)param_2 + 10) & 2" (pointer_expression "*(byte *)((int)param_2 + 10)" * (cast_expression "(byte *)((int)param_2 + 10)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 10)" ( (binary_expression "(int)param_2 + 10" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) || (parenthesized_expression "((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" ( (binary_expression "(*(byte *)((int)puVar26 + 0xf) & 2) == 0" (parenthesized_expression "(*(byte *)((int)puVar26 + 0xf) & 2)" ( (binary_expression "*(byte *)((int)puVar26 + 0xf) & 2" (pointer_expression "*(byte *)((int)puVar26 + 0xf)" * (cast_expression "(byte *)((int)puVar26 + 0xf)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar26 + 0xf)" ( (binary_expression "(int)puVar26 + 0xf" (cast_expression "(int)puVar26" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) ))) )) ))) )) (compound_statement "{\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }" { (labeled_statement "LAB_000d04f4:\n                          uVar19 = FUN_00045020();" statement_identifier : (expression_statement "uVar19 = FUN_00045020();" (assignment_expression "uVar19 = FUN_00045020()" identifier = (call_expression "FUN_00045020()" identifier (argument_list "()" ( )))) ;)) (if_statement "if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" if (parenthesized_expression "((uVar4 & 0x44) == 4)" ( (binary_expression "(uVar4 & 0x44) == 4" (parenthesized_expression "(uVar4 & 0x44)" ( (binary_expression "uVar4 & 0x44" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }" { (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar19 = FUN_00075cf0(uVar19);" (assignment_expression "uVar19 = FUN_00075cf0(uVar19)" identifier = (call_expression "FUN_00075cf0(uVar19)" identifier (argument_list "(uVar19)" ( identifier )))) ;) (if_statement "if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }" if (parenthesized_expression "(local_60 != (char *)0x0)" ( (binary_expression "local_60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }" { (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00075cf0(uVar19);" (call_expression "FUN_00075cf0(uVar19)" identifier (argument_list "(uVar19)" ( identifier ))) ;) })) (expression_statement "pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);" (assignment_expression "pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21)" identifier = (cast_expression "(char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21)" identifier (argument_list "(iVar3,"%s.%s",local_64,pcVar21)" ( identifier , (string_literal ""%s.%s"" " string_content ") , identifier , identifier ))))) ;) (expression_statement "local_68 = pcVar21;" (assignment_expression "local_68 = pcVar21" identifier = identifier) ;) }) (else_clause "else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" else (compound_statement "{\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" { (if_statement "if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }" if (parenthesized_expression "(1 < *piVar5)" ( (binary_expression "1 < *piVar5" number_literal < (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }" { (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" identifier (argument_list "()" ( ))) ;) (expression_statement "uVar19 = FUN_00075cf0(uVar19);" (assignment_expression "uVar19 = FUN_00075cf0(uVar19)" identifier = (call_expression "FUN_00075cf0(uVar19)" identifier (argument_list "(uVar19)" ( identifier )))) ;) (if_statement "if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }" if (parenthesized_expression "(local_60 != (char *)0x0)" ( (binary_expression "local_60 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }" { (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" identifier (argument_list "()" ( ))) ;) (expression_statement "FUN_00075cf0(uVar19);" (call_expression "FUN_00075cf0(uVar19)" identifier (argument_list "(uVar19)" ( identifier ))) ;) })) })) (expression_statement "local_68 = (char *)0x0;" (assignment_expression "local_68 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }))) (expression_statement "piVar27 = (int *)FUN_000675b0();" (assignment_expression "piVar27 = (int *)FUN_000675b0()" identifier = (cast_expression "(int *)FUN_000675b0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000675b0()" identifier (argument_list "()" ( ))))) ;) (expression_statement "local_28 = pcVar21;" (assignment_expression "local_28 = pcVar21" identifier = identifier) ;) (if_statement "if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }" if (parenthesized_expression "(pcVar21 == (char *)0x0)" ( (binary_expression "pcVar21 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            local_24 = 0;\n                          }" { (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" identifier = number_literal) ;) }) (else_clause "else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }" else (compound_statement "{\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }" { (expression_statement "sVar20 = strlen(pcVar21);" (assignment_expression "sVar20 = strlen(pcVar21)" identifier = (call_expression "strlen(pcVar21)" identifier (argument_list "(pcVar21)" ( identifier )))) ;) (expression_statement "local_24 = sVar20 & 0x3fffffff;" (assignment_expression "local_24 = sVar20 & 0x3fffffff" identifier = (binary_expression "sVar20 & 0x3fffffff" identifier & number_literal)) ;) }))) (if_statement "if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }" if (parenthesized_expression "((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0))" ( (binary_expression "(piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)" (parenthesized_expression "(piVar27 != (int *)0x0)" ( (binary_expression "piVar27 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)" ( (comma_expression "FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0" (call_expression "FUN_0004b9c0(0)" identifier (argument_list "(0)" ( number_literal ))) , (binary_expression "(*(byte *)((int)param_2 + 9) & 8) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 9) & 8)" ( (binary_expression "*(byte *)((int)param_2 + 9) & 8" (pointer_expression "*(byte *)((int)param_2 + 9)" * (cast_expression "(byte *)((int)param_2 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_2 + 9)" ( (binary_expression "(int)param_2 + 9" (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }" { (expression_statement "iVar13 = *piVar27 + -1;" (assignment_expression "iVar13 = *piVar27 + -1" identifier = (binary_expression "*piVar27 + -1" (pointer_expression "*piVar27" * identifier) + number_literal)) ;) (if_statement "if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" if (parenthesized_expression "(local_88 == (byte *)0x0)" ( (binary_expression "local_88 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" { (expression_statement "iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);" (assignment_expression "iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21)" identifier = (call_expression "FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21)" identifier (argument_list "(iVar3,"%s.%s.%s",local_60,local_64,pcVar21)" ( identifier , (string_literal ""%s.%s.%s"" " string_content ") , identifier , identifier , identifier )))) ;) (expression_statement "piVar27[iVar13 * 5 + 3] = iVar17;" (assignment_expression "piVar27[iVar13 * 5 + 3] = iVar17" (subscript_expression "piVar27[iVar13 * 5 + 3]" identifier [ (binary_expression "iVar13 * 5 + 3" (binary_expression "iVar13 * 5" identifier * number_literal) + number_literal) ]) = identifier) ;) }) (else_clause "else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" else (compound_statement "{\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" { (expression_statement "iVar17 = FUN_00044980();" (assignment_expression "iVar17 = FUN_00044980()" identifier = (call_expression "FUN_00044980()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar27[iVar13 * 5 + 3] = iVar17;" (assignment_expression "piVar27[iVar13 * 5 + 3] = iVar17" (subscript_expression "piVar27[iVar13 * 5 + 3]" identifier [ (binary_expression "iVar13 * 5 + 3" (binary_expression "iVar13 * 5" identifier * number_literal) + number_literal) ]) = identifier) ;) }))) (expression_statement "pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);" (assignment_expression "pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11)" identifier = (cast_expression "(byte *)((int)piVar27 + iVar13 * 0x14 + 0x11)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 + iVar13 * 0x14 + 0x11)" ( (binary_expression "(int)piVar27 + iVar13 * 0x14 + 0x11" (binary_expression "(int)piVar27 + iVar13 * 0x14" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar13 * 0x14" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar25 = *pbVar25 | 2;" (assignment_expression "*pbVar25 = *pbVar25 | 2" (pointer_expression "*pbVar25" * identifier) = (binary_expression "*pbVar25 | 2" (pointer_expression "*pbVar25" * identifier) | number_literal)) ;) })) (if_statement "if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }" if (parenthesized_expression "(local_68 != (char *)0x0)" ( (binary_expression "local_68 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                            FUN_000428d0();\n                          }" { (expression_statement "FUN_000428d0();" (call_expression "FUN_000428d0()" identifier (argument_list "()" ( ))) ;) })) (labeled_statement "LAB_000d0623:\n                          bVar29 = true;" statement_identifier : (expression_statement "bVar29 = true;" (assignment_expression "bVar29 = true" identifier = true) ;)) })) }))) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" identifier = (binary_expression "iVar28 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar28 < *(short *)((int)puVar16 + 0x2a))" ( (binary_expression "iVar28 < *(short *)((int)puVar16 + 0x2a)" identifier < (pointer_expression "*(short *)((int)puVar16 + 0x2a)" * (cast_expression "(short *)((int)puVar16 + 0x2a)" ( (type_descriptor "short *" (sized_type_specifier "short" short) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) )) ;) }))) }))) (labeled_statement "LAB_000d029d:\n                local_78 = local_78 + 1;" statement_identifier : (expression_statement "local_78 = local_78 + 1;" (assignment_expression "local_78 = local_78 + 1" identifier = (binary_expression "local_78 + 1" identifier + number_literal)) ;)) (expression_statement "local_80 = local_80 + 0x11;" (assignment_expression "local_80 = local_80 + 0x11" identifier = (binary_expression "local_80 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "(local_78 < *piVar5)" ( (binary_expression "local_78 < *piVar5" identifier < (pointer_expression "*piVar5" * identifier)) )) ;) (if_statement "if (!bVar29) goto LAB_000d02c3;" if (parenthesized_expression "(!bVar29)" ( (unary_expression "!bVar29" ! identifier) )) (goto_statement "goto LAB_000d02c3;" goto statement_identifier ;)) }))) }) (else_clause "else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" else (if_statement "if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" if (parenthesized_expression "((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58))" ( (binary_expression "(cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)" (parenthesized_expression "(cVar12 == -0x7e)" ( (binary_expression "cVar12 == -0x7e" identifier == number_literal) )) && (parenthesized_expression "(**(char **)(pcVar21 + 0x10) == -0x58)" ( (binary_expression "**(char **)(pcVar21 + 0x10) == -0x58" (pointer_expression "**(char **)(pcVar21 + 0x10)" * (pointer_expression "*(char **)(pcVar21 + 0x10)" * (cast_expression "(char **)(pcVar21 + 0x10)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar21 + 0x10)" ( (binary_expression "pcVar21 + 0x10" identifier + number_literal) ))))) == number_literal) ))) )) (compound_statement "{\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }" { (expression_statement "local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);" (assignment_expression "local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8)" identifier = (pointer_expression "*(byte **)(*(int *)(pcVar21 + 0xc) + 8)" * (cast_expression "(byte **)(*(int *)(pcVar21 + 0xc) + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(int *)(pcVar21 + 0xc) + 8)" ( (binary_expression "*(int *)(pcVar21 + 0xc) + 8" (pointer_expression "*(int *)(pcVar21 + 0xc)" * (cast_expression "(int *)(pcVar21 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar21 + 0xc)" ( (binary_expression "pcVar21 + 0xc" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if (0 < *piVar5) goto LAB_000d01d4;" if (parenthesized_expression "(0 < *piVar5)" ( (binary_expression "0 < *piVar5" number_literal < (pointer_expression "*piVar5" * identifier)) )) (goto_statement "goto LAB_000d01d4;" goto statement_identifier ;)) (labeled_statement "LAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;" statement_identifier : (if_statement "if (local_74 == (byte *)0x0) goto LAB_000d0870;" if (parenthesized_expression "(local_74 == (byte *)0x0)" ( (binary_expression "local_74 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000d0870;" goto statement_identifier ;))) (expression_statement "FUN_00074ee0(piVar2,"no such table: %s",local_74);" (call_expression "FUN_00074ee0(piVar2,"no such table: %s",local_74)" identifier (argument_list "(piVar2,"no such table: %s",local_74)" ( identifier , (string_literal ""no such table: %s"" " string_content ") , identifier ))) ;) }) (else_clause "else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" else (compound_statement "{\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" { (expression_statement "piVar27 = (int *)FUN_000675b0();" (assignment_expression "piVar27 = (int *)FUN_000675b0()" identifier = (cast_expression "(int *)FUN_000675b0()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000675b0()" identifier (argument_list "()" ( ))))) ;) (if_statement "if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }" if (parenthesized_expression "(piVar27 != (int *)0x0)" ( (binary_expression "piVar27 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }" { (expression_statement "iVar28 = *piVar27;" (assignment_expression "iVar28 = *piVar27" identifier = (pointer_expression "*piVar27" * identifier)) ;) (expression_statement "piVar27[iVar28 * 5 + -3] = local_4c[1];" (assignment_expression "piVar27[iVar28 * 5 + -3] = local_4c[1]" (subscript_expression "piVar27[iVar28 * 5 + -3]" identifier [ (binary_expression "iVar28 * 5 + -3" (binary_expression "iVar28 * 5" identifier * number_literal) + number_literal) ]) = (subscript_expression "local_4c[1]" identifier [ number_literal ])) ;) (expression_statement "piVar27[iVar28 * 5 + -2] = local_4c[2];" (assignment_expression "piVar27[iVar28 * 5 + -2] = local_4c[2]" (subscript_expression "piVar27[iVar28 * 5 + -2]" identifier [ (binary_expression "iVar28 * 5 + -2" (binary_expression "iVar28 * 5" identifier * number_literal) + number_literal) ]) = (subscript_expression "local_4c[2]" identifier [ number_literal ])) ;) (expression_statement "local_4c[1] = 0;" (assignment_expression "local_4c[1] = 0" (subscript_expression "local_4c[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_4c[2] = 0;" (assignment_expression "local_4c[2] = 0" (subscript_expression "local_4c[2]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "*local_4c = 0;" (assignment_expression "*local_4c = 0" (pointer_expression "*local_4c" * identifier) = number_literal) ;) }))))) (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" identifier = (binary_expression "local_44 + 1" identifier + number_literal)) ;) (expression_statement "local_4c = local_4c + 5;" (assignment_expression "local_4c = local_4c + 5" identifier = (binary_expression "local_4c + 5" identifier + number_literal)) ;) (if_statement "if (*piVar6 <= local_44) goto LAB_000d07cd;" if (parenthesized_expression "(*piVar6 <= local_44)" ( (binary_expression "*piVar6 <= local_44" (pointer_expression "*piVar6" * identifier) <= identifier) )) (goto_statement "goto LAB_000d07cd;" goto statement_identifier ;)) (expression_statement "pcVar21 = (char *)*local_4c;" (assignment_expression "pcVar21 = (char *)*local_4c" identifier = (cast_expression "(char *)*local_4c" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*local_4c" * identifier))) ;) (expression_statement "cVar12 = *pcVar21;" (assignment_expression "cVar12 = *pcVar21" identifier = (pointer_expression "*pcVar21" * identifier)) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })) (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" identifier = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "piVar27 = (int *)*param_2;" (assignment_expression "piVar27 = (int *)*param_2" identifier = (cast_expression "(int *)*param_2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (goto_statement "goto LAB_000d07de;" goto statement_identifier ;) }))) })) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;) (labeled_statement "LAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);" statement_identifier : (do_statement "do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);" do (compound_statement "{\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  }" { (if_statement "if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }" if (parenthesized_expression "((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0))" ( (binary_expression "(*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)" (parenthesized_expression "(*piVar23 == 0)" ( (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" * identifier) == number_literal) )) && (parenthesized_expression "(pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)" ( (comma_expression "pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0" (assignment_expression "pbVar25 = (byte *)piVar23[1]" identifier = (cast_expression "(byte *)piVar23[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar23[1]" identifier [ number_literal ]))) , (binary_expression "pbVar25 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }" { (if_statement "if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }" if (parenthesized_expression "((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25])" ( (binary_expression "(&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]" (subscript_expression "(&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*(byte *)piVar8[iVar28 * 4 + 2]" * (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ]) == (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar25" * identifier) ])) )) (compound_statement "{\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }" { (if_statement "if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }" if (parenthesized_expression "(*pbVar25 != 0)" ( (binary_expression "*pbVar25 != 0" (pointer_expression "*pbVar25" * identifier) != number_literal) )) (compound_statement "{\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }" { (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" identifier = number_literal) ;) (do_statement "do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);" do (compound_statement "{\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          }" { (expression_statement "pbVar14 = pbVar25 + iVar17;" (assignment_expression "pbVar14 = pbVar25 + iVar17" identifier = (binary_expression "pbVar25 + iVar17" identifier + identifier)) ;) (if_statement "if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }" if (parenthesized_expression "((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]])" ( (binary_expression "(&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]" (subscript_expression "(&DAT_0012c6e0)[*pbVar14]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (pointer_expression "*pbVar14" * identifier) ]) != (subscript_expression "(&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]" (parenthesized_expression "(&DAT_0012c6e0)" ( (pointer_expression "&DAT_0012c6e0" & identifier) )) [ (subscript_expression "((byte *)piVar8[iVar28 * 4 + 2])[iVar17]" (parenthesized_expression "((byte *)piVar8[iVar28 * 4 + 2])" ( (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ])) )) [ identifier ]) ])) )) (compound_statement "{\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 0x11;" (assignment_expression "piVar23 = piVar23 + 0x11" identifier = (binary_expression "piVar23 + 0x11" identifier + number_literal)) ;) (if_statement "if (iVar13 < *piVar9) goto LAB_000cfe32;" if (parenthesized_expression "(iVar13 < *piVar9)" ( (binary_expression "iVar13 < *piVar9" identifier < (pointer_expression "*piVar9" * identifier)) )) (goto_statement "goto LAB_000cfe32;" goto statement_identifier ;)) (goto_statement "goto LAB_000cfecc;" goto statement_identifier ;) })) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" identifier = (binary_expression "iVar17 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(*pbVar14 != 0)" ( (binary_expression "*pbVar14 != 0" (pointer_expression "*pbVar14" * identifier) != number_literal) )) ;) })) (expression_statement "piVar23[3] = (int)puVar16;" (assignment_expression "piVar23[3] = (int)puVar16" (subscript_expression "piVar23[3]" identifier [ number_literal ]) = (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);" (assignment_expression "pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d)" identifier = (cast_expression "(byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar9 + iVar13 * 0x44 + 0x2d)" ( (binary_expression "(int)piVar9 + iVar13 * 0x44 + 0x2d" (binary_expression "(int)piVar9 + iVar13 * 0x44" (cast_expression "(int)piVar9" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "iVar13 * 0x44" identifier * number_literal)) + number_literal) )))) ;) (expression_statement "*pbVar25 = *pbVar25 | 0x20;" (assignment_expression "*pbVar25 = *pbVar25 | 0x20" (pointer_expression "*pbVar25" * identifier) = (binary_expression "*pbVar25 | 0x20" (pointer_expression "*pbVar25" * identifier) | number_literal)) ;) (expression_statement "puVar16[8] = puVar16[8] + 1;" (assignment_expression "puVar16[8] = puVar16[8] + 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) = (binary_expression "puVar16[8] + 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) + number_literal)) ;) (expression_statement "piVar15[2] = piVar15[2] | 0x2000;" (assignment_expression "piVar15[2] = piVar15[2] | 0x2000" (subscript_expression "piVar15[2]" identifier [ number_literal ]) = (binary_expression "piVar15[2] | 0x2000" (subscript_expression "piVar15[2]" identifier [ number_literal ]) | number_literal)) ;) })) })) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar23 = piVar23 + 0x11;" (assignment_expression "piVar23 = piVar23 + 0x11" identifier = (binary_expression "piVar23 + 0x11" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < *piVar9)" ( (binary_expression "iVar13 < *piVar9" identifier < (pointer_expression "*piVar9" * identifier)) )) ;)) (labeled_statement "LAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" statement_identifier : (if_statement "if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" if (parenthesized_expression "(2 < (uint)puVar16[8])" ( (binary_expression "2 < (uint)puVar16[8]" number_literal < (cast_expression "(uint)puVar16[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar16[8]" identifier [ number_literal ]))) )) (compound_statement "{\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" { (labeled_statement "LAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";" statement_identifier : (expression_statement "pcVar21 = "multiple references to recursive table: %s";" (assignment_expression "pcVar21 = "multiple references to recursive table: %s"" identifier = (string_literal ""multiple references to recursive table: %s"" " string_content ")) ;)) (expression_statement "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];" (assignment_expression "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2]" identifier = (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]))) ;) (labeled_statement "LAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);" statement_identifier : (expression_statement "FUN_00074ee0(piVar7,pcVar21,pbVar14);" (call_expression "FUN_00074ee0(piVar7,pcVar21,pbVar14)" identifier (argument_list "(piVar7,pcVar21,pbVar14)" ( identifier , identifier , identifier ))) ;)) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) }))) (expression_statement "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";" (assignment_expression "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s"" (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) = (cast_expression "(int)"circular reference: %s"" ( (type_descriptor "int" primitive_type) ) (string_literal ""circular reference: %s"" " string_content "))) ;) (expression_statement "iVar13 = piVar7[0x41];" (assignment_expression "iVar13 = piVar7[0x41]" identifier = (subscript_expression "piVar7[0x41]" identifier [ number_literal ])) ;) (expression_statement "piVar7[0x41] = (int)piVar8;" (assignment_expression "piVar7[0x41] = (int)piVar8" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "iVar17 = piVar15[0xd];" (assignment_expression "iVar17 = piVar15[0xd]" identifier = (subscript_expression "piVar15[0xd]" identifier [ number_literal ])) ;) (expression_statement "*(int *)(iVar17 + 0x40) = piVar15[0x10];" (assignment_expression "*(int *)(iVar17 + 0x40) = piVar15[0x10]" (pointer_expression "*(int *)(iVar17 + 0x40)" * (cast_expression "(int *)(iVar17 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x40)" ( (binary_expression "iVar17 + 0x40" identifier + number_literal) )))) = (subscript_expression "piVar15[0x10]" identifier [ number_literal ])) ;) (if_statement "if (param_1[2] != 0) {\n    FUN_0004a550();\n  }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n    FUN_0004a550();\n  }" { (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined4 *)(iVar17 + 0x40) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + 0x40) = 0" (pointer_expression "*(undefined4 *)(iVar17 + 0x40)" * (cast_expression "(undefined4 *)(iVar17 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar17 + 0x40)" ( (binary_expression "iVar17 + 0x40" identifier + number_literal) )))) = number_literal) ;) (labeled_statement "LAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;" statement_identifier : (expression_statement "piVar7[0x41] = (int)piVar8;" (assignment_expression "piVar7[0x41] = (int)piVar8" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = (cast_expression "(int)piVar8" ( (type_descriptor "int" primitive_type) ) identifier)) ;)) (expression_statement "piVar9 = piVar15;" (assignment_expression "piVar9 = piVar15" identifier = identifier) ;) (do_statement "do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);" do (compound_statement "{\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  }" { (expression_statement "piVar23 = piVar9;" (assignment_expression "piVar23 = piVar9" identifier = identifier) ;) (expression_statement "piVar9 = (int *)piVar23[0xd];" (assignment_expression "piVar9 = (int *)piVar23[0xd]" identifier = (cast_expression "(int *)piVar23[0xd]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar23[0xd]" identifier [ number_literal ]))) ;) }) while (parenthesized_expression "(piVar9 != (int *)0x0)" ( (binary_expression "piVar9 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) (expression_statement "piVar23 = (int *)*piVar23;" (assignment_expression "piVar23 = (int *)*piVar23" identifier = (cast_expression "(int *)*piVar23" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar23" * identifier))) ;) (if_statement "if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }" if (parenthesized_expression "(((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0))" ( (binary_expression "((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)" (parenthesized_expression "((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0)" ( (binary_expression "(int *)piVar8[iVar28 * 4 + 3] != (int *)0x0" (cast_expression "(int *)piVar8[iVar28 * 4 + 3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 3]" identifier [ (binary_expression "iVar28 * 4 + 3" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ])) != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(piVar23 != (int *)0x0)" ( (binary_expression "piVar23 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }" { (expression_statement "iVar17 = *piVar23;" (assignment_expression "iVar17 = *piVar23" identifier = (pointer_expression "*piVar23" * identifier)) ;) (expression_statement "iVar10 = *(int *)piVar8[iVar28 * 4 + 3];" (assignment_expression "iVar10 = *(int *)piVar8[iVar28 * 4 + 3]" identifier = (pointer_expression "*(int *)piVar8[iVar28 * 4 + 3]" * (cast_expression "(int *)piVar8[iVar28 * 4 + 3]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "piVar8[iVar28 * 4 + 3]" identifier [ (binary_expression "iVar28 * 4 + 3" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ])))) ;) (if_statement "if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }" if (parenthesized_expression "(iVar17 != iVar10)" ( (binary_expression "iVar17 != iVar10" identifier != identifier) )) (compound_statement "{\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }" { (expression_statement "FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);" (call_expression "FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10)" identifier (argument_list "(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10)" ( identifier , (string_literal ""table %s has %d values for %d columns"" " string_content ") , (subscript_expression "piVar8[iVar28 * 4 + 2]" identifier [ (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) , identifier , identifier ))) ;) (expression_statement "piVar7[0x41] = iVar13;" (assignment_expression "piVar7[0x41] = iVar13" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = identifier) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) })) (expression_statement "FUN_000ae410(puVar16 + 1);" (call_expression "FUN_000ae410(puVar16 + 1)" identifier (argument_list "(puVar16 + 1)" ( (binary_expression "puVar16 + 1" identifier + number_literal) ))) ;) (if_statement "if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }" if (parenthesized_expression "(bVar11 < 2)" ( (binary_expression "bVar11 < 2" identifier < number_literal) )) (compound_statement "{\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }" { (expression_statement "pcVar21 = "multiple recursive references: %s";" (assignment_expression "pcVar21 = "multiple recursive references: %s"" identifier = (string_literal ""multiple recursive references: %s"" " string_content ")) ;) (if_statement "if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }" if (parenthesized_expression "((*(byte *)((int)piVar15 + 9) & 0x20) == 0)" ( (binary_expression "(*(byte *)((int)piVar15 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)((int)piVar15 + 9) & 0x20)" ( (binary_expression "*(byte *)((int)piVar15 + 9) & 0x20" (pointer_expression "*(byte *)((int)piVar15 + 9)" * (cast_expression "(byte *)((int)piVar15 + 9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar15 + 9)" ( (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n      pcVar21 = "recursive reference in a subquery: %s";\n    }" { (expression_statement "pcVar21 = "recursive reference in a subquery: %s";" (assignment_expression "pcVar21 = "recursive reference in a subquery: %s"" identifier = (string_literal ""recursive reference in a subquery: %s"" " string_content ")) ;) })) (expression_statement "piVar8[iVar28 * 4 + 5] = (int)pcVar21;" (assignment_expression "piVar8[iVar28 * 4 + 5] = (int)pcVar21" (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) = (cast_expression "(int)pcVar21" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (param_1[2] != 0) {\n      FUN_0004a550();\n    }" if (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n      FUN_0004a550();\n    }" { (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" identifier (argument_list "()" ( ))) ;) })) })) (expression_statement "piVar8[iVar28 * 4 + 5] = 0;" (assignment_expression "piVar8[iVar28 * 4 + 5] = 0" (subscript_expression "piVar8[iVar28 * 4 + 5]" identifier [ (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "piVar7[0x41] = iVar13;" (assignment_expression "piVar7[0x41] = iVar13" (subscript_expression "piVar7[0x41]" identifier [ number_literal ]) = identifier) ;) (labeled_statement "LAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }" statement_identifier : (if_statement "if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }" if (parenthesized_expression "(piVar27[4] == 0)" ( (binary_expression "piVar27[4] == 0" (subscript_expression "piVar27[4]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }" { (if_statement "if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }" if (parenthesized_expression "(piVar27[2] == 0)" ( (binary_expression "piVar27[2] == 0" (subscript_expression "piVar27[2]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }" { (labeled_statement "LAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;" statement_identifier : (if_statement "if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;" if (parenthesized_expression "((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0))" ( (binary_expression "(((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)" (parenthesized_expression "(((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0))" ( (binary_expression "((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)" (parenthesized_expression "((piVar27[5] != 0) && (param_1[2] != 0))" ( (binary_expression "(piVar27[5] != 0) && (param_1[2] != 0)" (parenthesized_expression "(piVar27[5] != 0)" ( (binary_expression "piVar27[5] != 0" (subscript_expression "piVar27[5]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) ))) )) && (parenthesized_expression "(iVar28 = FUN_0004a550(), iVar28 != 0)" ( (comma_expression "iVar28 = FUN_0004a550(), iVar28 != 0" (assignment_expression "iVar28 = FUN_0004a550()" identifier = (call_expression "FUN_0004a550()" identifier (argument_list "()" ( )))) , (binary_expression "iVar28 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(iVar28 = FUN_000ae800(), iVar28 != 0)" ( (comma_expression "iVar28 = FUN_000ae800(), iVar28 != 0" (assignment_expression "iVar28 = FUN_000ae800()" identifier = (call_expression "FUN_000ae800()" identifier (argument_list "()" ( )))) , (binary_expression "iVar28 != 0" identifier != number_literal)) ))) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;))) }) (else_clause "else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }" else (compound_statement "{\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }" { (labeled_statement "LAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();" statement_identifier : (expression_statement "puVar16 = (undefined4 *)FUN_000cf6d0();" (assignment_expression "puVar16 = (undefined4 *)FUN_000cf6d0()" identifier = (cast_expression "(undefined4 *)FUN_000cf6d0()" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000cf6d0()" identifier (argument_list "()" ( ))))) ;)) (expression_statement "piVar27[4] = (int)puVar16;" (assignment_expression "piVar27[4] = (int)puVar16" (subscript_expression "piVar27[4]" identifier [ number_literal ]) = (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;" if (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" ( (binary_expression "puVar16 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (if_statement "if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }" if (parenthesized_expression "(0xfffe < (uint)puVar16[8])" ( (binary_expression "0xfffe < (uint)puVar16[8]" number_literal < (cast_expression "(uint)puVar16[8]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar16[8]" identifier [ number_literal ]))) )) (compound_statement "{\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }" { (expression_statement "FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);" (call_expression "FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16)" identifier (argument_list "(piVar2,"too many references to \"%s\": max 65535",*puVar16)" ( identifier , (string_literal ""too many references to \"%s\": max 65535"" " string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression "*puVar16" * identifier) ))) ;) (expression_statement "piVar27[4] = 0;" (assignment_expression "piVar27[4] = 0" (subscript_expression "piVar27[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) (expression_statement "puVar16[8] = puVar16[8] + 1;" (assignment_expression "puVar16[8] = puVar16[8] + 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) = (binary_expression "puVar16[8] + 1" (subscript_expression "puVar16[8]" identifier [ number_literal ]) + number_literal)) ;) (if_statement "if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }" if (parenthesized_expression "(puVar16[0xe] == 0)" ( (binary_expression "puVar16[0xe] == 0" (subscript_expression "puVar16[0xe]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }" { (if_statement "if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }" if (parenthesized_expression "((*(byte *)((int)piVar27 + 0x25) & 4) != 0)" ( (binary_expression "(*(byte *)((int)piVar27 + 0x25) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar27 + 0x25) & 4)" ( (binary_expression "*(byte *)((int)piVar27 + 0x25) & 4" (pointer_expression "*(byte *)((int)piVar27 + 0x25)" * (cast_expression "(byte *)((int)piVar27 + 0x25)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)piVar27 + 0x25)" ( (binary_expression "(int)piVar27 + 0x25" (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }" { (expression_statement "pcVar21 = "\'%s\' is not a function";" (assignment_expression "pcVar21 = "\'%s\' is not a function"" identifier = (string_literal ""\'%s\' is not a function"" " escape_sequence string_content escape_sequence string_content ")) ;) (goto_statement "goto LAB_000cfad7;" goto statement_identifier ;) })) (if_statement "if (puVar16[3] == 0) goto LAB_000cfc89;" if (parenthesized_expression "(puVar16[3] == 0)" ( (binary_expression "puVar16[3] == 0" (subscript_expression "puVar16[3]" identifier [ number_literal ]) == number_literal) )) (goto_statement "goto LAB_000cfc89;" goto statement_identifier ;)) })) (expression_statement "iVar28 = FUN_000c26b0();" (assignment_expression "iVar28 = FUN_000c26b0()" identifier = (call_expression "FUN_000c26b0()" identifier (argument_list "()" ( )))) ;) (if_statement "if (iVar28 != 0) goto LAB_000cfae4;" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (expression_statement "iVar28 = FUN_0005a810();" (assignment_expression "iVar28 = FUN_0005a810()" identifier = (call_expression "FUN_0005a810()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar27[5] = iVar28;" (assignment_expression "piVar27[5] = iVar28" (subscript_expression "piVar27[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);" (assignment_expression "uVar1 = *(undefined2 *)((int)puVar16 + 0x2a)" identifier = (pointer_expression "*(undefined2 *)((int)puVar16 + 0x2a)" * (cast_expression "(undefined2 *)((int)puVar16 + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "*(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;" (assignment_expression "*(undefined2 *)((int)puVar16 + 0x2a) = 0xffff" (pointer_expression "*(undefined2 *)((int)puVar16 + 0x2a)" * (cast_expression "(undefined2 *)((int)puVar16 + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (if_statement "if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }" if (parenthesized_expression "((piVar27[5] != 0) && (param_1[2] != 0))" ( (binary_expression "(piVar27[5] != 0) && (param_1[2] != 0)" (parenthesized_expression "(piVar27[5] != 0)" ( (binary_expression "piVar27[5] != 0" (subscript_expression "piVar27[5]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(param_1[2] != 0)" ( (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        FUN_0004a550();\n      }" { (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" identifier (argument_list "()" ( ))) ;) })) (expression_statement "*(undefined2 *)((int)puVar16 + 0x2a) = uVar1;" (assignment_expression "*(undefined2 *)((int)puVar16 + 0x2a) = uVar1" (pointer_expression "*(undefined2 *)((int)puVar16 + 0x2a)" * (cast_expression "(undefined2 *)((int)puVar16 + 0x2a)" ( (type_descriptor "undefined2 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar16 + 0x2a)" ( (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) }))) }))) (labeled_statement "LAB_000cfc89:\n  iVar28 = FUN_000757e0();" statement_identifier : (expression_statement "iVar28 = FUN_000757e0();" (assignment_expression "iVar28 = FUN_000757e0()" identifier = (call_expression "FUN_000757e0()" identifier (argument_list "()" ( )))) ;)) (if_statement "if (iVar28 != 0) goto LAB_000cfae4;" if (parenthesized_expression "(iVar28 != 0)" ( (binary_expression "iVar28 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000cfae4;" goto statement_identifier ;)) (labeled_statement "LAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);" statement_identifier : (expression_statement "local_88 = (byte *)((int)local_88 + 1);" (assignment_expression "local_88 = (byte *)((int)local_88 + 1)" identifier = (cast_expression "(byte *)((int)local_88 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)local_88 + 1)" ( (binary_expression "(int)local_88 + 1" (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ;)) (expression_statement "piVar27 = piVar27 + 0x11;" (assignment_expression "piVar27 = piVar27 + 0x11" identifier = (binary_expression "piVar27 + 0x11" identifier + number_literal)) ;) (if_statement "if (*piVar5 <= (int)local_88) goto LAB_000cf928;" if (parenthesized_expression "(*piVar5 <= (int)local_88)" ( (binary_expression "*piVar5 <= (int)local_88" (pointer_expression "*piVar5" * identifier) <= (cast_expression "(int)local_88" ( (type_descriptor "int" primitive_type) ) identifier)) )) (goto_statement "goto LAB_000cf928;" goto statement_identifier ;)) (goto_statement "goto LAB_000cf800;" goto statement_identifier ;) (labeled_statement "LAB_000d07cd:\n  FUN_00056520();" statement_identifier : (expression_statement "FUN_00056520();" (call_expression "FUN_00056520()" identifier (argument_list "()" ( ))) ;)) (expression_statement "*param_2 = (int)piVar27;" (assignment_expression "*param_2 = (int)piVar27" (pointer_expression "*param_2" * identifier) = (cast_expression "(int)piVar27" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (labeled_statement "LAB_000d07de:\n  local_48 = 0;" statement_identifier : (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;)) (if_statement "if (piVar27 == (int *)0x0) goto LAB_000cfaec;" if (parenthesized_expression "(piVar27 == (int *)0x0)" ( (binary_expression "piVar27 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;)) (if_statement "if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }" if (parenthesized_expression "(*piVar27 <= *(int *)(iVar3 + 0x70))" ( (binary_expression "*piVar27 <= *(int *)(iVar3 + 0x70)" (pointer_expression "*piVar27" * identifier) <= (pointer_expression "*(int *)(iVar3 + 0x70)" * (cast_expression "(int *)(iVar3 + 0x70)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar3 + 0x70)" ( (binary_expression "iVar3 + 0x70" identifier + number_literal) ))))) )) (compound_statement "{\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }" { (if_statement "if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }" if (parenthesized_expression "(((uint)local_40 & 0x200004) != 0)" ( (binary_expression "((uint)local_40 & 0x200004) != 0" (parenthesized_expression "((uint)local_40 & 0x200004)" ( (binary_expression "(uint)local_40 & 0x200004" (cast_expression "(uint)local_40" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      param_2[2] = param_2[2] | 0x40000;\n    }" { (expression_statement "param_2[2] = param_2[2] | 0x40000;" (assignment_expression "param_2[2] = param_2[2] | 0x40000" (subscript_expression "param_2[2]" identifier [ number_literal ]) = (binary_expression "param_2[2] | 0x40000" (subscript_expression "param_2[2]" identifier [ number_literal ]) | number_literal)) ;) })) (goto_statement "goto LAB_000cfaec;" goto statement_identifier ;) })) (expression_statement "pcVar21 = "too many columns in result set";" (assignment_expression "pcVar21 = "too many columns in result set"" identifier = (string_literal ""too many columns in result set"" " string_content ")) ;) (labeled_statement "LAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);" statement_identifier : (expression_statement "FUN_00074ee0(piVar2,pcVar21);" (call_expression "FUN_00074ee0(piVar2,pcVar21)" identifier (argument_list "(piVar2,pcVar21)" ( identifier , identifier ))) ;)) (labeled_statement "LAB_000cfae4:\n  local_48 = 2;" statement_identifier : (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" identifier = number_literal) ;)) (labeled_statement "LAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }" statement_identifier : (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }" if (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" identifier == (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" * (cast_expression "(int *)(in_GS_OFFSET + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_GS_OFFSET + 0x14)" ( (binary_expression "in_GS_OFFSET + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n    return local_48;\n  }" { (return_statement "return local_48;" return identifier ;) }))) (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT | LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (for_statement for ( (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ; (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ]) == (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ])) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " escape_sequence string_content escape_sequence string_content ")) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + IDENT)) , (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ]) == (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (subscript_expression IDENT [ IDENT ]) ]))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]))) ;) (goto_statement goto statement_identifier ;) })) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != IDENT) )) ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = LIT) , (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))))) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) + (binary_expression IDENT * LIT)) ))))) ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ]) == (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ])) )) (compound_statement { (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , (binary_expression IDENT + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ IDENT ]) == (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ])) )) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;)) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (binary_expression (pointer_expression * IDENT) + LIT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( IDENT )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == LIT) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) | (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) < LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") ))) ;)) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))))) ;) }))) })))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ]) == (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ])) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ]) != (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ])) )) (goto_statement goto statement_identifier ;)) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) ;) })) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT * LIT) + (subscript_expression IDENT [ LIT ])) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) || (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) || (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) , (binary_expression IDENT == LIT)) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT < LIT)) ))) )) ))) )) ))) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) ))) )) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (call_expression IDENT (argument_list ( LIT ))) , (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = BOOL) ;)) })) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier short) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) )) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (goto_statement goto statement_identifier ;)) }))) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;))) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , IDENT ))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) }))))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) while (parenthesized_expression ( BOOL )) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (goto_statement goto statement_identifier ;) }))) })) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]))) ]) == (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ])) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (pointer_expression * IDENT) ]) != (subscript_expression (parenthesized_expression ( (pointer_expression & IDENT) )) [ (subscript_expression (parenthesized_expression ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) )) [ IDENT ]) ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression IDENT * LIT)) + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) | LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * IDENT)) )) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]))) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) (string_literal " string_content "))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) })) (expression_statement (call_expression IDENT (argument_list ( (binary_expression IDENT + LIT) ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression IDENT != LIT)) ))) )) (goto_statement goto statement_identifier ;))) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( ))))) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content escape_sequence string_content escape_sequence string_content ") , (pointer_expression * IDENT) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " escape_sequence string_content escape_sequence string_content ")) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= (cast_expression ( (type_descriptor TYPE) ) IDENT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) | LIT)) ;) })) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (string_literal " string_content ")) ;) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (return_statement return IDENT ;) }))) (expression_statement (call_expression IDENT (argument_list ( ))) ;) })))
(function_definition "undefined4 FUN_000cf720(int *param_1,int *param_2)\n\n{\n  undefined2 uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  int iVar13;\n  byte *pbVar14;\n  int *piVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  char *pcVar18;\n  undefined4 uVar19;\n  size_t sVar20;\n  char *pcVar21;\n  char cVar22;\n  int *piVar23;\n  byte *pbVar24;\n  byte *pbVar25;\n  undefined4 *puVar26;\n  int *piVar27;\n  int iVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  byte *local_88;\n  int *local_80;\n  int local_78;\n  byte *local_74;\n  int local_70;\n  char *local_68;\n  byte *local_64;\n  char *local_60;\n  int *local_4c;\n  undefined4 local_48;\n  int local_44;\n  int *local_40;\n  undefined1 local_2c [4];\n  char *local_28;\n  uint local_24;\n  int local_20;\n  \n  piVar2 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *piVar2;\n  uVar4 = param_2[2];\n  param_2[2] = uVar4 | 0x40;\n  if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);\nLAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n  iVar13 = piVar7[0x41];\n  piVar7[0x41] = (int)piVar8;\n  iVar17 = piVar15[0xd];\n  *(int *)(iVar17 + 0x40) = piVar15[0x10];\n  if (param_1[2] != 0) {\n    FUN_0004a550();\n  }\n  *(undefined4 *)(iVar17 + 0x40) = 0;\nLAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;\n  piVar9 = piVar15;\n  do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);\n  piVar23 = (int *)*piVar23;\n  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  FUN_000ae410(puVar16 + 1);\n  if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }\n  piVar8[iVar28 * 4 + 5] = 0;\n  piVar7[0x41] = iVar13;\nLAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }\nLAB_000cfc89:\n  iVar28 = FUN_000757e0();\n  if (iVar28 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);\n  piVar27 = piVar27 + 0x11;\n  if (*piVar5 <= (int)local_88) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  FUN_00056520();\n  *param_2 = (int)piVar27;\nLAB_000d07de:\n  local_48 = 0;\n  if (piVar27 == (int *)0x0) goto LAB_000cfaec;\n  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar21 = "too many columns in result set";\nLAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    \n  FUN_00116110();\n}" (type_identifier "undefined4") (function_declarator "FUN_000cf720(int *param_1,int *param_2)" (identifier "FUN_000cf720") (parameter_list "(int *param_1,int *param_2)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) () ")"))) (compound_statement "{\n  undefined2 uVar1;\n  int *piVar2;\n  int iVar3;\n  uint uVar4;\n  int *piVar5;\n  int *piVar6;\n  int *piVar7;\n  int *piVar8;\n  int *piVar9;\n  int iVar10;\n  byte bVar11;\n  char cVar12;\n  int iVar13;\n  byte *pbVar14;\n  int *piVar15;\n  undefined4 *puVar16;\n  int iVar17;\n  char *pcVar18;\n  undefined4 uVar19;\n  size_t sVar20;\n  char *pcVar21;\n  char cVar22;\n  int *piVar23;\n  byte *pbVar24;\n  byte *pbVar25;\n  undefined4 *puVar26;\n  int *piVar27;\n  int iVar28;\n  int in_GS_OFFSET;\n  bool bVar29;\n  byte *local_88;\n  int *local_80;\n  int local_78;\n  byte *local_74;\n  int local_70;\n  char *local_68;\n  byte *local_64;\n  char *local_60;\n  int *local_4c;\n  undefined4 local_48;\n  int local_44;\n  int *local_40;\n  undefined1 local_2c [4];\n  char *local_28;\n  uint local_24;\n  int local_20;\n  \n  piVar2 = (int *)*param_1;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  iVar3 = *piVar2;\n  uVar4 = param_2[2];\n  param_2[2] = uVar4 | 0x40;\n  if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }\n  goto LAB_000cfae4;\nLAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);\nLAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }\n  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n  iVar13 = piVar7[0x41];\n  piVar7[0x41] = (int)piVar8;\n  iVar17 = piVar15[0xd];\n  *(int *)(iVar17 + 0x40) = piVar15[0x10];\n  if (param_1[2] != 0) {\n    FUN_0004a550();\n  }\n  *(undefined4 *)(iVar17 + 0x40) = 0;\nLAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;\n  piVar9 = piVar15;\n  do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);\n  piVar23 = (int *)*piVar23;\n  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }\n  FUN_000ae410(puVar16 + 1);\n  if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }\n  piVar8[iVar28 * 4 + 5] = 0;\n  piVar7[0x41] = iVar13;\nLAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }\nLAB_000cfc89:\n  iVar28 = FUN_000757e0();\n  if (iVar28 != 0) goto LAB_000cfae4;\nLAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);\n  piVar27 = piVar27 + 0x11;\n  if (*piVar5 <= (int)local_88) goto LAB_000cf928;\n  goto LAB_000cf800;\nLAB_000d07cd:\n  FUN_00056520();\n  *param_2 = (int)piVar27;\nLAB_000d07de:\n  local_48 = 0;\n  if (piVar27 == (int *)0x0) goto LAB_000cfaec;\n  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }\n  pcVar21 = "too many columns in result set";\nLAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);\nLAB_000cfae4:\n  local_48 = 2;\nLAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }\n                    \n  FUN_00116110();\n}" ({ "{") (declaration "undefined2 uVar1;" (type_identifier "undefined2") (identifier "uVar1") (; ";")) (declaration "int *piVar2;" (primitive_type "int") (pointer_declarator "*piVar2" (* "*") (identifier "piVar2")) (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "int *piVar6;" (primitive_type "int") (pointer_declarator "*piVar6" (* "*") (identifier "piVar6")) (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "byte bVar11;" (type_identifier "byte") (identifier "bVar11") (; ";")) (declaration "char cVar12;" (primitive_type "char") (identifier "cVar12") (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "byte *pbVar14;" (type_identifier "byte") (pointer_declarator "*pbVar14" (* "*") (identifier "pbVar14")) (; ";")) (declaration "int *piVar15;" (primitive_type "int") (pointer_declarator "*piVar15" (* "*") (identifier "piVar15")) (; ";")) (declaration "undefined4 *puVar16;" (type_identifier "undefined4") (pointer_declarator "*puVar16" (* "*") (identifier "puVar16")) (; ";")) (declaration "int iVar17;" (primitive_type "int") (identifier "iVar17") (; ";")) (declaration "char *pcVar18;" (primitive_type "char") (pointer_declarator "*pcVar18" (* "*") (identifier "pcVar18")) (; ";")) (declaration "undefined4 uVar19;" (type_identifier "undefined4") (identifier "uVar19") (; ";")) (declaration "size_t sVar20;" (primitive_type "size_t") (identifier "sVar20") (; ";")) (declaration "char *pcVar21;" (primitive_type "char") (pointer_declarator "*pcVar21" (* "*") (identifier "pcVar21")) (; ";")) (declaration "char cVar22;" (primitive_type "char") (identifier "cVar22") (; ";")) (declaration "int *piVar23;" (primitive_type "int") (pointer_declarator "*piVar23" (* "*") (identifier "piVar23")) (; ";")) (declaration "byte *pbVar24;" (type_identifier "byte") (pointer_declarator "*pbVar24" (* "*") (identifier "pbVar24")) (; ";")) (declaration "byte *pbVar25;" (type_identifier "byte") (pointer_declarator "*pbVar25" (* "*") (identifier "pbVar25")) (; ";")) (declaration "undefined4 *puVar26;" (type_identifier "undefined4") (pointer_declarator "*puVar26" (* "*") (identifier "puVar26")) (; ";")) (declaration "int *piVar27;" (primitive_type "int") (pointer_declarator "*piVar27" (* "*") (identifier "piVar27")) (; ";")) (declaration "int iVar28;" (primitive_type "int") (identifier "iVar28") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "bool bVar29;" (primitive_type "bool") (identifier "bVar29") (; ";")) (declaration "byte *local_88;" (type_identifier "byte") (pointer_declarator "*local_88" (* "*") (identifier "local_88")) (; ";")) (declaration "int *local_80;" (primitive_type "int") (pointer_declarator "*local_80" (* "*") (identifier "local_80")) (; ";")) (declaration "int local_78;" (primitive_type "int") (identifier "local_78") (; ";")) (declaration "byte *local_74;" (type_identifier "byte") (pointer_declarator "*local_74" (* "*") (identifier "local_74")) (; ";")) (declaration "int local_70;" (primitive_type "int") (identifier "local_70") (; ";")) (declaration "char *local_68;" (primitive_type "char") (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "byte *local_64;" (type_identifier "byte") (pointer_declarator "*local_64" (* "*") (identifier "local_64")) (; ";")) (declaration "char *local_60;" (primitive_type "char") (pointer_declarator "*local_60" (* "*") (identifier "local_60")) (; ";")) (declaration "int *local_4c;" (primitive_type "int") (pointer_declarator "*local_4c" (* "*") (identifier "local_4c")) (; ";")) (declaration "undefined4 local_48;" (type_identifier "undefined4") (identifier "local_48") (; ";")) (declaration "int local_44;" (primitive_type "int") (identifier "local_44") (; ";")) (declaration "int *local_40;" (primitive_type "int") (pointer_declarator "*local_40" (* "*") (identifier "local_40")) (; ";")) (declaration "undefined1 local_2c [4];" (type_identifier "undefined1") (array_declarator "local_2c [4]" (identifier "local_2c") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "char *local_28;" (primitive_type "char") (pointer_declarator "*local_28" (* "*") (identifier "local_28")) (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "piVar2 = (int *)*param_1;" (assignment_expression "piVar2 = (int *)*param_1" (identifier "piVar2") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "local_20 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "local_20 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (= "=") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) (; ";")) (expression_statement "iVar3 = *piVar2;" (assignment_expression "iVar3 = *piVar2" (identifier "iVar3") (= "=") (pointer_expression "*piVar2" (* "*") (identifier "piVar2"))) (; ";")) (expression_statement "uVar4 = param_2[2];" (assignment_expression "uVar4 = param_2[2]" (identifier "uVar4") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_2[2] = uVar4 | 0x40;" (assignment_expression "param_2[2] = uVar4 | 0x40" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "uVar4 | 0x40" (identifier "uVar4") (| "|") (number_literal "0x40"))) (; ";")) (if_statement "if (*(char *)(iVar3 + 0x4d) == '\0') {\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }" (if "if") (parenthesized_expression "(*(char *)(iVar3 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar3 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x4d)" (* "*") (cast_expression "(char *)(iVar3 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x4d)" (( "(") (binary_expression "iVar3 + 0x4d" (identifier "iVar3") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }\n    piVar5 = (int *)param_2[8];\n    piVar6 = (int *)*param_2;\n    iVar28 = param_2[0x10];\n    if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }\n    FUN_00039910();\n    if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }\nLAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }\n  }" ({ "{") (if_statement "if ((uVar4 & 0x40) != 0) {\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }" (if "if") (parenthesized_expression "((uVar4 & 0x40) != 0)" (( "(") (binary_expression "(uVar4 & 0x40) != 0" (parenthesized_expression "(uVar4 & 0x40)" (( "(") (binary_expression "uVar4 & 0x40" (identifier "uVar4") (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      local_48 = 1;\n      goto LAB_000cfaec;\n    }" ({ "{") (expression_statement "local_48 = 1;" (assignment_expression "local_48 = 1" (identifier "local_48") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_000cfaec;" (goto "goto") (statement_identifier "LAB_000cfaec") (; ";")) (} "}"))) (expression_statement "piVar5 = (int *)param_2[8];" (assignment_expression "piVar5 = (int *)param_2[8]" (identifier "piVar5") (= "=") (cast_expression "(int *)param_2[8]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")))) (; ";")) (expression_statement "piVar6 = (int *)*param_2;" (assignment_expression "piVar6 = (int *)*param_2" (identifier "piVar6") (= "=") (cast_expression "(int *)*param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "iVar28 = param_2[0x10];" (assignment_expression "iVar28 = param_2[0x10]" (identifier "iVar28") (= "=") (subscript_expression "param_2[0x10]" (identifier "param_2") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (if_statement "if (iVar28 != 0) {\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }" (if "if") (parenthesized_expression "(iVar28 != 0)" (( "(") (binary_expression "iVar28 != 0" (identifier "iVar28") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      *(int *)(iVar28 + 4) = piVar2[0x41];\n      piVar2[0x41] = iVar28;\n    }" ({ "{") (expression_statement "*(int *)(iVar28 + 4) = piVar2[0x41];" (assignment_expression "*(int *)(iVar28 + 4) = piVar2[0x41]" (pointer_expression "*(int *)(iVar28 + 4)" (* "*") (cast_expression "(int *)(iVar28 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 4)" (( "(") (binary_expression "iVar28 + 4" (identifier "iVar28") (+ "+") (number_literal "4")) () ")")))) (= "=") (subscript_expression "piVar2[0x41]" (identifier "piVar2") ([ "[") (number_literal "0x41") (] "]"))) (; ";")) (expression_statement "piVar2[0x41] = iVar28;" (assignment_expression "piVar2[0x41] = iVar28" (subscript_expression "piVar2[0x41]" (identifier "piVar2") ([ "[") (number_literal "0x41") (] "]")) (= "=") (identifier "iVar28")) (; ";")) (} "}"))) (expression_statement "FUN_00039910();" (call_expression "FUN_00039910()" (identifier "FUN_00039910") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (0 < *piVar5) {\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }" (if "if") (parenthesized_expression "(0 < *piVar5)" (( "(") (binary_expression "0 < *piVar5" (number_literal "0") (< "<") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (compound_statement "{\n      local_88 = (byte *)0x0;\n      piVar27 = piVar5 + 2;\nLAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;\n      if (piVar27[1] != 0) goto LAB_000cfc82;\n      pbVar25 = (byte *)piVar27[2];\n      if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }\n      piVar7 = (int *)*param_1;\n      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }\n      if (piVar27[4] == 0) goto LAB_000cfcb3;\n      iVar28 = FUN_000757e0();\n      if (iVar28 == 0) goto LAB_000cf910;\n      goto LAB_000cfae4;\n    }" ({ "{") (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" (identifier "local_88") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar27 = piVar5 + 2;" (assignment_expression "piVar27 = piVar5 + 2" (identifier "piVar27") (= "=") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2"))) (; ";")) (labeled_statement "LAB_000cf800:\n      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;" (statement_identifier "LAB_000cf800") (: ":") (if_statement "if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;" (if "if") (parenthesized_expression "((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0)" (( "(") (binary_expression "(*(byte *)((int)piVar27 + 0x25) & 0x20) != 0" (parenthesized_expression "(*(byte *)((int)piVar27 + 0x25) & 0x20)" (( "(") (binary_expression "*(byte *)((int)piVar27 + 0x25) & 0x20" (pointer_expression "*(byte *)((int)piVar27 + 0x25)" (* "*") (cast_expression "(byte *)((int)piVar27 + 0x25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar27 + 0x25)" (( "(") (binary_expression "(int)piVar27 + 0x25" (cast_expression "(int)piVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar27")) (+ "+") (number_literal "0x25")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cf910;" (goto "goto") (statement_identifier "LAB_000cf910") (; ";")))) (if_statement "if (piVar27[1] != 0) goto LAB_000cfc82;" (if "if") (parenthesized_expression "(piVar27[1] != 0)" (( "(") (binary_expression "piVar27[1] != 0" (subscript_expression "piVar27[1]" (identifier "piVar27") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cfc82;" (goto "goto") (statement_identifier "LAB_000cfc82") (; ";"))) (expression_statement "pbVar25 = (byte *)piVar27[2];" (assignment_expression "pbVar25 = (byte *)piVar27[2]" (identifier "pbVar25") (= "=") (cast_expression "(byte *)piVar27[2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar27[2]" (identifier "piVar27") ([ "[") (number_literal "2") (] "]")))) (; ";")) (if_statement "if (pbVar25 == (byte *)0x0) {\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }" (if "if") (parenthesized_expression "(pbVar25 == (byte *)0x0)" (( "(") (binary_expression "pbVar25 == (byte *)0x0" (identifier "pbVar25") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (piVar27[4] == 0) goto LAB_000cfd90;\n        goto LAB_000cfc89;\n      }" ({ "{") (if_statement "if (piVar27[4] == 0) goto LAB_000cfd90;" (if "if") (parenthesized_expression "(piVar27[4] == 0)" (( "(") (binary_expression "piVar27[4] == 0" (subscript_expression "piVar27[4]" (identifier "piVar27") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cfd90;" (goto "goto") (statement_identifier "LAB_000cfd90") (; ";"))) (goto_statement "goto LAB_000cfc89;" (goto "goto") (statement_identifier "LAB_000cfc89") (; ";")) (} "}"))) (expression_statement "piVar7 = (int *)*param_1;" (assignment_expression "piVar7 = (int *)*param_1" (identifier "piVar7") (= "=") (cast_expression "(int *)*param_1" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (for_statement "for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }" (for "for") (( "(") (assignment_expression "piVar8 = (int *)piVar7[0x41]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar7[0x41]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar7[0x41]" (identifier "piVar7") ([ "[") (number_literal "0x41") (] "]")))) (; ";") (binary_expression "piVar8 != (int *)0x0" (identifier "piVar8") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "piVar8 = (int *)piVar8[1]" (identifier "piVar8") (= "=") (cast_expression "(int *)piVar8[1]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")))) () ")") (compound_statement "{\n        if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }\n      }" ({ "{") (if_statement "if (0 < *piVar8) {\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }" (if "if") (parenthesized_expression "(0 < *piVar8)" (( "(") (binary_expression "0 < *piVar8" (number_literal "0") (< "<") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) () ")")) (compound_statement "{\n          iVar28 = 0;\n          do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);\n        }" ({ "{") (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" (identifier "iVar28") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          } while (*piVar8 != iVar28);" (do "do") (compound_statement "{\n            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\n            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }\n            iVar28 = iVar28 + 1;\n          }" ({ "{") (expression_statement "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];" (assignment_expression "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2]" (identifier "pbVar14") (= "=") (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[iVar28 * 4 + 2]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "2")) (] "]")))) (; ";")) (if_statement "if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }" (if "if") (parenthesized_expression "((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14])" (( "(") (binary_expression "(&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]" (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (] "]")) (== "==") (subscript_expression "(&DAT_0012c6e0)[*pbVar14]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (] "]"))) () ")")) (compound_statement "{\n              if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }\n              iVar13 = 1;\n              while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }\n            }" ({ "{") (if_statement "if (*pbVar25 == 0) {\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }" (if "if") (parenthesized_expression "(*pbVar25 == 0)" (( "(") (binary_expression "*pbVar25 == 0" (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\njoined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;\n                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }\n                iVar13 = *piVar7;\n                puVar16 = (undefined4 *)FUN_00044520();\n                piVar27[4] = (int)puVar16;\n                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n                puVar16[8] = 1;\n                uVar19 = FUN_00044980();\n                puVar16[9] = puVar16[9] | 0x42;\n                *puVar16 = uVar19;\n                *(undefined2 *)(puVar16 + 0xb) = 200;\n                *(undefined2 *)(puVar16 + 10) = 0xffff;\n                piVar15 = (int *)FUN_0005a810();\n                piVar27[5] = (int)piVar15;\n                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;\n                bVar11 = (char)piVar15[1] + 0x85;\n                if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }\n                piVar9 = (int *)piVar15[8];\n                if (*piVar9 < 1) goto LAB_000cfecc;\n                piVar23 = piVar9 + 3;\n                iVar13 = 0;\n                goto LAB_000cfe32;\n              }" ({ "{") (expression_statement "pcVar21 = (char *)piVar8[iVar28 * 4 + 5];" (assignment_expression "pcVar21 = (char *)piVar8[iVar28 * 4 + 5]" (identifier "pcVar21") (= "=") (cast_expression "(char *)piVar8[iVar28 * 4 + 5]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[iVar28 * 4 + 5]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "5")) (] "]")))) (; ";")) (labeled_statement "joined_r0x000cfd51:\n                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;" (statement_identifier "joined_r0x000cfd51") (: ":") (if_statement "if (pcVar21 != (char *)0x0) goto LAB_000cfd64;" (if "if") (parenthesized_expression "(pcVar21 != (char *)0x0)" (( "(") (binary_expression "pcVar21 != (char *)0x0" (identifier "pcVar21") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000cfd64;" (goto "goto") (statement_identifier "LAB_000cfd64") (; ";")))) (if_statement "if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }" (if "if") (parenthesized_expression "((*(byte *)((int)piVar27 + 0x25) & 4) != 0)" (( "(") (binary_expression "(*(byte *)((int)piVar27 + 0x25) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar27 + 0x25) & 4)" (( "(") (binary_expression "*(byte *)((int)piVar27 + 0x25) & 4" (pointer_expression "*(byte *)((int)piVar27 + 0x25)" (* "*") (cast_expression "(byte *)((int)piVar27 + 0x25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar27 + 0x25)" (( "(") (binary_expression "(int)piVar27 + 0x25" (cast_expression "(int)piVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar27")) (+ "+") (number_literal "0x25")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  pcVar21 = "\'%s\' is not a function";\n                  pbVar14 = pbVar25;\n                  goto LAB_000cfd64;\n                }" ({ "{") (expression_statement "pcVar21 = "\'%s\' is not a function";" (assignment_expression "pcVar21 = "\'%s\' is not a function"" (identifier "pcVar21") (= "=") (string_literal ""\'%s\' is not a function"" (" """) (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " is not a function") (" """))) (; ";")) (expression_statement "pbVar14 = pbVar25;" (assignment_expression "pbVar14 = pbVar25" (identifier "pbVar14") (= "=") (identifier "pbVar25")) (; ";")) (goto_statement "goto LAB_000cfd64;" (goto "goto") (statement_identifier "LAB_000cfd64") (; ";")) (} "}"))) (expression_statement "iVar13 = *piVar7;" (assignment_expression "iVar13 = *piVar7" (identifier "iVar13") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "puVar16 = (undefined4 *)FUN_00044520();" (assignment_expression "puVar16 = (undefined4 *)FUN_00044520()" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)FUN_00044520()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00044520()" (identifier "FUN_00044520") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar27[4] = (int)puVar16;" (assignment_expression "piVar27[4] = (int)puVar16" (subscript_expression "piVar27[4]" (identifier "piVar27") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) (; ";")) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;" (if "if") (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 == (undefined4 *)0x0" (identifier "puVar16") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000cfae4;" (goto "goto") (statement_identifier "LAB_000cfae4") (; ";"))) (expression_statement "puVar16[8] = 1;" (assignment_expression "puVar16[8] = 1" (subscript_expression "puVar16[8]" (identifier "puVar16") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar19 = FUN_00044980();" (assignment_expression "uVar19 = FUN_00044980()" (identifier "uVar19") (= "=") (call_expression "FUN_00044980()" (identifier "FUN_00044980") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "puVar16[9] = puVar16[9] | 0x42;" (assignment_expression "puVar16[9] = puVar16[9] | 0x42" (subscript_expression "puVar16[9]" (identifier "puVar16") ([ "[") (number_literal "9") (] "]")) (= "=") (binary_expression "puVar16[9] | 0x42" (subscript_expression "puVar16[9]" (identifier "puVar16") ([ "[") (number_literal "9") (] "]")) (| "|") (number_literal "0x42"))) (; ";")) (expression_statement "*puVar16 = uVar19;" (assignment_expression "*puVar16 = uVar19" (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) (= "=") (identifier "uVar19")) (; ";")) (expression_statement "*(undefined2 *)(puVar16 + 0xb) = 200;" (assignment_expression "*(undefined2 *)(puVar16 + 0xb) = 200" (pointer_expression "*(undefined2 *)(puVar16 + 0xb)" (* "*") (cast_expression "(undefined2 *)(puVar16 + 0xb)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 0xb)" (( "(") (binary_expression "puVar16 + 0xb" (identifier "puVar16") (+ "+") (number_literal "0xb")) () ")")))) (= "=") (number_literal "200")) (; ";")) (expression_statement "*(undefined2 *)(puVar16 + 10) = 0xffff;" (assignment_expression "*(undefined2 *)(puVar16 + 10) = 0xffff" (pointer_expression "*(undefined2 *)(puVar16 + 10)" (* "*") (cast_expression "(undefined2 *)(puVar16 + 10)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar16 + 10)" (( "(") (binary_expression "puVar16 + 10" (identifier "puVar16") (+ "+") (number_literal "10")) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (expression_statement "piVar15 = (int *)FUN_0005a810();" (assignment_expression "piVar15 = (int *)FUN_0005a810()" (identifier "piVar15") (= "=") (cast_expression "(int *)FUN_0005a810()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0005a810()" (identifier "FUN_0005a810") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "piVar27[5] = (int)piVar15;" (assignment_expression "piVar27[5] = (int)piVar15" (subscript_expression "piVar27[5]" (identifier "piVar27") ([ "[") (number_literal "5") (] "]")) (= "=") (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15"))) (; ";")) (if_statement "if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;" (if "if") (parenthesized_expression "(*(char *)(iVar13 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar13 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar13 + 0x4d)" (* "*") (cast_expression "(char *)(iVar13 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + 0x4d)" (( "(") (binary_expression "iVar13 + 0x4d" (identifier "iVar13") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (goto_statement "goto LAB_000cfae4;" (goto "goto") (statement_identifier "LAB_000cfae4") (; ";"))) (expression_statement "bVar11 = (char)piVar15[1] + 0x85;" (assignment_expression "bVar11 = (char)piVar15[1] + 0x85" (identifier "bVar11") (= "=") (binary_expression "(char)piVar15[1] + 0x85" (cast_expression "(char)piVar15[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "piVar15[1]" (identifier "piVar15") ([ "[") (number_literal "1") (] "]"))) (+ "+") (number_literal "0x85"))) (; ";")) (if_statement "if (1 < bVar11) {\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }" (if "if") (parenthesized_expression "(1 < bVar11)" (( "(") (binary_expression "1 < bVar11" (number_literal "1") (< "<") (identifier "bVar11")) () ")")) (compound_statement "{\n                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;\n                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";\n                  iVar13 = piVar7[0x41];\n                  piVar7[0x41] = (int)piVar8;\n                  if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }\n                  goto LAB_000cfc05;\n                }" ({ "{") (if_statement "if (2 < (uint)puVar16[8]) goto LAB_000cffd0;" (if "if") (parenthesized_expression "(2 < (uint)puVar16[8])" (( "(") (binary_expression "2 < (uint)puVar16[8]" (number_literal "2") (< "<") (cast_expression "(uint)puVar16[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar16[8]" (identifier "puVar16") ([ "[") (number_literal "8") (] "]")))) () ")")) (goto_statement "goto LAB_000cffd0;" (goto "goto") (statement_identifier "LAB_000cffd0") (; ";"))) (expression_statement "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";" (assignment_expression "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s"" (subscript_expression "piVar8[iVar28 * 4 + 5]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "5")) (] "]")) (= "=") (cast_expression "(int)"circular reference: %s"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""circular reference: %s"" (" """) (string_content "circular reference: %s") (" """)))) (; ";")) (expression_statement "iVar13 = piVar7[0x41];" (assignment_expression "iVar13 = piVar7[0x41]" (identifier "iVar13") (= "=") (subscript_expression "piVar7[0x41]" (identifier "piVar7") ([ "[") (number_literal "0x41") (] "]"))) (; ";")) (expression_statement "piVar7[0x41] = (int)piVar8;" (assignment_expression "piVar7[0x41] = (int)piVar8" (subscript_expression "piVar7[0x41]" (identifier "piVar7") ([ "[") (number_literal "0x41") (] "]")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (if_statement "if (param_1[2] != 0) {\n                    FUN_0004a550();\n                  }" (if "if") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                    FUN_0004a550();\n                  }" ({ "{") (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" (identifier "FUN_0004a550") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (goto_statement "goto LAB_000cfc05;" (goto "goto") (statement_identifier "LAB_000cfc05") (; ";")) (} "}"))) (expression_statement "piVar9 = (int *)piVar15[8];" (assignment_expression "piVar9 = (int *)piVar15[8]" (identifier "piVar9") (= "=") (cast_expression "(int *)piVar15[8]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar15[8]" (identifier "piVar15") ([ "[") (number_literal "8") (] "]")))) (; ";")) (if_statement "if (*piVar9 < 1) goto LAB_000cfecc;" (if "if") (parenthesized_expression "(*piVar9 < 1)" (( "(") (binary_expression "*piVar9 < 1" (pointer_expression "*piVar9" (* "*") (identifier "piVar9")) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_000cfecc;" (goto "goto") (statement_identifier "LAB_000cfecc") (; ";"))) (expression_statement "piVar23 = piVar9 + 3;" (assignment_expression "piVar23 = piVar9 + 3" (identifier "piVar23") (= "=") (binary_expression "piVar9 + 3" (identifier "piVar9") (+ "+") (number_literal "3"))) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (goto_statement "goto LAB_000cfe32;" (goto "goto") (statement_identifier "LAB_000cfe32") (; ";")) (} "}"))) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" (identifier "iVar13") (= "=") (number_literal "1")) (; ";")) (while_statement "while (pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }" (while "while") (parenthesized_expression "(pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]])" (( "(") (comma_expression "pbVar24 = pbVar25 + iVar13,\n                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]" (assignment_expression "pbVar24 = pbVar25 + iVar13" (identifier "pbVar24") (= "=") (binary_expression "pbVar25 + iVar13" (identifier "pbVar25") (+ "+") (identifier "iVar13"))) (, ",") (binary_expression "(&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]" (subscript_expression "(&DAT_0012c6e0)[*pbVar24]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (] "]")) (== "==") (subscript_expression "(&DAT_0012c6e0)[pbVar14[iVar13]]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (subscript_expression "pbVar14[iVar13]" (identifier "pbVar14") ([ "[") (identifier "iVar13") (] "]")) (] "]")))) () ")")) (compound_statement "{\n                iVar13 = iVar13 + 1;\n                if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }\n              }" ({ "{") (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*pbVar24 == 0) {\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }" (if "if") (parenthesized_expression "(*pbVar24 == 0)" (( "(") (binary_expression "*pbVar24 == 0" (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];\n                  goto joined_r0x000cfd51;\n                }" ({ "{") (expression_statement "pcVar21 = (char *)piVar8[iVar28 * 4 + 5];" (assignment_expression "pcVar21 = (char *)piVar8[iVar28 * 4 + 5]" (identifier "pcVar21") (= "=") (cast_expression "(char *)piVar8[iVar28 * 4 + 5]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[iVar28 * 4 + 5]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "5")) (] "]")))) (; ";")) (goto_statement "goto joined_r0x000cfd51;" (goto "goto") (statement_identifier "joined_r0x000cfd51") (; ";")) (} "}"))) (} "}"))) (} "}"))) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" (identifier "iVar28") (= "=") (binary_expression "iVar28 + 1" (identifier "iVar28") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar8 != iVar28)" (( "(") (binary_expression "*piVar8 != iVar28" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (!= "!=") (identifier "iVar28")) () ")")) (; ";")) (} "}"))) (} "}"))) (if_statement "if (piVar27[4] == 0) goto LAB_000cfcb3;" (if "if") (parenthesized_expression "(piVar27[4] == 0)" (( "(") (binary_expression "piVar27[4] == 0" (subscript_expression "piVar27[4]" (identifier "piVar27") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cfcb3;" (goto "goto") (statement_identifier "LAB_000cfcb3") (; ";"))) (expression_statement "iVar28 = FUN_000757e0();" (assignment_expression "iVar28 = FUN_000757e0()" (identifier "iVar28") (= "=") (call_expression "FUN_000757e0()" (identifier "FUN_000757e0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar28 == 0) goto LAB_000cf910;" (if "if") (parenthesized_expression "(iVar28 == 0)" (( "(") (binary_expression "iVar28 == 0" (identifier "iVar28") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cf910;" (goto "goto") (statement_identifier "LAB_000cf910") (; ";"))) (goto_statement "goto LAB_000cfae4;" (goto "goto") (statement_identifier "LAB_000cfae4") (; ";")) (} "}"))) (labeled_statement "LAB_000cf928:\n    if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }" (statement_identifier "LAB_000cf928") (: ":") (if_statement "if (*(char *)(iVar3 + 0x4d) == '\0') {\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }" (if "if") (parenthesized_expression "(*(char *)(iVar3 + 0x4d) == '\0')" (( "(") (binary_expression "*(char *)(iVar3 + 0x4d) == '\0'" (pointer_expression "*(char *)(iVar3 + 0x4d)" (* "*") (cast_expression "(char *)(iVar3 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x4d)" (( "(") (binary_expression "iVar3 + 0x4d" (identifier "iVar3") (+ "+") (number_literal "0x4d")) () ")")))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      piVar27 = (int *)param_2[8];\n      local_40 = piVar27 + 0x13;\n      if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }\n      if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }\n      local_40 = (int *)0x0;\n      piVar27 = (int *)*param_2;\n      goto LAB_000d07de;\n    }" ({ "{") (expression_statement "piVar27 = (int *)param_2[8];" (assignment_expression "piVar27 = (int *)param_2[8]" (identifier "piVar27") (= "=") (cast_expression "(int *)param_2[8]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_2[8]" (identifier "param_2") ([ "[") (number_literal "8") (] "]")))) (; ";")) (expression_statement "local_40 = piVar27 + 0x13;" (assignment_expression "local_40 = piVar27 + 0x13" (identifier "local_40") (= "=") (binary_expression "piVar27 + 0x13" (identifier "piVar27") (+ "+") (number_literal "0x13"))) (; ";")) (if_statement "if (1 < *piVar27) {\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }" (if "if") (parenthesized_expression "(1 < *piVar27)" (( "(") (binary_expression "1 < *piVar27" (number_literal "1") (< "<") (pointer_expression "*piVar27" (* "*") (identifier "piVar27"))) () ")")) (compound_statement "{\n        local_60 = (char *)0x1;\n        do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);\n      }" ({ "{") (expression_statement "local_60 = (char *)0x1;" (assignment_expression "local_60 = (char *)0x1" (identifier "local_60") (= "=") (cast_expression "(char *)0x1" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x1"))) (; ";")) (do_statement "do {\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        } while (bVar29);" (do "do") (compound_statement "{\n          iVar28 = local_40[4];\n          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }\nLAB_000d0070:\n          local_40 = local_40 + 0x11;\n          bVar29 = (int)local_60 < *piVar27 + -1;\n          local_60 = (char *)((int)local_60 + 1);\n        }" ({ "{") (expression_statement "iVar28 = local_40[4];" (assignment_expression "iVar28 = local_40[4]" (identifier "iVar28") (= "=") (subscript_expression "local_40[4]" (identifier "local_40") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((local_40[-0xd] != 0) && (iVar28 != 0)) {\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }" (if "if") (parenthesized_expression "((local_40[-0xd] != 0) && (iVar28 != 0))" (( "(") (binary_expression "(local_40[-0xd] != 0) && (iVar28 != 0)" (parenthesized_expression "(local_40[-0xd] != 0)" (( "(") (binary_expression "local_40[-0xd] != 0" (subscript_expression "local_40[-0xd]" (identifier "local_40") ([ "[") (number_literal "-0xd") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar28 != 0)" (( "(") (binary_expression "iVar28 != 0" (identifier "iVar28") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n            bVar11 = *(byte *)(local_40 + 9);\n            iVar13 = local_40[0xb];\n            bVar29 = (bVar11 & 0x20) != 0;\n            if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }\n            local_64 = (byte *)local_40[0xc];\n            if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }\n            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }\n          }" ({ "{") (expression_statement "bVar11 = *(byte *)(local_40 + 9);" (assignment_expression "bVar11 = *(byte *)(local_40 + 9)" (identifier "bVar11") (= "=") (pointer_expression "*(byte *)(local_40 + 9)" (* "*") (cast_expression "(byte *)(local_40 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_40 + 9)" (( "(") (binary_expression "local_40 + 9" (identifier "local_40") (+ "+") (number_literal "9")) () ")"))))) (; ";")) (expression_statement "iVar13 = local_40[0xb];" (assignment_expression "iVar13 = local_40[0xb]" (identifier "iVar13") (= "=") (subscript_expression "local_40[0xb]" (identifier "local_40") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "bVar29 = (bVar11 & 0x20) != 0;" (assignment_expression "bVar29 = (bVar11 & 0x20) != 0" (identifier "bVar29") (= "=") (binary_expression "(bVar11 & 0x20) != 0" (parenthesized_expression "(bVar11 & 0x20)" (( "(") (binary_expression "bVar11 & 0x20" (identifier "bVar11") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0"))) (; ";")) (if_statement "if ((bVar11 & 4) != 0) {\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }" (if "if") (parenthesized_expression "((bVar11 & 4) != 0)" (( "(") (binary_expression "(bVar11 & 4) != 0" (parenthesized_expression "(bVar11 & 4)" (( "(") (binary_expression "bVar11 & 4" (identifier "bVar11") (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }\n              iVar13 = 0;\n              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;\n              do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));\n              iVar13 = local_40[0xb];\n            }" ({ "{") (if_statement "if ((iVar13 != 0) || (local_40[0xc] != 0)) {\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }" (if "if") (parenthesized_expression "((iVar13 != 0) || (local_40[0xc] != 0))" (( "(") (binary_expression "(iVar13 != 0) || (local_40[0xc] != 0)" (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(local_40[0xc] != 0)" (( "(") (binary_expression "local_40[0xc] != 0" (subscript_expression "local_40[0xc]" (identifier "local_40") ([ "[") (number_literal "0xc") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                pcVar21 = "a NATURAL join may not have an ON or USING clause";\n                goto LAB_000cfad7;\n              }" ({ "{") (expression_statement "pcVar21 = "a NATURAL join may not have an ON or USING clause";" (assignment_expression "pcVar21 = "a NATURAL join may not have an ON or USING clause"" (identifier "pcVar21") (= "=") (string_literal ""a NATURAL join may not have an ON or USING clause"" (" """) (string_content "a NATURAL join may not have an ON or USING clause") (" """))) (; ";")) (goto_statement "goto LAB_000cfad7;" (goto "goto") (statement_identifier "LAB_000cfad7") (; ";")) (} "}"))) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;" (if "if") (parenthesized_expression "(*(short *)(iVar28 + 0x2a) < 1)" (( "(") (binary_expression "*(short *)(iVar28 + 0x2a) < 1" (pointer_expression "*(short *)(iVar28 + 0x2a)" (* "*") (cast_expression "(short *)(iVar28 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x2a)" (( "(") (binary_expression "iVar28 + 0x2a" (identifier "iVar28") (+ "+") (number_literal "0x2a")) () ")")))) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_000d0070;" (goto "goto") (statement_identifier "LAB_000d0070") (; ";"))) (do_statement "do {\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              } while (iVar13 < *(short *)(iVar28 + 0x2a));" (do "do") (compound_statement "{\n                iVar17 = FUN_00039c70(local_2c,&local_28);\n                if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }\n                iVar13 = iVar13 + 1;\n              }" ({ "{") (expression_statement "iVar17 = FUN_00039c70(local_2c,&local_28);" (assignment_expression "iVar17 = FUN_00039c70(local_2c,&local_28)" (identifier "iVar17") (= "=") (call_expression "FUN_00039c70(local_2c,&local_28)" (identifier "FUN_00039c70") (argument_list "(local_2c,&local_28)" (( "(") (identifier "local_2c") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (if_statement "if (iVar17 != 0) {\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }" (if "if") (parenthesized_expression "(iVar17 != 0)" (( "(") (binary_expression "iVar17 != 0" (identifier "iVar17") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                }" ({ "{") (expression_statement "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);" (call_expression "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9)" (identifier "FUN_00075e20") (argument_list "(local_28,local_60,iVar13,bVar29,param_2 + 9)" (( "(") (identifier "local_28") (, ",") (identifier "local_60") (, ",") (identifier "iVar13") (, ",") (identifier "bVar29") (, ",") (binary_expression "param_2 + 9" (identifier "param_2") (+ "+") (number_literal "9")) () ")"))) (; ";")) (} "}"))) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar13 < *(short *)(iVar28 + 0x2a))" (( "(") (binary_expression "iVar13 < *(short *)(iVar28 + 0x2a)" (identifier "iVar13") (< "<") (pointer_expression "*(short *)(iVar28 + 0x2a)" (* "*") (cast_expression "(short *)(iVar28 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x2a)" (( "(") (binary_expression "iVar28 + 0x2a" (identifier "iVar28") (+ "+") (number_literal "0x2a")) () ")"))))) () ")")) (; ";")) (expression_statement "iVar13 = local_40[0xb];" (assignment_expression "iVar13 = local_40[0xb]" (identifier "iVar13") (= "=") (subscript_expression "local_40[0xb]" (identifier "local_40") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (} "}"))) (expression_statement "local_64 = (byte *)local_40[0xc];" (assignment_expression "local_64 = (byte *)local_40[0xc]" (identifier "local_64") (= "=") (cast_expression "(byte *)local_40[0xc]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_40[0xc]" (identifier "local_40") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (if_statement "if (iVar13 != 0) {\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }\n              if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }\n              iVar13 = FUN_000569c0();\n              param_2[9] = iVar13;\n              local_40[0xb] = 0;\n              local_64 = (byte *)local_40[0xc];\n            }" ({ "{") (if_statement "if (local_64 != (byte *)0x0) {\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }" (if "if") (parenthesized_expression "(local_64 != (byte *)0x0)" (( "(") (binary_expression "local_64 != (byte *)0x0" (identifier "local_64") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                pcVar21 = "cannot have both ON and USING clauses in the same join";\n                goto LAB_000cfad7;\n              }" ({ "{") (expression_statement "pcVar21 = "cannot have both ON and USING clauses in the same join";" (assignment_expression "pcVar21 = "cannot have both ON and USING clauses in the same join"" (identifier "pcVar21") (= "=") (string_literal ""cannot have both ON and USING clauses in the same join"" (" """) (string_content "cannot have both ON and USING clauses in the same join") (" """))) (; ";")) (goto_statement "goto LAB_000cfad7;" (goto "goto") (statement_identifier "LAB_000cfad7") (; ";")) (} "}"))) (if_statement "if ((bVar11 & 0x20) != 0) {\n                FUN_00039da0();\n              }" (if "if") (parenthesized_expression "((bVar11 & 0x20) != 0)" (( "(") (binary_expression "(bVar11 & 0x20) != 0" (parenthesized_expression "(bVar11 & 0x20)" (( "(") (binary_expression "bVar11 & 0x20" (identifier "bVar11") (& "&") (number_literal "0x20")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                FUN_00039da0();\n              }" ({ "{") (expression_statement "FUN_00039da0();" (call_expression "FUN_00039da0()" (identifier "FUN_00039da0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar13 = FUN_000569c0();" (assignment_expression "iVar13 = FUN_000569c0()" (identifier "iVar13") (= "=") (call_expression "FUN_000569c0()" (identifier "FUN_000569c0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "param_2[9] = iVar13;" (assignment_expression "param_2[9] = iVar13" (subscript_expression "param_2[9]" (identifier "param_2") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "local_40[0xb] = 0;" (assignment_expression "local_40[0xb] = 0" (subscript_expression "local_40[0xb]" (identifier "local_40") ([ "[") (number_literal "0xb") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_64 = (byte *)local_40[0xc];" (assignment_expression "local_64 = (byte *)local_40[0xc]" (identifier "local_64") (= "=") (cast_expression "(byte *)local_40[0xc]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_40[0xc]" (identifier "local_40") ([ "[") (number_literal "0xc") (] "]")))) (; ";")) (} "}"))) (if_statement "if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }" (if "if") (parenthesized_expression "((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4)))" (( "(") (binary_expression "(local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))" (parenthesized_expression "(local_64 != (byte *)0x0)" (( "(") (binary_expression "local_64 != (byte *)0x0" (identifier "local_64") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(local_70 = 0, 0 < *(int *)((int)local_64 + 4))" (( "(") (comma_expression "local_70 = 0, 0 < *(int *)((int)local_64 + 4)" (assignment_expression "local_70 = 0" (identifier "local_70") (= "=") (number_literal "0")) (, ",") (binary_expression "0 < *(int *)((int)local_64 + 4)" (number_literal "0") (< "<") (pointer_expression "*(int *)((int)local_64 + 4)" (* "*") (cast_expression "(int *)((int)local_64 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_64 + 4)" (( "(") (binary_expression "(int)local_64 + 4" (cast_expression "(int)local_64" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_64")) (+ "+") (number_literal "4")) () ")")))))) () ")"))) () ")")) (compound_statement "{\nLAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);\n              if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }\nLAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";\n              goto LAB_000cfad7;\n            }" ({ "{") (labeled_statement "LAB_000cfa10:\n              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);" (statement_identifier "LAB_000cfa10") (: ":") (expression_statement "pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);" (assignment_expression "pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8)" (identifier "pbVar25") (= "=") (pointer_expression "*(byte **)(*(int *)local_64 + local_70 * 8)" (* "*") (cast_expression "(byte **)(*(int *)local_64 + local_70 * 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)local_64 + local_70 * 8)" (( "(") (binary_expression "*(int *)local_64 + local_70 * 8" (pointer_expression "*(int *)local_64" (* "*") (cast_expression "(int *)local_64" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "local_64"))) (+ "+") (binary_expression "local_70 * 8" (identifier "local_70") (* "*") (number_literal "8"))) () ")"))))) (; ";"))) (if_statement "if (0 < *(short *)(iVar28 + 0x2a)) {\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }" (if "if") (parenthesized_expression "(0 < *(short *)(iVar28 + 0x2a))" (( "(") (binary_expression "0 < *(short *)(iVar28 + 0x2a)" (number_literal "0") (< "<") (pointer_expression "*(short *)(iVar28 + 0x2a)" (* "*") (cast_expression "(short *)(iVar28 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x2a)" (( "(") (binary_expression "iVar28 + 0x2a" (identifier "iVar28") (+ "+") (number_literal "0x2a")) () ")"))))) () ")")) (compound_statement "{\n                iVar13 = 0;\n                do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));\n              }" ({ "{") (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                } while (iVar13 != *(short *)(iVar28 + 0x2a));" (do "do") (compound_statement "{\n                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);\n                  bVar11 = *pbVar14;\n                  pbVar24 = pbVar25;\n                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }\n                  iVar13 = iVar13 + 1;\n                }" ({ "{") (expression_statement "pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);" (assignment_expression "pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10)" (identifier "pbVar14") (= "=") (pointer_expression "*(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10)" (* "*") (cast_expression "(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(iVar28 + 4) + iVar13 * 0x10)" (( "(") (binary_expression "*(int *)(iVar28 + 4) + iVar13 * 0x10" (pointer_expression "*(int *)(iVar28 + 4)" (* "*") (cast_expression "(int *)(iVar28 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 4)" (( "(") (binary_expression "iVar28 + 4" (identifier "iVar28") (+ "+") (number_literal "4")) () ")")))) (+ "+") (binary_expression "iVar13 * 0x10" (identifier "iVar13") (* "*") (number_literal "0x10"))) () ")"))))) (; ";")) (expression_statement "bVar11 = *pbVar14;" (assignment_expression "bVar11 = *pbVar14" (identifier "bVar11") (= "=") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14"))) (; ";")) (expression_statement "pbVar24 = pbVar25;" (assignment_expression "pbVar24 = pbVar25" (identifier "pbVar24") (= "=") (identifier "pbVar25")) (; ";")) (if_statement "if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }" (if "if") (parenthesized_expression "((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11])" (( "(") (binary_expression "(&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]" (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (] "]")) (== "==") (subscript_expression "(&DAT_0012c6e0)[bVar11]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (identifier "bVar11") (] "]"))) () ")")) (compound_statement "{\n                    do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);\n                  }" ({ "{") (do_statement "do {\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);" (do "do") (compound_statement "{\n                      if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }\n                      pbVar14 = pbVar14 + 1;\n                      pbVar24 = pbVar24 + 1;\n                      bVar11 = *pbVar14;\n                    }" ({ "{") (if_statement "if (bVar11 == 0) {\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }" (if "if") (parenthesized_expression "(bVar11 == 0)" (( "(") (binary_expression "bVar11 == 0" (identifier "bVar11") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                        iVar17 = FUN_00039c70(local_2c,&local_28);\n                        if (iVar17 == 0) goto LAB_000cfac6;\n                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);\n                        local_70 = local_70 + 1;\n                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;\n                        goto LAB_000d0070;\n                      }" ({ "{") (expression_statement "iVar17 = FUN_00039c70(local_2c,&local_28);" (assignment_expression "iVar17 = FUN_00039c70(local_2c,&local_28)" (identifier "iVar17") (= "=") (call_expression "FUN_00039c70(local_2c,&local_28)" (identifier "FUN_00039c70") (argument_list "(local_2c,&local_28)" (( "(") (identifier "local_2c") (, ",") (pointer_expression "&local_28" (& "&") (identifier "local_28")) () ")")))) (; ";")) (if_statement "if (iVar17 == 0) goto LAB_000cfac6;" (if "if") (parenthesized_expression "(iVar17 == 0)" (( "(") (binary_expression "iVar17 == 0" (identifier "iVar17") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cfac6;" (goto "goto") (statement_identifier "LAB_000cfac6") (; ";"))) (expression_statement "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);" (call_expression "FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9)" (identifier "FUN_00075e20") (argument_list "(local_28,local_60,iVar13,bVar29,param_2 + 9)" (( "(") (identifier "local_28") (, ",") (identifier "local_60") (, ",") (identifier "iVar13") (, ",") (identifier "bVar29") (, ",") (binary_expression "param_2 + 9" (identifier "param_2") (+ "+") (number_literal "9")) () ")"))) (; ";")) (expression_statement "local_70 = local_70 + 1;" (assignment_expression "local_70 = local_70 + 1" (identifier "local_70") (= "=") (binary_expression "local_70 + 1" (identifier "local_70") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;" (if "if") (parenthesized_expression "(local_70 < *(int *)((int)local_64 + 4))" (( "(") (binary_expression "local_70 < *(int *)((int)local_64 + 4)" (identifier "local_70") (< "<") (pointer_expression "*(int *)((int)local_64 + 4)" (* "*") (cast_expression "(int *)((int)local_64 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_64 + 4)" (( "(") (binary_expression "(int)local_64 + 4" (cast_expression "(int)local_64" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_64")) (+ "+") (number_literal "4")) () ")"))))) () ")")) (goto_statement "goto LAB_000cfa10;" (goto "goto") (statement_identifier "LAB_000cfa10") (; ";"))) (goto_statement "goto LAB_000d0070;" (goto "goto") (statement_identifier "LAB_000d0070") (; ";")) (} "}"))) (expression_statement "pbVar14 = pbVar14 + 1;" (assignment_expression "pbVar14 = pbVar14 + 1" (identifier "pbVar14") (= "=") (binary_expression "pbVar14 + 1" (identifier "pbVar14") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar24 = pbVar24 + 1;" (assignment_expression "pbVar24 = pbVar24 + 1" (identifier "pbVar24") (= "=") (binary_expression "pbVar24 + 1" (identifier "pbVar24") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar11 = *pbVar14;" (assignment_expression "bVar11 = *pbVar14" (identifier "bVar11") (= "=") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24])" (( "(") (binary_expression "(&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]" (subscript_expression "(&DAT_0012c6e0)[bVar11]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (identifier "bVar11") (] "]")) (== "==") (subscript_expression "(&DAT_0012c6e0)[*pbVar24]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*pbVar24" (* "*") (identifier "pbVar24")) (] "]"))) () ")")) (; ";")) (} "}"))) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar13 != *(short *)(iVar28 + 0x2a))" (( "(") (binary_expression "iVar13 != *(short *)(iVar28 + 0x2a)" (identifier "iVar13") (!= "!=") (pointer_expression "*(short *)(iVar28 + 0x2a)" (* "*") (cast_expression "(short *)(iVar28 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 + 0x2a)" (( "(") (binary_expression "iVar28 + 0x2a" (identifier "iVar28") (+ "+") (number_literal "0x2a")) () ")"))))) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_000cfac6:\n              pcVar21 = "cannot join using column %s - column not present in both tables";" (statement_identifier "LAB_000cfac6") (: ":") (expression_statement "pcVar21 = "cannot join using column %s - column not present in both tables";" (assignment_expression "pcVar21 = "cannot join using column %s - column not present in both tables"" (identifier "pcVar21") (= "=") (string_literal ""cannot join using column %s - column not present in both tables"" (" """) (string_content "cannot join using column %s - column not present in both tables") (" """))) (; ";"))) (goto_statement "goto LAB_000cfad7;" (goto "goto") (statement_identifier "LAB_000cfad7") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_000d0070:\n          local_40 = local_40 + 0x11;" (statement_identifier "LAB_000d0070") (: ":") (expression_statement "local_40 = local_40 + 0x11;" (assignment_expression "local_40 = local_40 + 0x11" (identifier "local_40") (= "=") (binary_expression "local_40 + 0x11" (identifier "local_40") (+ "+") (number_literal "0x11"))) (; ";"))) (expression_statement "bVar29 = (int)local_60 < *piVar27 + -1;" (assignment_expression "bVar29 = (int)local_60 < *piVar27 + -1" (identifier "bVar29") (= "=") (binary_expression "(int)local_60 < *piVar27 + -1" (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60")) (< "<") (binary_expression "*piVar27 + -1" (pointer_expression "*piVar27" (* "*") (identifier "piVar27")) (+ "+") (number_literal "-1")))) (; ";")) (expression_statement "local_60 = (char *)((int)local_60 + 1);" (assignment_expression "local_60 = (char *)((int)local_60 + 1)" (identifier "local_60") (= "=") (cast_expression "(char *)((int)local_60 + 1)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_60 + 1)" (( "(") (binary_expression "(int)local_60 + 1" (cast_expression "(int)local_60" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_60")) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar29)" (( "(") (identifier "bVar29") () ")")) (; ";")) (} "}"))) (if_statement "if (0 < *piVar6) {\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }" (if "if") (parenthesized_expression "(0 < *piVar6)" (( "(") (binary_expression "0 < *piVar6" (number_literal "0") (< "<") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) () ")")) (compound_statement "{\n        pcVar21 = (char *)piVar6[1];\n        cVar12 = *pcVar21;\n        if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }\n        local_44 = 0;\n        piVar27 = (int *)0x0;\n        uVar4 = *(uint *)(*piVar2 + 0x1c);\n        local_4c = piVar6 + 1;\n        do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );\n      }" ({ "{") (expression_statement "pcVar21 = (char *)piVar6[1];" (assignment_expression "pcVar21 = (char *)piVar6[1]" (identifier "pcVar21") (= "=") (cast_expression "(char *)piVar6[1]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar6[1]" (identifier "piVar6") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "cVar12 = *pcVar21;" (assignment_expression "cVar12 = *pcVar21" (identifier "cVar12") (= "=") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21"))) (; ";")) (if_statement "if (cVar12 == -0x58) {\n          local_40 = (int *)0x0;\n        }\n        else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }" (if "if") (parenthesized_expression "(cVar12 == -0x58)" (( "(") (binary_expression "cVar12 == -0x58" (identifier "cVar12") (== "==") (number_literal "-0x58")) () ")")) (compound_statement "{\n          local_40 = (int *)0x0;\n        }" ({ "{") (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" (identifier "local_40") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }" (else "else") (compound_statement "{\n          piVar27 = piVar6 + 6;\n          iVar28 = 0;\n          local_40 = (int *)0x0;\n          pcVar18 = pcVar21;\n          cVar22 = cVar12;\n          do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);\n        }" ({ "{") (expression_statement "piVar27 = piVar6 + 6;" (assignment_expression "piVar27 = piVar6 + 6" (identifier "piVar27") (= "=") (binary_expression "piVar6 + 6" (identifier "piVar6") (+ "+") (number_literal "6"))) (; ";")) (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" (identifier "iVar28") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" (identifier "local_40") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "pcVar18 = pcVar21;" (assignment_expression "pcVar18 = pcVar21" (identifier "pcVar18") (= "=") (identifier "pcVar21")) (; ";")) (expression_statement "cVar22 = cVar12;" (assignment_expression "cVar22 = cVar12" (identifier "cVar22") (= "=") (identifier "cVar12")) (; ";")) (do_statement "do {\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          } while (cVar22 != -0x58);" (do "do") (compound_statement "{\n            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;\n            iVar28 = iVar28 + 1;\n            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));\n            if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }\n            pcVar18 = (char *)*piVar27;\n            piVar27 = piVar27 + 5;\n            cVar22 = *pcVar18;\n          }" ({ "{") (if_statement "if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;" (if "if") (parenthesized_expression "((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58))" (( "(") (binary_expression "(cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)" (parenthesized_expression "(cVar22 == -0x7e)" (( "(") (binary_expression "cVar22 == -0x7e" (identifier "cVar22") (== "==") (number_literal "-0x7e")) () ")")) (&& "&&") (parenthesized_expression "(**(char **)(pcVar18 + 0x10) == -0x58)" (( "(") (binary_expression "**(char **)(pcVar18 + 0x10) == -0x58" (pointer_expression "**(char **)(pcVar18 + 0x10)" (* "*") (pointer_expression "*(char **)(pcVar18 + 0x10)" (* "*") (cast_expression "(char **)(pcVar18 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar18 + 0x10)" (( "(") (binary_expression "pcVar18 + 0x10" (identifier "pcVar18") (+ "+") (number_literal "0x10")) () ")"))))) (== "==") (number_literal "-0x58")) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" (identifier "iVar28") (= "=") (binary_expression "iVar28 + 1" (identifier "iVar28") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));" (assignment_expression "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4))" (identifier "local_40") (= "=") (cast_expression "(int *)((uint)local_40 | *(uint *)(pcVar18 + 4))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)local_40 | *(uint *)(pcVar18 + 4))" (( "(") (binary_expression "(uint)local_40 | *(uint *)(pcVar18 + 4)" (cast_expression "(uint)local_40" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_40")) (| "|") (pointer_expression "*(uint *)(pcVar18 + 4)" (* "*") (cast_expression "(uint *)(pcVar18 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar18 + 4)" (( "(") (binary_expression "pcVar18 + 4" (identifier "pcVar18") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (if_statement "if (iVar28 == *piVar6) {\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }" (if "if") (parenthesized_expression "(iVar28 == *piVar6)" (( "(") (binary_expression "iVar28 == *piVar6" (identifier "iVar28") (== "==") (pointer_expression "*piVar6" (* "*") (identifier "piVar6"))) () ")")) (compound_statement "{\n              piVar27 = (int *)*param_2;\n              goto LAB_000d07de;\n            }" ({ "{") (expression_statement "piVar27 = (int *)*param_2;" (assignment_expression "piVar27 = (int *)*param_2" (identifier "piVar27") (= "=") (cast_expression "(int *)*param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (goto_statement "goto LAB_000d07de;" (goto "goto") (statement_identifier "LAB_000d07de") (; ";")) (} "}"))) (expression_statement "pcVar18 = (char *)*piVar27;" (assignment_expression "pcVar18 = (char *)*piVar27" (identifier "pcVar18") (= "=") (cast_expression "(char *)*piVar27" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar27" (* "*") (identifier "piVar27")))) (; ";")) (expression_statement "piVar27 = piVar27 + 5;" (assignment_expression "piVar27 = piVar27 + 5" (identifier "piVar27") (= "=") (binary_expression "piVar27 + 5" (identifier "piVar27") (+ "+") (number_literal "5"))) (; ";")) (expression_statement "cVar22 = *pcVar18;" (assignment_expression "cVar22 = *pcVar18" (identifier "cVar22") (= "=") (pointer_expression "*pcVar18" (* "*") (identifier "pcVar18"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(cVar22 != -0x58)" (( "(") (binary_expression "cVar22 != -0x58" (identifier "cVar22") (!= "!=") (number_literal "-0x58")) () ")")) (; ";")) (} "}")))) (expression_statement "local_44 = 0;" (assignment_expression "local_44 = 0" (identifier "local_44") (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar27 = (int *)0x0;" (assignment_expression "piVar27 = (int *)0x0" (identifier "piVar27") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "uVar4 = *(uint *)(*piVar2 + 0x1c);" (assignment_expression "uVar4 = *(uint *)(*piVar2 + 0x1c)" (identifier "uVar4") (= "=") (pointer_expression "*(uint *)(*piVar2 + 0x1c)" (* "*") (cast_expression "(uint *)(*piVar2 + 0x1c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar2 + 0x1c)" (( "(") (binary_expression "*piVar2 + 0x1c" (pointer_expression "*piVar2" (* "*") (identifier "piVar2")) (+ "+") (number_literal "0x1c")) () ")"))))) (; ";")) (expression_statement "local_4c = piVar6 + 1;" (assignment_expression "local_4c = piVar6 + 1" (identifier "local_4c") (= "=") (binary_expression "piVar6 + 1" (identifier "piVar6") (+ "+") (number_literal "1"))) (; ";")) (do_statement "do {\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        } while( true );" (do "do") (compound_statement "{\n          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));\n          if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }\n          local_44 = local_44 + 1;\n          local_4c = local_4c + 5;\n          if (*piVar6 <= local_44) goto LAB_000d07cd;\n          pcVar21 = (char *)*local_4c;\n          cVar12 = *pcVar21;\n        }" ({ "{") (expression_statement "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));" (assignment_expression "local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4))" (identifier "local_40") (= "=") (cast_expression "(int *)((uint)local_40 | *(uint *)(pcVar21 + 4))" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((uint)local_40 | *(uint *)(pcVar21 + 4))" (( "(") (binary_expression "(uint)local_40 | *(uint *)(pcVar21 + 4)" (cast_expression "(uint)local_40" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_40")) (| "|") (pointer_expression "*(uint *)(pcVar21 + 4)" (* "*") (cast_expression "(uint *)(pcVar21 + 4)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 4)" (( "(") (binary_expression "pcVar21 + 4" (identifier "pcVar21") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (if_statement "if (cVar12 == -0x58) {\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }\n          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" (if "if") (parenthesized_expression "(cVar12 == -0x58)" (( "(") (binary_expression "cVar12 == -0x58" (identifier "cVar12") (== "==") (number_literal "-0x58")) () ")")) (compound_statement "{\n            local_74 = (byte *)0x0;\n            if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }\n          }" ({ "{") (expression_statement "local_74 = (byte *)0x0;" (assignment_expression "local_74 = (byte *)0x0" (identifier "local_74") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (if_statement "if (*piVar5 < 1) {\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }\n            else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }" (if "if") (parenthesized_expression "(*piVar5 < 1)" (( "(") (binary_expression "*piVar5 < 1" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\nLAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");\n            }" ({ "{") (labeled_statement "LAB_000d0870:\n              FUN_00074ee0(piVar2,"no tables specified");" (statement_identifier "LAB_000d0870") (: ":") (expression_statement "FUN_00074ee0(piVar2,"no tables specified");" (call_expression "FUN_00074ee0(piVar2,"no tables specified")" (identifier "FUN_00074ee0") (argument_list "(piVar2,"no tables specified")" (( "(") (identifier "piVar2") (, ",") (string_literal ""no tables specified"" (" """) (string_content "no tables specified") (" """)) () ")"))) (; ";"))) (} "}")) (else_clause "else {\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }" (else "else") (compound_statement "{\nLAB_000d01d4:\n              bVar29 = false;\n              local_78 = 0;\n              local_80 = piVar5 + 2;\n              do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);\n              if (!bVar29) goto LAB_000d02c3;\n            }" ({ "{") (labeled_statement "LAB_000d01d4:\n              bVar29 = false;" (statement_identifier "LAB_000d01d4") (: ":") (expression_statement "bVar29 = false;" (assignment_expression "bVar29 = false" (identifier "bVar29") (= "=") (false "false")) (; ";"))) (expression_statement "local_78 = 0;" (assignment_expression "local_78 = 0" (identifier "local_78") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_80 = piVar5 + 2;" (assignment_expression "local_80 = piVar5 + 2" (identifier "local_80") (= "=") (binary_expression "piVar5 + 2" (identifier "piVar5") (+ "+") (number_literal "2"))) (; ";")) (do_statement "do {\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              } while (local_78 < *piVar5);" (do "do") (compound_statement "{\n                puVar16 = (undefined4 *)local_80[4];\n                local_88 = (byte *)local_80[5];\n                local_64 = (byte *)local_80[3];\n                if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }\n                if (*(char *)(iVar3 + 0x4d) != '\0') break;\n                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }\nLAB_000d029d:\n                local_78 = local_78 + 1;\n                local_80 = local_80 + 0x11;\n              }" ({ "{") (expression_statement "puVar16 = (undefined4 *)local_80[4];" (assignment_expression "puVar16 = (undefined4 *)local_80[4]" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)local_80[4]" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[4]" (identifier "local_80") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "local_88 = (byte *)local_80[5];" (assignment_expression "local_88 = (byte *)local_80[5]" (identifier "local_88") (= "=") (cast_expression "(byte *)local_80[5]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[5]" (identifier "local_80") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "local_64 = (byte *)local_80[3];" (assignment_expression "local_64 = (byte *)local_80[3]" (identifier "local_64") (= "=") (cast_expression "(byte *)local_80[3]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "local_80[3]" (identifier "local_80") ([ "[") (number_literal "3") (] "]")))) (; ";")) (if_statement "if (local_64 == (byte *)0x0) {\n                  local_64 = (byte *)*puVar16;\n                }" (if "if") (parenthesized_expression "(local_64 == (byte *)0x0)" (( "(") (binary_expression "local_64 == (byte *)0x0" (identifier "local_64") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                  local_64 = (byte *)*puVar16;\n                }" ({ "{") (expression_statement "local_64 = (byte *)*puVar16;" (assignment_expression "local_64 = (byte *)*puVar16" (identifier "local_64") (= "=") (cast_expression "(byte *)*puVar16" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")))) (; ";")) (} "}"))) (if_statement "if (*(char *)(iVar3 + 0x4d) != '\0') break;" (if "if") (parenthesized_expression "(*(char *)(iVar3 + 0x4d) != '\0')" (( "(") (binary_expression "*(char *)(iVar3 + 0x4d) != '\0'" (pointer_expression "*(char *)(iVar3 + 0x4d)" (* "*") (cast_expression "(char *)(iVar3 + 0x4d)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x4d)" (( "(") (binary_expression "iVar3 + 0x4d" (identifier "iVar3") (+ "+") (number_literal "0x4d")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }\n                else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }" (if "if") (parenthesized_expression "((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0))" (( "(") (binary_expression "(local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)" (parenthesized_expression "(local_88 == (byte *)0x0)" (( "(") (binary_expression "local_88 == (byte *)0x0" (identifier "local_88") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "((*(byte *)((int)local_88 + 9) & 8) == 0)" (( "(") (binary_expression "(*(byte *)((int)local_88 + 9) & 8) == 0" (parenthesized_expression "(*(byte *)((int)local_88 + 9) & 8)" (( "(") (binary_expression "*(byte *)((int)local_88 + 9) & 8" (pointer_expression "*(byte *)((int)local_88 + 9)" (* "*") (cast_expression "(byte *)((int)local_88 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_88 + 9)" (( "(") (binary_expression "(int)local_88 + 9" (cast_expression "(int)local_88" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88")) (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                  if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }\n                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }\n                }" ({ "{") (if_statement "if (local_74 == (byte *)0x0) {\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }" (if "if") (parenthesized_expression "(local_74 == (byte *)0x0)" (( "(") (binary_expression "local_74 == (byte *)0x0" (identifier "local_74") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }\n                    goto LAB_000d0474;\n                  }" ({ "{") (labeled_statement "LAB_000d0438:\n                    if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" (statement_identifier "LAB_000d0438") (: ":") (if_statement "if (puVar16[0x12] == 0) {\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }\n                    else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" (if "if") (parenthesized_expression "(puVar16[0x12] == 0)" (( "(") (binary_expression "puVar16[0x12] == 0" (subscript_expression "puVar16[0x12]" (identifier "puVar16") ([ "[") (number_literal "0x12") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                      local_60 = "*";\n                      local_88 = (byte *)0x0;\n                    }" ({ "{") (expression_statement "local_60 = "*";" (assignment_expression "local_60 = "*"" (identifier "local_60") (= "=") (string_literal ""*"" (" """) (string_content "*") (" """))) (; ";")) (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" (identifier "local_88") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" (else "else") (compound_statement "{\n                      iVar28 = FUN_0004c580();\n                      if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }\n                    }" ({ "{") (expression_statement "iVar28 = FUN_0004c580();" (assignment_expression "iVar28 = FUN_0004c580()" (identifier "iVar28") (= "=") (call_expression "FUN_0004c580()" (identifier "FUN_0004c580") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar28 < 0) {\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }\n                      else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }" (if "if") (parenthesized_expression "(iVar28 < 0)" (( "(") (binary_expression "iVar28 < 0" (identifier "iVar28") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n                        local_88 = (byte *)0x0;\n                        local_60 = "*";\n                      }" ({ "{") (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" (identifier "local_88") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_60 = "*";" (assignment_expression "local_60 = "*"" (identifier "local_60") (= "=") (string_literal ""*"" (" """) (string_content "*") (" """))) (; ";")) (} "}")) (else_clause "else {\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }" (else "else") (compound_statement "{\n                        local_88 = (byte *)0x0;\n                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));\n                      }" ({ "{") (expression_statement "local_88 = (byte *)0x0;" (assignment_expression "local_88 = (byte *)0x0" (identifier "local_88") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));" (assignment_expression "local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" (identifier "local_60") (= "=") (pointer_expression "*(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" (* "*") (cast_expression "(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar28 * 0x10 + *(int *)(iVar3 + 0x10))" (( "(") (binary_expression "iVar28 * 0x10 + *(int *)(iVar3 + 0x10)" (binary_expression "iVar28 * 0x10" (identifier "iVar28") (* "*") (number_literal "0x10")) (+ "+") (pointer_expression "*(int *)(iVar3 + 0x10)" (* "*") (cast_expression "(int *)(iVar3 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x10)" (( "(") (binary_expression "iVar3 + 0x10" (identifier "iVar3") (+ "+") (number_literal "0x10")) () ")"))))) () ")"))))) (; ";")) (} "}")))) (} "}"))))) (goto_statement "goto LAB_000d0474;" (goto "goto") (statement_identifier "LAB_000d0474") (; ";")) (} "}"))) (if_statement "if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }" (if "if") (parenthesized_expression "((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64])" (( "(") (binary_expression "(&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]" (subscript_expression "(&DAT_0012c6e0)[*local_74]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*local_74" (* "*") (identifier "local_74")) (] "]")) (== "==") (subscript_expression "(&DAT_0012c6e0)[*local_64]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*local_64" (* "*") (identifier "local_64")) (] "]"))) () ")")) (compound_statement "{\n                    if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }\n                    goto LAB_000d0438;\n                  }" ({ "{") (if_statement "if (*local_74 != 0) {\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }" (if "if") (parenthesized_expression "(*local_74 != 0)" (( "(") (binary_expression "*local_74 != 0" (pointer_expression "*local_74" (* "*") (identifier "local_74")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n                      local_88 = local_74;\n                      pbVar25 = local_64;\n                      do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);\n                    }" ({ "{") (expression_statement "local_88 = local_74;" (assignment_expression "local_88 = local_74" (identifier "local_88") (= "=") (identifier "local_74")) (; ";")) (expression_statement "pbVar25 = local_64;" (assignment_expression "pbVar25 = local_64" (identifier "pbVar25") (= "=") (identifier "local_64")) (; ";")) (do_statement "do {\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      } while (*local_88 != 0);" (do "do") (compound_statement "{\n                        local_88 = local_88 + 1;\n                        pbVar25 = pbVar25 + 1;\n                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;\n                      }" ({ "{") (expression_statement "local_88 = local_88 + 1;" (assignment_expression "local_88 = local_88 + 1" (identifier "local_88") (= "=") (binary_expression "local_88 + 1" (identifier "local_88") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar25 = pbVar25 + 1;" (assignment_expression "pbVar25 = pbVar25 + 1" (identifier "pbVar25") (= "=") (binary_expression "pbVar25 + 1" (identifier "pbVar25") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])\n                        goto LAB_000d029d;" (if "if") (parenthesized_expression "((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])" (( "(") (binary_expression "(&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25]" (subscript_expression "(&DAT_0012c6e0)[*local_88]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*local_88" (* "*") (identifier "local_88")) (] "]")) (!= "!=") (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (] "]"))) () ")")) (goto_statement "goto LAB_000d029d;" (goto "goto") (statement_identifier "LAB_000d029d") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(*local_88 != 0)" (( "(") (binary_expression "*local_88 != 0" (pointer_expression "*local_88" (* "*") (identifier "local_88")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (goto_statement "goto LAB_000d0438;" (goto "goto") (statement_identifier "LAB_000d0438") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }" (else "else") (compound_statement "{\n                  local_60 = (char *)0x0;\nLAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }\n                }" ({ "{") (expression_statement "local_60 = (char *)0x0;" (assignment_expression "local_60 = (char *)0x0" (identifier "local_60") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (labeled_statement "LAB_000d0474:\n                  if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }" (statement_identifier "LAB_000d0474") (: ":") (if_statement "if (0 < *(short *)((int)puVar16 + 0x2a)) {\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }" (if "if") (parenthesized_expression "(0 < *(short *)((int)puVar16 + 0x2a))" (( "(") (binary_expression "0 < *(short *)((int)puVar16 + 0x2a)" (number_literal "0") (< "<") (pointer_expression "*(short *)((int)puVar16 + 0x2a)" (* "*") (cast_expression "(short *)((int)puVar16 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 0x2a)" (( "(") (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "0x2a")) () ")"))))) () ")")) (compound_statement "{\n                    iVar28 = 0;\n                    do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));\n                  }" ({ "{") (expression_statement "iVar28 = 0;" (assignment_expression "iVar28 = 0" (identifier "iVar28") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));" (do "do") (compound_statement "{\n                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);\n                      pcVar21 = (char *)*puVar26;\n                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }\n                      iVar28 = iVar28 + 1;\n                    }" ({ "{") (expression_statement "puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);" (assignment_expression "puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1])" (identifier "puVar26") (= "=") (cast_expression "(undefined4 *)(iVar28 * 0x10 + puVar16[1])" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar28 * 0x10 + puVar16[1])" (( "(") (binary_expression "iVar28 * 0x10 + puVar16[1]" (binary_expression "iVar28 * 0x10" (identifier "iVar28") (* "*") (number_literal "0x10")) (+ "+") (subscript_expression "puVar16[1]" (identifier "puVar16") ([ "[") (number_literal "1") (] "]"))) () ")")))) (; ";")) (expression_statement "pcVar21 = (char *)*puVar26;" (assignment_expression "pcVar21 = (char *)*puVar26" (identifier "pcVar21") (= "=") (cast_expression "(char *)*puVar26" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar26" (* "*") (identifier "puVar26")))) (; ";")) (if_statement "if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }\n                      else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }" (if "if") (parenthesized_expression "(local_74 == (byte *)0x0 || local_88 == (byte *)0x0)" (( "(") (binary_expression "local_74 == (byte *)0x0 || local_88 == (byte *)0x0" (binary_expression "local_74 == (byte *)0x0" (identifier "local_74") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (|| "||") (binary_expression "local_88 == (byte *)0x0" (identifier "local_88") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")")) (compound_statement "{\n                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }\n                      }" ({ "{") (if_statement "if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }" (if "if") (parenthesized_expression "(((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0))" (( "(") (binary_expression "((*(byte *)((int)param_2 + 10) & 2) != 0) ||\n                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" (parenthesized_expression "((*(byte *)((int)param_2 + 10) & 2) != 0)" (( "(") (binary_expression "(*(byte *)((int)param_2 + 10) & 2) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 10) & 2)" (( "(") (binary_expression "*(byte *)((int)param_2 + 10) & 2" (pointer_expression "*(byte *)((int)param_2 + 10)" (* "*") (cast_expression "(byte *)((int)param_2 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 10)" (( "(") (binary_expression "(int)param_2 + 10" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" (( "(") (binary_expression "(*(byte *)((int)puVar26 + 0xf) & 2) == 0" (parenthesized_expression "(*(byte *)((int)puVar26 + 0xf) & 2)" (( "(") (binary_expression "*(byte *)((int)puVar26 + 0xf) & 2" (pointer_expression "*(byte *)((int)puVar26 + 0xf)" (* "*") (cast_expression "(byte *)((int)puVar26 + 0xf)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar26 + 0xf)" (( "(") (binary_expression "(int)puVar26 + 0xf" (cast_expression "(int)puVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar26")) (+ "+") (number_literal "0xf")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;\n                          goto LAB_000d0623;\n                        }" ({ "{") (if_statement "if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))\n                          goto LAB_000d04f4;" (if "if") (parenthesized_expression "(((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))" (( "(") (binary_expression "((local_78 < 1) || (local_74 != (byte *)0x0)) ||\n                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))))" (parenthesized_expression "((local_78 < 1) || (local_74 != (byte *)0x0))" (( "(") (binary_expression "(local_78 < 1) || (local_74 != (byte *)0x0)" (parenthesized_expression "(local_78 < 1)" (( "(") (binary_expression "local_78 < 1" (identifier "local_78") (< "<") (number_literal "1")) () ")")) (|| "||") (parenthesized_expression "(local_74 != (byte *)0x0)" (( "(") (binary_expression "local_74 != (byte *)0x0" (identifier "local_74") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))))" (( "(") (parenthesized_expression "(((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))" (( "(") (binary_expression "((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&\n                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))" (parenthesized_expression "((*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0))" (( "(") (binary_expression "(*(byte *)(local_80 + 9) & 4) == 0 ||\n                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)" (binary_expression "(*(byte *)(local_80 + 9) & 4) == 0" (parenthesized_expression "(*(byte *)(local_80 + 9) & 4)" (( "(") (binary_expression "*(byte *)(local_80 + 9) & 4" (pointer_expression "*(byte *)(local_80 + 9)" (* "*") (cast_expression "(byte *)(local_80 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(local_80 + 9)" (( "(") (binary_expression "local_80 + 9" (identifier "local_80") (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar13 = FUN_00039c70(0,0), iVar13 == 0)" (( "(") (comma_expression "iVar13 = FUN_00039c70(0,0), iVar13 == 0" (assignment_expression "iVar13 = FUN_00039c70(0,0)" (identifier "iVar13") (= "=") (call_expression "FUN_00039c70(0,0)" (identifier "FUN_00039c70") (argument_list "(0,0)" (( "(") (number_literal "0") (, ",") (number_literal "0") () ")")))) (, ",") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)))" (( "(") (parenthesized_expression "(local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))" (( "(") (binary_expression "local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0)" (binary_expression "local_80[0xc] == 0" (subscript_expression "local_80[0xc]" (identifier "local_80") ([ "[") (number_literal "0xc") (] "]")) (== "==") (number_literal "0")) (|| "||") (parenthesized_expression "(iVar13 = FUN_0004bf80(), iVar13 < 0)" (( "(") (comma_expression "iVar13 = FUN_0004bf80(), iVar13 < 0" (assignment_expression "iVar13 = FUN_0004bf80()" (identifier "iVar13") (= "=") (call_expression "FUN_0004bf80()" (identifier "FUN_0004bf80") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar13 < 0" (identifier "iVar13") (< "<") (number_literal "0"))) () ")"))) () ")")) () ")"))) () ")")) () ")"))) () ")")) (goto_statement "goto LAB_000d04f4;" (goto "goto") (statement_identifier "LAB_000d04f4") (; ";"))) (goto_statement "goto LAB_000d0623;" (goto "goto") (statement_identifier "LAB_000d0623") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }" (else "else") (compound_statement "{\n                        iVar13 = FUN_00045a10(0);\n                        if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }\n                      }" ({ "{") (expression_statement "iVar13 = FUN_00045a10(0);" (assignment_expression "iVar13 = FUN_00045a10(0)" (identifier "iVar13") (= "=") (call_expression "FUN_00045a10(0)" (identifier "FUN_00045a10") (argument_list "(0)" (( "(") (number_literal "0") () ")")))) (; ";")) (if_statement "if ((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }" (if "if") (parenthesized_expression "((iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0))))" (( "(") (binary_expression "(iVar13 != 0) &&\n                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))" (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))" (( "(") (parenthesized_expression "((*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0))" (( "(") (binary_expression "(*(byte *)((int)param_2 + 10) & 2) != 0 ||\n                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" (binary_expression "(*(byte *)((int)param_2 + 10) & 2) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 10) & 2)" (( "(") (binary_expression "*(byte *)((int)param_2 + 10) & 2" (pointer_expression "*(byte *)((int)param_2 + 10)" (* "*") (cast_expression "(byte *)((int)param_2 + 10)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 10)" (( "(") (binary_expression "(int)param_2 + 10" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "10")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "((*(byte *)((int)puVar26 + 0xf) & 2) == 0)" (( "(") (binary_expression "(*(byte *)((int)puVar26 + 0xf) & 2) == 0" (parenthesized_expression "(*(byte *)((int)puVar26 + 0xf) & 2)" (( "(") (binary_expression "*(byte *)((int)puVar26 + 0xf) & 2" (pointer_expression "*(byte *)((int)puVar26 + 0xf)" (* "*") (cast_expression "(byte *)((int)puVar26 + 0xf)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar26 + 0xf)" (( "(") (binary_expression "(int)puVar26 + 0xf" (cast_expression "(int)puVar26" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar26")) (+ "+") (number_literal "0xf")) () ")")))) (& "&") (number_literal "2")) () ")")) (== "==") (number_literal "0")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\nLAB_000d04f4:\n                          uVar19 = FUN_00045020();\n                          if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }\n                          piVar27 = (int *)FUN_000675b0();\n                          local_28 = pcVar21;\n                          if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }\n                          if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }\n                          if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }\nLAB_000d0623:\n                          bVar29 = true;\n                        }" ({ "{") (labeled_statement "LAB_000d04f4:\n                          uVar19 = FUN_00045020();" (statement_identifier "LAB_000d04f4") (: ":") (expression_statement "uVar19 = FUN_00045020();" (assignment_expression "uVar19 = FUN_00045020()" (identifier "uVar19") (= "=") (call_expression "FUN_00045020()" (identifier "FUN_00045020") (argument_list "()" (( "(") () ")")))) (; ";"))) (if_statement "if ((uVar4 & 0x44) == 4) {\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }\n                          else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" (if "if") (parenthesized_expression "((uVar4 & 0x44) == 4)" (( "(") (binary_expression "(uVar4 & 0x44) == 4" (parenthesized_expression "(uVar4 & 0x44)" (( "(") (binary_expression "uVar4 & 0x44" (identifier "uVar4") (& "&") (number_literal "0x44")) () ")")) (== "==") (number_literal "4")) () ")")) (compound_statement "{\n                            FUN_00045020();\n                            uVar19 = FUN_00075cf0(uVar19);\n                            if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }\n                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);\n                            local_68 = pcVar21;\n                          }" ({ "{") (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" (identifier "FUN_00045020") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar19 = FUN_00075cf0(uVar19);" (assignment_expression "uVar19 = FUN_00075cf0(uVar19)" (identifier "uVar19") (= "=") (call_expression "FUN_00075cf0(uVar19)" (identifier "FUN_00075cf0") (argument_list "(uVar19)" (( "(") (identifier "uVar19") () ")")))) (; ";")) (if_statement "if (local_60 != (char *)0x0) {\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }" (if "if") (parenthesized_expression "(local_60 != (char *)0x0)" (( "(") (binary_expression "local_60 != (char *)0x0" (identifier "local_60") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                              FUN_00045020();\n                              FUN_00075cf0(uVar19);\n                            }" ({ "{") (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" (identifier "FUN_00045020") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00075cf0(uVar19);" (call_expression "FUN_00075cf0(uVar19)" (identifier "FUN_00075cf0") (argument_list "(uVar19)" (( "(") (identifier "uVar19") () ")"))) (; ";")) (} "}"))) (expression_statement "pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);" (assignment_expression "pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21)" (identifier "pcVar21") (= "=") (cast_expression "(char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21)" (identifier "FUN_0007a820") (argument_list "(iVar3,"%s.%s",local_64,pcVar21)" (( "(") (identifier "iVar3") (, ",") (string_literal ""%s.%s"" (" """) (string_content "%s.%s") (" """)) (, ",") (identifier "local_64") (, ",") (identifier "pcVar21") () ")"))))) (; ";")) (expression_statement "local_68 = pcVar21;" (assignment_expression "local_68 = pcVar21" (identifier "local_68") (= "=") (identifier "pcVar21")) (; ";")) (} "}")) (else_clause "else {\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" (else "else") (compound_statement "{\n                            if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }\n                            local_68 = (char *)0x0;\n                          }" ({ "{") (if_statement "if (1 < *piVar5) {\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }" (if "if") (parenthesized_expression "(1 < *piVar5)" (( "(") (binary_expression "1 < *piVar5" (number_literal "1") (< "<") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (compound_statement "{\n                              FUN_00045020();\n                              uVar19 = FUN_00075cf0(uVar19);\n                              if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }\n                            }" ({ "{") (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" (identifier "FUN_00045020") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "uVar19 = FUN_00075cf0(uVar19);" (assignment_expression "uVar19 = FUN_00075cf0(uVar19)" (identifier "uVar19") (= "=") (call_expression "FUN_00075cf0(uVar19)" (identifier "FUN_00075cf0") (argument_list "(uVar19)" (( "(") (identifier "uVar19") () ")")))) (; ";")) (if_statement "if (local_60 != (char *)0x0) {\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }" (if "if") (parenthesized_expression "(local_60 != (char *)0x0)" (( "(") (binary_expression "local_60 != (char *)0x0" (identifier "local_60") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                                FUN_00045020();\n                                FUN_00075cf0(uVar19);\n                              }" ({ "{") (expression_statement "FUN_00045020();" (call_expression "FUN_00045020()" (identifier "FUN_00045020") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "FUN_00075cf0(uVar19);" (call_expression "FUN_00075cf0(uVar19)" (identifier "FUN_00075cf0") (argument_list "(uVar19)" (( "(") (identifier "uVar19") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "local_68 = (char *)0x0;" (assignment_expression "local_68 = (char *)0x0" (identifier "local_68") (= "=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")))) (expression_statement "piVar27 = (int *)FUN_000675b0();" (assignment_expression "piVar27 = (int *)FUN_000675b0()" (identifier "piVar27") (= "=") (cast_expression "(int *)FUN_000675b0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000675b0()" (identifier "FUN_000675b0") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "local_28 = pcVar21;" (assignment_expression "local_28 = pcVar21" (identifier "local_28") (= "=") (identifier "pcVar21")) (; ";")) (if_statement "if (pcVar21 == (char *)0x0) {\n                            local_24 = 0;\n                          }\n                          else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }" (if "if") (parenthesized_expression "(pcVar21 == (char *)0x0)" (( "(") (binary_expression "pcVar21 == (char *)0x0" (identifier "pcVar21") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                            local_24 = 0;\n                          }" ({ "{") (expression_statement "local_24 = 0;" (assignment_expression "local_24 = 0" (identifier "local_24") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }" (else "else") (compound_statement "{\n                            sVar20 = strlen(pcVar21);\n                            local_24 = sVar20 & 0x3fffffff;\n                          }" ({ "{") (expression_statement "sVar20 = strlen(pcVar21);" (assignment_expression "sVar20 = strlen(pcVar21)" (identifier "sVar20") (= "=") (call_expression "strlen(pcVar21)" (identifier "strlen") (argument_list "(pcVar21)" (( "(") (identifier "pcVar21") () ")")))) (; ";")) (expression_statement "local_24 = sVar20 & 0x3fffffff;" (assignment_expression "local_24 = sVar20 & 0x3fffffff" (identifier "local_24") (= "=") (binary_expression "sVar20 & 0x3fffffff" (identifier "sVar20") (& "&") (number_literal "0x3fffffff"))) (; ";")) (} "}")))) (if_statement "if ((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }" (if "if") (parenthesized_expression "((piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0))" (( "(") (binary_expression "(piVar27 != (int *)0x0) &&\n                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)" (parenthesized_expression "(piVar27 != (int *)0x0)" (( "(") (binary_expression "piVar27 != (int *)0x0" (identifier "piVar27") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)" (( "(") (comma_expression "FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0" (call_expression "FUN_0004b9c0(0)" (identifier "FUN_0004b9c0") (argument_list "(0)" (( "(") (number_literal "0") () ")"))) (, ",") (binary_expression "(*(byte *)((int)param_2 + 9) & 8) != 0" (parenthesized_expression "(*(byte *)((int)param_2 + 9) & 8)" (( "(") (binary_expression "*(byte *)((int)param_2 + 9) & 8" (pointer_expression "*(byte *)((int)param_2 + 9)" (* "*") (cast_expression "(byte *)((int)param_2 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_2 + 9)" (( "(") (binary_expression "(int)param_2 + 9" (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2")) (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "8")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n                            iVar13 = *piVar27 + -1;\n                            if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);\n                            *pbVar25 = *pbVar25 | 2;\n                          }" ({ "{") (expression_statement "iVar13 = *piVar27 + -1;" (assignment_expression "iVar13 = *piVar27 + -1" (identifier "iVar13") (= "=") (binary_expression "*piVar27 + -1" (pointer_expression "*piVar27" (* "*") (identifier "piVar27")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (local_88 == (byte *)0x0) {\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }\n                            else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" (if "if") (parenthesized_expression "(local_88 == (byte *)0x0)" (( "(") (binary_expression "local_88 == (byte *)0x0" (identifier "local_88") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" ({ "{") (expression_statement "iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);" (assignment_expression "iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21)" (identifier "iVar17") (= "=") (call_expression "FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21)" (identifier "FUN_0007a820") (argument_list "(iVar3,"%s.%s.%s",local_60,local_64,pcVar21)" (( "(") (identifier "iVar3") (, ",") (string_literal ""%s.%s.%s"" (" """) (string_content "%s.%s.%s") (" """)) (, ",") (identifier "local_60") (, ",") (identifier "local_64") (, ",") (identifier "pcVar21") () ")")))) (; ";")) (expression_statement "piVar27[iVar13 * 5 + 3] = iVar17;" (assignment_expression "piVar27[iVar13 * 5 + 3] = iVar17" (subscript_expression "piVar27[iVar13 * 5 + 3]" (identifier "piVar27") ([ "[") (binary_expression "iVar13 * 5 + 3" (binary_expression "iVar13 * 5" (identifier "iVar13") (* "*") (number_literal "5")) (+ "+") (number_literal "3")) (] "]")) (= "=") (identifier "iVar17")) (; ";")) (} "}")) (else_clause "else {\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" (else "else") (compound_statement "{\n                              iVar17 = FUN_00044980();\n                              piVar27[iVar13 * 5 + 3] = iVar17;\n                            }" ({ "{") (expression_statement "iVar17 = FUN_00044980();" (assignment_expression "iVar17 = FUN_00044980()" (identifier "iVar17") (= "=") (call_expression "FUN_00044980()" (identifier "FUN_00044980") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar27[iVar13 * 5 + 3] = iVar17;" (assignment_expression "piVar27[iVar13 * 5 + 3] = iVar17" (subscript_expression "piVar27[iVar13 * 5 + 3]" (identifier "piVar27") ([ "[") (binary_expression "iVar13 * 5 + 3" (binary_expression "iVar13 * 5" (identifier "iVar13") (* "*") (number_literal "5")) (+ "+") (number_literal "3")) (] "]")) (= "=") (identifier "iVar17")) (; ";")) (} "}")))) (expression_statement "pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);" (assignment_expression "pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11)" (identifier "pbVar25") (= "=") (cast_expression "(byte *)((int)piVar27 + iVar13 * 0x14 + 0x11)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar27 + iVar13 * 0x14 + 0x11)" (( "(") (binary_expression "(int)piVar27 + iVar13 * 0x14 + 0x11" (binary_expression "(int)piVar27 + iVar13 * 0x14" (cast_expression "(int)piVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar27")) (+ "+") (binary_expression "iVar13 * 0x14" (identifier "iVar13") (* "*") (number_literal "0x14"))) (+ "+") (number_literal "0x11")) () ")")))) (; ";")) (expression_statement "*pbVar25 = *pbVar25 | 2;" (assignment_expression "*pbVar25 = *pbVar25 | 2" (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (= "=") (binary_expression "*pbVar25 | 2" (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (| "|") (number_literal "2"))) (; ";")) (} "}"))) (if_statement "if (local_68 != (char *)0x0) {\n                            FUN_000428d0();\n                          }" (if "if") (parenthesized_expression "(local_68 != (char *)0x0)" (( "(") (binary_expression "local_68 != (char *)0x0" (identifier "local_68") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n                            FUN_000428d0();\n                          }" ({ "{") (expression_statement "FUN_000428d0();" (call_expression "FUN_000428d0()" (identifier "FUN_000428d0") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (labeled_statement "LAB_000d0623:\n                          bVar29 = true;" (statement_identifier "LAB_000d0623") (: ":") (expression_statement "bVar29 = true;" (assignment_expression "bVar29 = true" (identifier "bVar29") (= "=") (true "true")) (; ";"))) (} "}"))) (} "}")))) (expression_statement "iVar28 = iVar28 + 1;" (assignment_expression "iVar28 = iVar28 + 1" (identifier "iVar28") (= "=") (binary_expression "iVar28 + 1" (identifier "iVar28") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar28 < *(short *)((int)puVar16 + 0x2a))" (( "(") (binary_expression "iVar28 < *(short *)((int)puVar16 + 0x2a)" (identifier "iVar28") (< "<") (pointer_expression "*(short *)((int)puVar16 + 0x2a)" (* "*") (cast_expression "(short *)((int)puVar16 + 0x2a)" (( "(") (type_descriptor "short *" (sized_type_specifier "short" (short "short")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 0x2a)" (( "(") (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "0x2a")) () ")"))))) () ")")) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_000d029d:\n                local_78 = local_78 + 1;" (statement_identifier "LAB_000d029d") (: ":") (expression_statement "local_78 = local_78 + 1;" (assignment_expression "local_78 = local_78 + 1" (identifier "local_78") (= "=") (binary_expression "local_78 + 1" (identifier "local_78") (+ "+") (number_literal "1"))) (; ";"))) (expression_statement "local_80 = local_80 + 0x11;" (assignment_expression "local_80 = local_80 + 0x11" (identifier "local_80") (= "=") (binary_expression "local_80 + 0x11" (identifier "local_80") (+ "+") (number_literal "0x11"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_78 < *piVar5)" (( "(") (binary_expression "local_78 < *piVar5" (identifier "local_78") (< "<") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (; ";")) (if_statement "if (!bVar29) goto LAB_000d02c3;" (if "if") (parenthesized_expression "(!bVar29)" (( "(") (unary_expression "!bVar29" (! "!") (identifier "bVar29")) () ")")) (goto_statement "goto LAB_000d02c3;" (goto "goto") (statement_identifier "LAB_000d02c3") (; ";"))) (} "}")))) (} "}")) (else_clause "else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" (else "else") (if_statement "if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }\n          else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" (if "if") (parenthesized_expression "((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58))" (( "(") (binary_expression "(cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)" (parenthesized_expression "(cVar12 == -0x7e)" (( "(") (binary_expression "cVar12 == -0x7e" (identifier "cVar12") (== "==") (number_literal "-0x7e")) () ")")) (&& "&&") (parenthesized_expression "(**(char **)(pcVar21 + 0x10) == -0x58)" (( "(") (binary_expression "**(char **)(pcVar21 + 0x10) == -0x58" (pointer_expression "**(char **)(pcVar21 + 0x10)" (* "*") (pointer_expression "*(char **)(pcVar21 + 0x10)" (* "*") (cast_expression "(char **)(pcVar21 + 0x10)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar21 + 0x10)" (( "(") (binary_expression "pcVar21 + 0x10" (identifier "pcVar21") (+ "+") (number_literal "0x10")) () ")"))))) (== "==") (number_literal "-0x58")) () ")"))) () ")")) (compound_statement "{\n            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);\n            if (0 < *piVar5) goto LAB_000d01d4;\nLAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;\n            FUN_00074ee0(piVar2,"no such table: %s",local_74);\n          }" ({ "{") (expression_statement "local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);" (assignment_expression "local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8)" (identifier "local_74") (= "=") (pointer_expression "*(byte **)(*(int *)(pcVar21 + 0xc) + 8)" (* "*") (cast_expression "(byte **)(*(int *)(pcVar21 + 0xc) + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(int *)(pcVar21 + 0xc) + 8)" (( "(") (binary_expression "*(int *)(pcVar21 + 0xc) + 8" (pointer_expression "*(int *)(pcVar21 + 0xc)" (* "*") (cast_expression "(int *)(pcVar21 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(pcVar21 + 0xc)" (( "(") (binary_expression "pcVar21 + 0xc" (identifier "pcVar21") (+ "+") (number_literal "0xc")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if (0 < *piVar5) goto LAB_000d01d4;" (if "if") (parenthesized_expression "(0 < *piVar5)" (( "(") (binary_expression "0 < *piVar5" (number_literal "0") (< "<") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (goto_statement "goto LAB_000d01d4;" (goto "goto") (statement_identifier "LAB_000d01d4") (; ";"))) (labeled_statement "LAB_000d02c3:\n            if (local_74 == (byte *)0x0) goto LAB_000d0870;" (statement_identifier "LAB_000d02c3") (: ":") (if_statement "if (local_74 == (byte *)0x0) goto LAB_000d0870;" (if "if") (parenthesized_expression "(local_74 == (byte *)0x0)" (( "(") (binary_expression "local_74 == (byte *)0x0" (identifier "local_74") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000d0870;" (goto "goto") (statement_identifier "LAB_000d0870") (; ";")))) (expression_statement "FUN_00074ee0(piVar2,"no such table: %s",local_74);" (call_expression "FUN_00074ee0(piVar2,"no such table: %s",local_74)" (identifier "FUN_00074ee0") (argument_list "(piVar2,"no such table: %s",local_74)" (( "(") (identifier "piVar2") (, ",") (string_literal ""no such table: %s"" (" """) (string_content "no such table: %s") (" """)) (, ",") (identifier "local_74") () ")"))) (; ";")) (} "}")) (else_clause "else {\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" (else "else") (compound_statement "{\n            piVar27 = (int *)FUN_000675b0();\n            if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }\n            *local_4c = 0;\n          }" ({ "{") (expression_statement "piVar27 = (int *)FUN_000675b0();" (assignment_expression "piVar27 = (int *)FUN_000675b0()" (identifier "piVar27") (= "=") (cast_expression "(int *)FUN_000675b0()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000675b0()" (identifier "FUN_000675b0") (argument_list "()" (( "(") () ")"))))) (; ";")) (if_statement "if (piVar27 != (int *)0x0) {\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }" (if "if") (parenthesized_expression "(piVar27 != (int *)0x0)" (( "(") (binary_expression "piVar27 != (int *)0x0" (identifier "piVar27") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              iVar28 = *piVar27;\n              piVar27[iVar28 * 5 + -3] = local_4c[1];\n              piVar27[iVar28 * 5 + -2] = local_4c[2];\n              local_4c[1] = 0;\n              local_4c[2] = 0;\n            }" ({ "{") (expression_statement "iVar28 = *piVar27;" (assignment_expression "iVar28 = *piVar27" (identifier "iVar28") (= "=") (pointer_expression "*piVar27" (* "*") (identifier "piVar27"))) (; ";")) (expression_statement "piVar27[iVar28 * 5 + -3] = local_4c[1];" (assignment_expression "piVar27[iVar28 * 5 + -3] = local_4c[1]" (subscript_expression "piVar27[iVar28 * 5 + -3]" (identifier "piVar27") ([ "[") (binary_expression "iVar28 * 5 + -3" (binary_expression "iVar28 * 5" (identifier "iVar28") (* "*") (number_literal "5")) (+ "+") (number_literal "-3")) (] "]")) (= "=") (subscript_expression "local_4c[1]" (identifier "local_4c") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "piVar27[iVar28 * 5 + -2] = local_4c[2];" (assignment_expression "piVar27[iVar28 * 5 + -2] = local_4c[2]" (subscript_expression "piVar27[iVar28 * 5 + -2]" (identifier "piVar27") ([ "[") (binary_expression "iVar28 * 5 + -2" (binary_expression "iVar28 * 5" (identifier "iVar28") (* "*") (number_literal "5")) (+ "+") (number_literal "-2")) (] "]")) (= "=") (subscript_expression "local_4c[2]" (identifier "local_4c") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "local_4c[1] = 0;" (assignment_expression "local_4c[1] = 0" (subscript_expression "local_4c[1]" (identifier "local_4c") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_4c[2] = 0;" (assignment_expression "local_4c[2] = 0" (subscript_expression "local_4c[2]" (identifier "local_4c") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "*local_4c = 0;" (assignment_expression "*local_4c = 0" (pointer_expression "*local_4c" (* "*") (identifier "local_4c")) (= "=") (number_literal "0")) (; ";")) (} "}")))))) (expression_statement "local_44 = local_44 + 1;" (assignment_expression "local_44 = local_44 + 1" (identifier "local_44") (= "=") (binary_expression "local_44 + 1" (identifier "local_44") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "local_4c = local_4c + 5;" (assignment_expression "local_4c = local_4c + 5" (identifier "local_4c") (= "=") (binary_expression "local_4c + 5" (identifier "local_4c") (+ "+") (number_literal "5"))) (; ";")) (if_statement "if (*piVar6 <= local_44) goto LAB_000d07cd;" (if "if") (parenthesized_expression "(*piVar6 <= local_44)" (( "(") (binary_expression "*piVar6 <= local_44" (pointer_expression "*piVar6" (* "*") (identifier "piVar6")) (<= "<=") (identifier "local_44")) () ")")) (goto_statement "goto LAB_000d07cd;" (goto "goto") (statement_identifier "LAB_000d07cd") (; ";"))) (expression_statement "pcVar21 = (char *)*local_4c;" (assignment_expression "pcVar21 = (char *)*local_4c" (identifier "pcVar21") (= "=") (cast_expression "(char *)*local_4c" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*local_4c" (* "*") (identifier "local_4c")))) (; ";")) (expression_statement "cVar12 = *pcVar21;" (assignment_expression "cVar12 = *pcVar21" (identifier "cVar12") (= "=") (pointer_expression "*pcVar21" (* "*") (identifier "pcVar21"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}"))) (expression_statement "local_40 = (int *)0x0;" (assignment_expression "local_40 = (int *)0x0" (identifier "local_40") (= "=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "piVar27 = (int *)*param_2;" (assignment_expression "piVar27 = (int *)*param_2" (identifier "piVar27") (= "=") (cast_expression "(int *)*param_2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (goto_statement "goto LAB_000d07de;" (goto "goto") (statement_identifier "LAB_000d07de") (; ";")) (} "}")))) (} "}"))) (goto_statement "goto LAB_000cfae4;" (goto "goto") (statement_identifier "LAB_000cfae4") (; ";")) (labeled_statement "LAB_000cfe32:\n  do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);" (statement_identifier "LAB_000cfe32") (: ":") (do_statement "do {\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  } while (iVar13 < *piVar9);" (do "do") (compound_statement "{\n    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }\n    iVar13 = iVar13 + 1;\n    piVar23 = piVar23 + 0x11;\n  }" ({ "{") (if_statement "if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }" (if "if") (parenthesized_expression "((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0))" (( "(") (binary_expression "(*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)" (parenthesized_expression "(*piVar23 == 0)" (( "(") (binary_expression "*piVar23 == 0" (pointer_expression "*piVar23" (* "*") (identifier "piVar23")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)" (( "(") (comma_expression "pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0" (assignment_expression "pbVar25 = (byte *)piVar23[1]" (identifier "pbVar25") (= "=") (cast_expression "(byte *)piVar23[1]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar23[1]" (identifier "piVar23") ([ "[") (number_literal "1") (] "]")))) (, ",") (binary_expression "pbVar25 != (byte *)0x0" (identifier "pbVar25") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }\n    }" ({ "{") (if_statement "if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }" (if "if") (parenthesized_expression "((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25])" (( "(") (binary_expression "(&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]" (subscript_expression "(&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*(byte *)piVar8[iVar28 * 4 + 2]" (* "*") (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[iVar28 * 4 + 2]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "2")) (] "]")))) (] "]")) (== "==") (subscript_expression "(&DAT_0012c6e0)[*pbVar25]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (] "]"))) () ")")) (compound_statement "{\n        if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }\n        piVar23[3] = (int)puVar16;\n        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);\n        *pbVar25 = *pbVar25 | 0x20;\n        puVar16[8] = puVar16[8] + 1;\n        piVar15[2] = piVar15[2] | 0x2000;\n      }" ({ "{") (if_statement "if (*pbVar25 != 0) {\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }" (if "if") (parenthesized_expression "(*pbVar25 != 0)" (( "(") (binary_expression "*pbVar25 != 0" (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar17 = 1;\n          do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);\n        }" ({ "{") (expression_statement "iVar17 = 1;" (assignment_expression "iVar17 = 1" (identifier "iVar17") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          } while (*pbVar14 != 0);" (do "do") (compound_statement "{\n            pbVar14 = pbVar25 + iVar17;\n            if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }\n            iVar17 = iVar17 + 1;\n          }" ({ "{") (expression_statement "pbVar14 = pbVar25 + iVar17;" (assignment_expression "pbVar14 = pbVar25 + iVar17" (identifier "pbVar14") (= "=") (binary_expression "pbVar25 + iVar17" (identifier "pbVar25") (+ "+") (identifier "iVar17"))) (; ";")) (if_statement "if ((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }" (if "if") (parenthesized_expression "((&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]])" (( "(") (binary_expression "(&DAT_0012c6e0)[*pbVar14] !=\n                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]" (subscript_expression "(&DAT_0012c6e0)[*pbVar14]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (] "]")) (!= "!=") (subscript_expression "(&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]" (parenthesized_expression "(&DAT_0012c6e0)" (( "(") (pointer_expression "&DAT_0012c6e0" (& "&") (identifier "DAT_0012c6e0")) () ")")) ([ "[") (subscript_expression "((byte *)piVar8[iVar28 * 4 + 2])[iVar17]" (parenthesized_expression "((byte *)piVar8[iVar28 * 4 + 2])" (( "(") (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[iVar28 * 4 + 2]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "2")) (] "]"))) () ")")) ([ "[") (identifier "iVar17") (] "]")) (] "]"))) () ")")) (compound_statement "{\n              iVar13 = iVar13 + 1;\n              piVar23 = piVar23 + 0x11;\n              if (iVar13 < *piVar9) goto LAB_000cfe32;\n              goto LAB_000cfecc;\n            }" ({ "{") (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar23 = piVar23 + 0x11;" (assignment_expression "piVar23 = piVar23 + 0x11" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 0x11" (identifier "piVar23") (+ "+") (number_literal "0x11"))) (; ";")) (if_statement "if (iVar13 < *piVar9) goto LAB_000cfe32;" (if "if") (parenthesized_expression "(iVar13 < *piVar9)" (( "(") (binary_expression "iVar13 < *piVar9" (identifier "iVar13") (< "<") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) () ")")) (goto_statement "goto LAB_000cfe32;" (goto "goto") (statement_identifier "LAB_000cfe32") (; ";"))) (goto_statement "goto LAB_000cfecc;" (goto "goto") (statement_identifier "LAB_000cfecc") (; ";")) (} "}"))) (expression_statement "iVar17 = iVar17 + 1;" (assignment_expression "iVar17 = iVar17 + 1" (identifier "iVar17") (= "=") (binary_expression "iVar17 + 1" (identifier "iVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*pbVar14 != 0)" (( "(") (binary_expression "*pbVar14 != 0" (pointer_expression "*pbVar14" (* "*") (identifier "pbVar14")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}"))) (expression_statement "piVar23[3] = (int)puVar16;" (assignment_expression "piVar23[3] = (int)puVar16" (subscript_expression "piVar23[3]" (identifier "piVar23") ([ "[") (number_literal "3") (] "]")) (= "=") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) (; ";")) (expression_statement "pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);" (assignment_expression "pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d)" (identifier "pbVar25") (= "=") (cast_expression "(byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar9 + iVar13 * 0x44 + 0x2d)" (( "(") (binary_expression "(int)piVar9 + iVar13 * 0x44 + 0x2d" (binary_expression "(int)piVar9 + iVar13 * 0x44" (cast_expression "(int)piVar9" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar9")) (+ "+") (binary_expression "iVar13 * 0x44" (identifier "iVar13") (* "*") (number_literal "0x44"))) (+ "+") (number_literal "0x2d")) () ")")))) (; ";")) (expression_statement "*pbVar25 = *pbVar25 | 0x20;" (assignment_expression "*pbVar25 = *pbVar25 | 0x20" (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (= "=") (binary_expression "*pbVar25 | 0x20" (pointer_expression "*pbVar25" (* "*") (identifier "pbVar25")) (| "|") (number_literal "0x20"))) (; ";")) (expression_statement "puVar16[8] = puVar16[8] + 1;" (assignment_expression "puVar16[8] = puVar16[8] + 1" (subscript_expression "puVar16[8]" (identifier "puVar16") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "puVar16[8] + 1" (subscript_expression "puVar16[8]" (identifier "puVar16") ([ "[") (number_literal "8") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar15[2] = piVar15[2] | 0x2000;" (assignment_expression "piVar15[2] = piVar15[2] | 0x2000" (subscript_expression "piVar15[2]" (identifier "piVar15") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "piVar15[2] | 0x2000" (subscript_expression "piVar15[2]" (identifier "piVar15") ([ "[") (number_literal "2") (] "]")) (| "|") (number_literal "0x2000"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar23 = piVar23 + 0x11;" (assignment_expression "piVar23 = piVar23 + 0x11" (identifier "piVar23") (= "=") (binary_expression "piVar23 + 0x11" (identifier "piVar23") (+ "+") (number_literal "0x11"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar13 < *piVar9)" (( "(") (binary_expression "iVar13 < *piVar9" (identifier "iVar13") (< "<") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) () ")")) (; ";"))) (labeled_statement "LAB_000cfecc:\n  if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" (statement_identifier "LAB_000cfecc") (: ":") (if_statement "if (2 < (uint)puVar16[8]) {\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" (if "if") (parenthesized_expression "(2 < (uint)puVar16[8])" (( "(") (binary_expression "2 < (uint)puVar16[8]" (number_literal "2") (< "<") (cast_expression "(uint)puVar16[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar16[8]" (identifier "puVar16") ([ "[") (number_literal "8") (] "]")))) () ")")) (compound_statement "{\nLAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";\n    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];\nLAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);\n    local_48 = 2;\n    goto LAB_000cfaec;\n  }" ({ "{") (labeled_statement "LAB_000cffd0:\n    pcVar21 = "multiple references to recursive table: %s";" (statement_identifier "LAB_000cffd0") (: ":") (expression_statement "pcVar21 = "multiple references to recursive table: %s";" (assignment_expression "pcVar21 = "multiple references to recursive table: %s"" (identifier "pcVar21") (= "=") (string_literal ""multiple references to recursive table: %s"" (" """) (string_content "multiple references to recursive table: %s") (" """))) (; ";"))) (expression_statement "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];" (assignment_expression "pbVar14 = (byte *)piVar8[iVar28 * 4 + 2]" (identifier "pbVar14") (= "=") (cast_expression "(byte *)piVar8[iVar28 * 4 + 2]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[iVar28 * 4 + 2]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "2")) (] "]")))) (; ";")) (labeled_statement "LAB_000cfd64:\n    FUN_00074ee0(piVar7,pcVar21,pbVar14);" (statement_identifier "LAB_000cfd64") (: ":") (expression_statement "FUN_00074ee0(piVar7,pcVar21,pbVar14);" (call_expression "FUN_00074ee0(piVar7,pcVar21,pbVar14)" (identifier "FUN_00074ee0") (argument_list "(piVar7,pcVar21,pbVar14)" (( "(") (identifier "piVar7") (, ",") (identifier "pcVar21") (, ",") (identifier "pbVar14") () ")"))) (; ";"))) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" (identifier "local_48") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_000cfaec;" (goto "goto") (statement_identifier "LAB_000cfaec") (; ";")) (} "}")))) (expression_statement "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";" (assignment_expression "piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s"" (subscript_expression "piVar8[iVar28 * 4 + 5]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "5")) (] "]")) (= "=") (cast_expression "(int)"circular reference: %s"" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (string_literal ""circular reference: %s"" (" """) (string_content "circular reference: %s") (" """)))) (; ";")) (expression_statement "iVar13 = piVar7[0x41];" (assignment_expression "iVar13 = piVar7[0x41]" (identifier "iVar13") (= "=") (subscript_expression "piVar7[0x41]" (identifier "piVar7") ([ "[") (number_literal "0x41") (] "]"))) (; ";")) (expression_statement "piVar7[0x41] = (int)piVar8;" (assignment_expression "piVar7[0x41] = (int)piVar8" (subscript_expression "piVar7[0x41]" (identifier "piVar7") ([ "[") (number_literal "0x41") (] "]")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";")) (expression_statement "iVar17 = piVar15[0xd];" (assignment_expression "iVar17 = piVar15[0xd]" (identifier "iVar17") (= "=") (subscript_expression "piVar15[0xd]" (identifier "piVar15") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "*(int *)(iVar17 + 0x40) = piVar15[0x10];" (assignment_expression "*(int *)(iVar17 + 0x40) = piVar15[0x10]" (pointer_expression "*(int *)(iVar17 + 0x40)" (* "*") (cast_expression "(int *)(iVar17 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x40)" (( "(") (binary_expression "iVar17 + 0x40" (identifier "iVar17") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (subscript_expression "piVar15[0x10]" (identifier "piVar15") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (if_statement "if (param_1[2] != 0) {\n    FUN_0004a550();\n  }" (if "if") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_0004a550();\n  }" ({ "{") (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" (identifier "FUN_0004a550") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(iVar17 + 0x40) = 0;" (assignment_expression "*(undefined4 *)(iVar17 + 0x40) = 0" (pointer_expression "*(undefined4 *)(iVar17 + 0x40)" (* "*") (cast_expression "(undefined4 *)(iVar17 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar17 + 0x40)" (( "(") (binary_expression "iVar17 + 0x40" (identifier "iVar17") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (number_literal "0")) (; ";")) (labeled_statement "LAB_000cfc05:\n  piVar7[0x41] = (int)piVar8;" (statement_identifier "LAB_000cfc05") (: ":") (expression_statement "piVar7[0x41] = (int)piVar8;" (assignment_expression "piVar7[0x41] = (int)piVar8" (subscript_expression "piVar7[0x41]" (identifier "piVar7") ([ "[") (number_literal "0x41") (] "]")) (= "=") (cast_expression "(int)piVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar8"))) (; ";"))) (expression_statement "piVar9 = piVar15;" (assignment_expression "piVar9 = piVar15" (identifier "piVar9") (= "=") (identifier "piVar15")) (; ";")) (do_statement "do {\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  } while (piVar9 != (int *)0x0);" (do "do") (compound_statement "{\n    piVar23 = piVar9;\n    piVar9 = (int *)piVar23[0xd];\n  }" ({ "{") (expression_statement "piVar23 = piVar9;" (assignment_expression "piVar23 = piVar9" (identifier "piVar23") (= "=") (identifier "piVar9")) (; ";")) (expression_statement "piVar9 = (int *)piVar23[0xd];" (assignment_expression "piVar9 = (int *)piVar23[0xd]" (identifier "piVar9") (= "=") (cast_expression "(int *)piVar23[0xd]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar23[0xd]" (identifier "piVar23") ([ "[") (number_literal "0xd") (] "]")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(piVar9 != (int *)0x0)" (( "(") (binary_expression "piVar9 != (int *)0x0" (identifier "piVar9") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (; ";")) (expression_statement "piVar23 = (int *)*piVar23;" (assignment_expression "piVar23 = (int *)*piVar23" (identifier "piVar23") (= "=") (cast_expression "(int *)*piVar23" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar23" (* "*") (identifier "piVar23")))) (; ";")) (if_statement "if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }" (if "if") (parenthesized_expression "(((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0))" (( "(") (binary_expression "((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)" (parenthesized_expression "((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0)" (( "(") (binary_expression "(int *)piVar8[iVar28 * 4 + 3] != (int *)0x0" (cast_expression "(int *)piVar8[iVar28 * 4 + 3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[iVar28 * 4 + 3]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 3" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "3")) (] "]"))) (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(piVar23 != (int *)0x0)" (( "(") (binary_expression "piVar23 != (int *)0x0" (identifier "piVar23") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n    iVar17 = *piVar23;\n    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];\n    if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }\n  }" ({ "{") (expression_statement "iVar17 = *piVar23;" (assignment_expression "iVar17 = *piVar23" (identifier "iVar17") (= "=") (pointer_expression "*piVar23" (* "*") (identifier "piVar23"))) (; ";")) (expression_statement "iVar10 = *(int *)piVar8[iVar28 * 4 + 3];" (assignment_expression "iVar10 = *(int *)piVar8[iVar28 * 4 + 3]" (identifier "iVar10") (= "=") (pointer_expression "*(int *)piVar8[iVar28 * 4 + 3]" (* "*") (cast_expression "(int *)piVar8[iVar28 * 4 + 3]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "piVar8[iVar28 * 4 + 3]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 3" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "3")) (] "]"))))) (; ";")) (if_statement "if (iVar17 != iVar10) {\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }" (if "if") (parenthesized_expression "(iVar17 != iVar10)" (( "(") (binary_expression "iVar17 != iVar10" (identifier "iVar17") (!= "!=") (identifier "iVar10")) () ")")) (compound_statement "{\n      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);\n      piVar7[0x41] = iVar13;\n      local_48 = 2;\n      goto LAB_000cfaec;\n    }" ({ "{") (expression_statement "FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10);" (call_expression "FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10)" (identifier "FUN_00074ee0") (argument_list "(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,\n                   iVar10)" (( "(") (identifier "piVar7") (, ",") (string_literal ""table %s has %d values for %d columns"" (" """) (string_content "table %s has %d values for %d columns") (" """)) (, ",") (subscript_expression "piVar8[iVar28 * 4 + 2]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 2" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "2")) (] "]")) (, ",") (identifier "iVar17") (, ",") (identifier "iVar10") () ")"))) (; ";")) (expression_statement "piVar7[0x41] = iVar13;" (assignment_expression "piVar7[0x41] = iVar13" (subscript_expression "piVar7[0x41]" (identifier "piVar7") ([ "[") (number_literal "0x41") (] "]")) (= "=") (identifier "iVar13")) (; ";")) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" (identifier "local_48") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_000cfaec;" (goto "goto") (statement_identifier "LAB_000cfaec") (; ";")) (} "}"))) (} "}"))) (expression_statement "FUN_000ae410(puVar16 + 1);" (call_expression "FUN_000ae410(puVar16 + 1)" (identifier "FUN_000ae410") (argument_list "(puVar16 + 1)" (( "(") (binary_expression "puVar16 + 1" (identifier "puVar16") (+ "+") (number_literal "1")) () ")"))) (; ";")) (if_statement "if (bVar11 < 2) {\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }" (if "if") (parenthesized_expression "(bVar11 < 2)" (( "(") (binary_expression "bVar11 < 2" (identifier "bVar11") (< "<") (number_literal "2")) () ")")) (compound_statement "{\n    pcVar21 = "multiple recursive references: %s";\n    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }\n    piVar8[iVar28 * 4 + 5] = (int)pcVar21;\n    if (param_1[2] != 0) {\n      FUN_0004a550();\n    }\n  }" ({ "{") (expression_statement "pcVar21 = "multiple recursive references: %s";" (assignment_expression "pcVar21 = "multiple recursive references: %s"" (identifier "pcVar21") (= "=") (string_literal ""multiple recursive references: %s"" (" """) (string_content "multiple recursive references: %s") (" """))) (; ";")) (if_statement "if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {\n      pcVar21 = "recursive reference in a subquery: %s";\n    }" (if "if") (parenthesized_expression "((*(byte *)((int)piVar15 + 9) & 0x20) == 0)" (( "(") (binary_expression "(*(byte *)((int)piVar15 + 9) & 0x20) == 0" (parenthesized_expression "(*(byte *)((int)piVar15 + 9) & 0x20)" (( "(") (binary_expression "*(byte *)((int)piVar15 + 9) & 0x20" (pointer_expression "*(byte *)((int)piVar15 + 9)" (* "*") (cast_expression "(byte *)((int)piVar15 + 9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar15 + 9)" (( "(") (binary_expression "(int)piVar15 + 9" (cast_expression "(int)piVar15" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar15")) (+ "+") (number_literal "9")) () ")")))) (& "&") (number_literal "0x20")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      pcVar21 = "recursive reference in a subquery: %s";\n    }" ({ "{") (expression_statement "pcVar21 = "recursive reference in a subquery: %s";" (assignment_expression "pcVar21 = "recursive reference in a subquery: %s"" (identifier "pcVar21") (= "=") (string_literal ""recursive reference in a subquery: %s"" (" """) (string_content "recursive reference in a subquery: %s") (" """))) (; ";")) (} "}"))) (expression_statement "piVar8[iVar28 * 4 + 5] = (int)pcVar21;" (assignment_expression "piVar8[iVar28 * 4 + 5] = (int)pcVar21" (subscript_expression "piVar8[iVar28 * 4 + 5]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "5")) (] "]")) (= "=") (cast_expression "(int)pcVar21" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar21"))) (; ";")) (if_statement "if (param_1[2] != 0) {\n      FUN_0004a550();\n    }" (if "if") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      FUN_0004a550();\n    }" ({ "{") (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" (identifier "FUN_0004a550") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar8[iVar28 * 4 + 5] = 0;" (assignment_expression "piVar8[iVar28 * 4 + 5] = 0" (subscript_expression "piVar8[iVar28 * 4 + 5]" (identifier "piVar8") ([ "[") (binary_expression "iVar28 * 4 + 5" (binary_expression "iVar28 * 4" (identifier "iVar28") (* "*") (number_literal "4")) (+ "+") (number_literal "5")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar7[0x41] = iVar13;" (assignment_expression "piVar7[0x41] = iVar13" (subscript_expression "piVar7[0x41]" (identifier "piVar7") ([ "[") (number_literal "0x41") (] "]")) (= "=") (identifier "iVar13")) (; ";")) (labeled_statement "LAB_000cfc82:\n  if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }" (statement_identifier "LAB_000cfc82") (: ":") (if_statement "if (piVar27[4] == 0) {\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }" (if "if") (parenthesized_expression "(piVar27[4] == 0)" (( "(") (binary_expression "piVar27[4] == 0" (subscript_expression "piVar27[4]" (identifier "piVar27") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }\n  }" ({ "{") (if_statement "if (piVar27[2] == 0) {\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }\n    else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }" (if "if") (parenthesized_expression "(piVar27[2] == 0)" (( "(") (binary_expression "piVar27[2] == 0" (subscript_expression "piVar27[2]" (identifier "piVar27") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;\n    }" ({ "{") (labeled_statement "LAB_000cfd90:\n      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;" (statement_identifier "LAB_000cfd90") (: ":") (if_statement "if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;" (if "if") (parenthesized_expression "((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0))" (( "(") (binary_expression "(((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||\n         (iVar28 = FUN_000ae800(), iVar28 != 0)" (parenthesized_expression "(((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0))" (( "(") (binary_expression "((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)" (parenthesized_expression "((piVar27[5] != 0) && (param_1[2] != 0))" (( "(") (binary_expression "(piVar27[5] != 0) && (param_1[2] != 0)" (parenthesized_expression "(piVar27[5] != 0)" (( "(") (binary_expression "piVar27[5] != 0" (subscript_expression "piVar27[5]" (identifier "piVar27") ([ "[") (number_literal "5") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(iVar28 = FUN_0004a550(), iVar28 != 0)" (( "(") (comma_expression "iVar28 = FUN_0004a550(), iVar28 != 0" (assignment_expression "iVar28 = FUN_0004a550()" (identifier "iVar28") (= "=") (call_expression "FUN_0004a550()" (identifier "FUN_0004a550") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar28 != 0" (identifier "iVar28") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(iVar28 = FUN_000ae800(), iVar28 != 0)" (( "(") (comma_expression "iVar28 = FUN_000ae800(), iVar28 != 0" (assignment_expression "iVar28 = FUN_000ae800()" (identifier "iVar28") (= "=") (call_expression "FUN_000ae800()" (identifier "FUN_000ae800") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "iVar28 != 0" (identifier "iVar28") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (goto_statement "goto LAB_000cfae4;" (goto "goto") (statement_identifier "LAB_000cfae4") (; ";")))) (} "}")) (else_clause "else {\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }" (else "else") (compound_statement "{\nLAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();\n      piVar27[4] = (int)puVar16;\n      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;\n      if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }\n      puVar16[8] = puVar16[8] + 1;\n      if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }\n      iVar28 = FUN_000c26b0();\n      if (iVar28 != 0) goto LAB_000cfae4;\n      iVar28 = FUN_0005a810();\n      piVar27[5] = iVar28;\n      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);\n      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;\n      if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }\n      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;\n    }" ({ "{") (labeled_statement "LAB_000cfcb3:\n      puVar16 = (undefined4 *)FUN_000cf6d0();" (statement_identifier "LAB_000cfcb3") (: ":") (expression_statement "puVar16 = (undefined4 *)FUN_000cf6d0();" (assignment_expression "puVar16 = (undefined4 *)FUN_000cf6d0()" (identifier "puVar16") (= "=") (cast_expression "(undefined4 *)FUN_000cf6d0()" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000cf6d0()" (identifier "FUN_000cf6d0") (argument_list "()" (( "(") () ")"))))) (; ";"))) (expression_statement "piVar27[4] = (int)puVar16;" (assignment_expression "piVar27[4] = (int)puVar16" (subscript_expression "piVar27[4]" (identifier "piVar27") ([ "[") (number_literal "4") (] "]")) (= "=") (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16"))) (; ";")) (if_statement "if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;" (if "if") (parenthesized_expression "(puVar16 == (undefined4 *)0x0)" (( "(") (binary_expression "puVar16 == (undefined4 *)0x0" (identifier "puVar16") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000cfae4;" (goto "goto") (statement_identifier "LAB_000cfae4") (; ";"))) (if_statement "if (0xfffe < (uint)puVar16[8]) {\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }" (if "if") (parenthesized_expression "(0xfffe < (uint)puVar16[8])" (( "(") (binary_expression "0xfffe < (uint)puVar16[8]" (number_literal "0xfffe") (< "<") (cast_expression "(uint)puVar16[8]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar16[8]" (identifier "puVar16") ([ "[") (number_literal "8") (] "]")))) () ")")) (compound_statement "{\n        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);\n        piVar27[4] = 0;\n        local_48 = 2;\n        goto LAB_000cfaec;\n      }" ({ "{") (expression_statement "FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);" (call_expression "FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16)" (identifier "FUN_00074ee0") (argument_list "(piVar2,"too many references to \"%s\": max 65535",*puVar16)" (( "(") (identifier "piVar2") (, ",") (string_literal ""too many references to \"%s\": max 65535"" (" """) (string_content "too many references to ") (escape_sequence "\"") (string_content "%s") (escape_sequence "\"") (string_content ": max 65535") (" """)) (, ",") (pointer_expression "*puVar16" (* "*") (identifier "puVar16")) () ")"))) (; ";")) (expression_statement "piVar27[4] = 0;" (assignment_expression "piVar27[4] = 0" (subscript_expression "piVar27[4]" (identifier "piVar27") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" (identifier "local_48") (= "=") (number_literal "2")) (; ";")) (goto_statement "goto LAB_000cfaec;" (goto "goto") (statement_identifier "LAB_000cfaec") (; ";")) (} "}"))) (expression_statement "puVar16[8] = puVar16[8] + 1;" (assignment_expression "puVar16[8] = puVar16[8] + 1" (subscript_expression "puVar16[8]" (identifier "puVar16") ([ "[") (number_literal "8") (] "]")) (= "=") (binary_expression "puVar16[8] + 1" (subscript_expression "puVar16[8]" (identifier "puVar16") ([ "[") (number_literal "8") (] "]")) (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (puVar16[0xe] == 0) {\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }" (if "if") (parenthesized_expression "(puVar16[0xe] == 0)" (( "(") (binary_expression "puVar16[0xe] == 0" (subscript_expression "puVar16[0xe]" (identifier "puVar16") ([ "[") (number_literal "0xe") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }\n        if (puVar16[3] == 0) goto LAB_000cfc89;\n      }" ({ "{") (if_statement "if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }" (if "if") (parenthesized_expression "((*(byte *)((int)piVar27 + 0x25) & 4) != 0)" (( "(") (binary_expression "(*(byte *)((int)piVar27 + 0x25) & 4) != 0" (parenthesized_expression "(*(byte *)((int)piVar27 + 0x25) & 4)" (( "(") (binary_expression "*(byte *)((int)piVar27 + 0x25) & 4" (pointer_expression "*(byte *)((int)piVar27 + 0x25)" (* "*") (cast_expression "(byte *)((int)piVar27 + 0x25)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)piVar27 + 0x25)" (( "(") (binary_expression "(int)piVar27 + 0x25" (cast_expression "(int)piVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar27")) (+ "+") (number_literal "0x25")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          pcVar21 = "\'%s\' is not a function";\n          goto LAB_000cfad7;\n        }" ({ "{") (expression_statement "pcVar21 = "\'%s\' is not a function";" (assignment_expression "pcVar21 = "\'%s\' is not a function"" (identifier "pcVar21") (= "=") (string_literal ""\'%s\' is not a function"" (" """) (escape_sequence "\'") (string_content "%s") (escape_sequence "\'") (string_content " is not a function") (" """))) (; ";")) (goto_statement "goto LAB_000cfad7;" (goto "goto") (statement_identifier "LAB_000cfad7") (; ";")) (} "}"))) (if_statement "if (puVar16[3] == 0) goto LAB_000cfc89;" (if "if") (parenthesized_expression "(puVar16[3] == 0)" (( "(") (binary_expression "puVar16[3] == 0" (subscript_expression "puVar16[3]" (identifier "puVar16") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cfc89;" (goto "goto") (statement_identifier "LAB_000cfc89") (; ";"))) (} "}"))) (expression_statement "iVar28 = FUN_000c26b0();" (assignment_expression "iVar28 = FUN_000c26b0()" (identifier "iVar28") (= "=") (call_expression "FUN_000c26b0()" (identifier "FUN_000c26b0") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (iVar28 != 0) goto LAB_000cfae4;" (if "if") (parenthesized_expression "(iVar28 != 0)" (( "(") (binary_expression "iVar28 != 0" (identifier "iVar28") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cfae4;" (goto "goto") (statement_identifier "LAB_000cfae4") (; ";"))) (expression_statement "iVar28 = FUN_0005a810();" (assignment_expression "iVar28 = FUN_0005a810()" (identifier "iVar28") (= "=") (call_expression "FUN_0005a810()" (identifier "FUN_0005a810") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar27[5] = iVar28;" (assignment_expression "piVar27[5] = iVar28" (subscript_expression "piVar27[5]" (identifier "piVar27") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar28")) (; ";")) (expression_statement "uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);" (assignment_expression "uVar1 = *(undefined2 *)((int)puVar16 + 0x2a)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined2 *)((int)puVar16 + 0x2a)" (* "*") (cast_expression "(undefined2 *)((int)puVar16 + 0x2a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 0x2a)" (( "(") (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "0x2a")) () ")"))))) (; ";")) (expression_statement "*(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;" (assignment_expression "*(undefined2 *)((int)puVar16 + 0x2a) = 0xffff" (pointer_expression "*(undefined2 *)((int)puVar16 + 0x2a)" (* "*") (cast_expression "(undefined2 *)((int)puVar16 + 0x2a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 0x2a)" (( "(") (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "0x2a")) () ")")))) (= "=") (number_literal "0xffff")) (; ";")) (if_statement "if ((piVar27[5] != 0) && (param_1[2] != 0)) {\n        FUN_0004a550();\n      }" (if "if") (parenthesized_expression "((piVar27[5] != 0) && (param_1[2] != 0))" (( "(") (binary_expression "(piVar27[5] != 0) && (param_1[2] != 0)" (parenthesized_expression "(piVar27[5] != 0)" (( "(") (binary_expression "piVar27[5] != 0" (subscript_expression "piVar27[5]" (identifier "piVar27") ([ "[") (number_literal "5") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(param_1[2] != 0)" (( "(") (binary_expression "param_1[2] != 0" (subscript_expression "param_1[2]" (identifier "param_1") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        FUN_0004a550();\n      }" ({ "{") (expression_statement "FUN_0004a550();" (call_expression "FUN_0004a550()" (identifier "FUN_0004a550") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "*(undefined2 *)((int)puVar16 + 0x2a) = uVar1;" (assignment_expression "*(undefined2 *)((int)puVar16 + 0x2a) = uVar1" (pointer_expression "*(undefined2 *)((int)puVar16 + 0x2a)" (* "*") (cast_expression "(undefined2 *)((int)puVar16 + 0x2a)" (( "(") (type_descriptor "undefined2 *" (type_identifier "undefined2") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar16 + 0x2a)" (( "(") (binary_expression "(int)puVar16 + 0x2a" (cast_expression "(int)puVar16" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar16")) (+ "+") (number_literal "0x2a")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_000cfc89:\n  iVar28 = FUN_000757e0();" (statement_identifier "LAB_000cfc89") (: ":") (expression_statement "iVar28 = FUN_000757e0();" (assignment_expression "iVar28 = FUN_000757e0()" (identifier "iVar28") (= "=") (call_expression "FUN_000757e0()" (identifier "FUN_000757e0") (argument_list "()" (( "(") () ")")))) (; ";"))) (if_statement "if (iVar28 != 0) goto LAB_000cfae4;" (if "if") (parenthesized_expression "(iVar28 != 0)" (( "(") (binary_expression "iVar28 != 0" (identifier "iVar28") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000cfae4;" (goto "goto") (statement_identifier "LAB_000cfae4") (; ";"))) (labeled_statement "LAB_000cf910:\n  local_88 = (byte *)((int)local_88 + 1);" (statement_identifier "LAB_000cf910") (: ":") (expression_statement "local_88 = (byte *)((int)local_88 + 1);" (assignment_expression "local_88 = (byte *)((int)local_88 + 1)" (identifier "local_88") (= "=") (cast_expression "(byte *)((int)local_88 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)local_88 + 1)" (( "(") (binary_expression "(int)local_88 + 1" (cast_expression "(int)local_88" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88")) (+ "+") (number_literal "1")) () ")")))) (; ";"))) (expression_statement "piVar27 = piVar27 + 0x11;" (assignment_expression "piVar27 = piVar27 + 0x11" (identifier "piVar27") (= "=") (binary_expression "piVar27 + 0x11" (identifier "piVar27") (+ "+") (number_literal "0x11"))) (; ";")) (if_statement "if (*piVar5 <= (int)local_88) goto LAB_000cf928;" (if "if") (parenthesized_expression "(*piVar5 <= (int)local_88)" (( "(") (binary_expression "*piVar5 <= (int)local_88" (pointer_expression "*piVar5" (* "*") (identifier "piVar5")) (<= "<=") (cast_expression "(int)local_88" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "local_88"))) () ")")) (goto_statement "goto LAB_000cf928;" (goto "goto") (statement_identifier "LAB_000cf928") (; ";"))) (goto_statement "goto LAB_000cf800;" (goto "goto") (statement_identifier "LAB_000cf800") (; ";")) (labeled_statement "LAB_000d07cd:\n  FUN_00056520();" (statement_identifier "LAB_000d07cd") (: ":") (expression_statement "FUN_00056520();" (call_expression "FUN_00056520()" (identifier "FUN_00056520") (argument_list "()" (( "(") () ")"))) (; ";"))) (expression_statement "*param_2 = (int)piVar27;" (assignment_expression "*param_2 = (int)piVar27" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (cast_expression "(int)piVar27" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "piVar27"))) (; ";")) (labeled_statement "LAB_000d07de:\n  local_48 = 0;" (statement_identifier "LAB_000d07de") (: ":") (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";"))) (if_statement "if (piVar27 == (int *)0x0) goto LAB_000cfaec;" (if "if") (parenthesized_expression "(piVar27 == (int *)0x0)" (( "(") (binary_expression "piVar27 == (int *)0x0" (identifier "piVar27") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_000cfaec;" (goto "goto") (statement_identifier "LAB_000cfaec") (; ";"))) (if_statement "if (*piVar27 <= *(int *)(iVar3 + 0x70)) {\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }" (if "if") (parenthesized_expression "(*piVar27 <= *(int *)(iVar3 + 0x70))" (( "(") (binary_expression "*piVar27 <= *(int *)(iVar3 + 0x70)" (pointer_expression "*piVar27" (* "*") (identifier "piVar27")) (<= "<=") (pointer_expression "*(int *)(iVar3 + 0x70)" (* "*") (cast_expression "(int *)(iVar3 + 0x70)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar3 + 0x70)" (( "(") (binary_expression "iVar3 + 0x70" (identifier "iVar3") (+ "+") (number_literal "0x70")) () ")"))))) () ")")) (compound_statement "{\n    if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }\n    goto LAB_000cfaec;\n  }" ({ "{") (if_statement "if (((uint)local_40 & 0x200004) != 0) {\n      param_2[2] = param_2[2] | 0x40000;\n    }" (if "if") (parenthesized_expression "(((uint)local_40 & 0x200004) != 0)" (( "(") (binary_expression "((uint)local_40 & 0x200004) != 0" (parenthesized_expression "((uint)local_40 & 0x200004)" (( "(") (binary_expression "(uint)local_40 & 0x200004" (cast_expression "(uint)local_40" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "local_40")) (& "&") (number_literal "0x200004")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      param_2[2] = param_2[2] | 0x40000;\n    }" ({ "{") (expression_statement "param_2[2] = param_2[2] | 0x40000;" (assignment_expression "param_2[2] = param_2[2] | 0x40000" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "param_2[2] | 0x40000" (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]")) (| "|") (number_literal "0x40000"))) (; ";")) (} "}"))) (goto_statement "goto LAB_000cfaec;" (goto "goto") (statement_identifier "LAB_000cfaec") (; ";")) (} "}"))) (expression_statement "pcVar21 = "too many columns in result set";" (assignment_expression "pcVar21 = "too many columns in result set"" (identifier "pcVar21") (= "=") (string_literal ""too many columns in result set"" (" """) (string_content "too many columns in result set") (" """))) (; ";")) (labeled_statement "LAB_000cfad7:\n  FUN_00074ee0(piVar2,pcVar21);" (statement_identifier "LAB_000cfad7") (: ":") (expression_statement "FUN_00074ee0(piVar2,pcVar21);" (call_expression "FUN_00074ee0(piVar2,pcVar21)" (identifier "FUN_00074ee0") (argument_list "(piVar2,pcVar21)" (( "(") (identifier "piVar2") (, ",") (identifier "pcVar21") () ")"))) (; ";"))) (labeled_statement "LAB_000cfae4:\n  local_48 = 2;" (statement_identifier "LAB_000cfae4") (: ":") (expression_statement "local_48 = 2;" (assignment_expression "local_48 = 2" (identifier "local_48") (= "=") (number_literal "2")) (; ";"))) (labeled_statement "LAB_000cfaec:\n  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }" (statement_identifier "LAB_000cfaec") (: ":") (if_statement "if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_48;\n  }" (if "if") (parenthesized_expression "(local_20 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "local_20 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "local_20") (== "==") (pointer_expression "*(int *)(in_GS_OFFSET + 0x14)" (* "*") (cast_expression "(int *)(in_GS_OFFSET + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_GS_OFFSET + 0x14)" (( "(") (binary_expression "in_GS_OFFSET + 0x14" (identifier "in_GS_OFFSET") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n    return local_48;\n  }" ({ "{") (return_statement "return local_48;" (return "return") (identifier "local_48") (; ";")) (} "}")))) (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" (identifier "FUN_00116110") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */
/* WARNING: Unknown calling convention */

int function_1(type_1 *pWalker,type_2 *p)

{
  type_3 *puVar1;
  type_4 **ppCVar2;
  type_5 iVar3;
  type_6 *pParse;
  int var_64;
  type_7 *db;
  type_8 *pList;
  type_9 *var_29;
  type_10 *var_6;
  type_6 *pParse_00;
  type_8 *var_17;
  type_7 *db_00;
  type_2 *var_56;
  type_9 *var_57;
  bool bVar9;
  type_11 var_39;
  type_10 var_5;
  type_12 var_28;
  int var_14;
  type_13 var_2;
  type_14 *pEVar15;
  type_10 *var_26;
  type_15 *var_10;
  type_2 *pSVar18;
  int var_54;
  type_14 *pEVar20;
  size_t var_45;
  char *var_7;
  type_12 var_30;
  type_16 var_18;
  char **var_55;
  type_10 *var_27;
  type_2 *pSVar26;
  type_4 **ppCVar27;
  type_17 *pWVar28;
  type_4 *pCVar29;
  type_18 *var_62;
  type_9 *var_46;
  int var_15;
  int var_1;
  bool var_35;
  char *in_stack_ffffff68;
  type_4 **in_stack_ffffff6c;
  int *piTab;
  type_7 *in_stack_ffffff74;
  type_2 *var_32;
  type_14 **ppWhere;
  type_10 var_22;
  type_17 *in_stack_ffffff7c;
  type_17 *var_3;
  type_13 uVar36;
  type_18 *var_51;
  int var_36;
  type_4 **var_33;
  int var_25;
  char *var_48;
  type_4 **var_21;
  char *var_41;
  type_19 *var_53;
  int local_48;
  int var_52;
  type_8 *local_40;
  int iLeft;
  type_20 sColname;
  
  pParse = pWalker->pParse;
  var_64 = *(int *)(var_1 + 0x14);
  db = pParse->db;
  var_2 = p->selFlags;
  p->selFlags = var_2 | 0x40;
  if (db->mallocFailed == '\0') {
    if ((var_2 & 0x40) != 0) {
      local_48 = 1;
      goto LAB_000cfaec;
    }
    pList = p->pSrc;
    var_29 = p->pEList;
    var_3 = p->pWith;
    if (var_3 != (type_17 *)0x0) {
      var_3->pOuter = pParse->pWith;
      pParse->pWith = var_3;
    }
    piTab = (int *)0xcf7c5;
    var_4(pParse,pList);
    if (0 < pList->nSrc) {
      var_32 = (type_2 *)0x0;
      var_62 = pList->a;
LAB_000cf800:
      var_5 = (var_62->fg).field_0x1;
      if ((var_5 & 0x20) != 0) goto LAB_000cf910;
      if (var_62->zDatabase != (char *)0x0) goto LAB_000cfc82;
      var_6 = (type_10 *)var_62->zName;
      if (var_6 == (type_10 *)0x0) {
        if (var_62->pTab == (type_15 *)0x0) goto LAB_000cfd90;
        goto LAB_000cfc89;
      }
      pParse_00 = pWalker->pParse;
      for (var_3 = pParse_00->pWith; in_stack_ffffff7c = var_3, var_3 != (type_17 *)0x0;
          var_3 = var_3->pOuter) {
        if (0 < var_3->nCte) {
          var_15 = 0;
          do {
            var_26 = (type_10 *)var_3->a[var_15].zName;
            if (""[*var_6] == ""[*var_26]) {
              if (*var_6 == 0) {
                var_7 = var_3->a[var_15].zCteErr;
joined_r0x000cfd51:
                if (var_7 != (char *)0x0) goto LAB_000cfd64;
                if ((var_5 & 4) != 0) {
                  var_7 = "\'%s\' is not a function";
                  var_26 = var_6;
                  goto LAB_000cfd64;
                }
                db_00 = pParse_00->db;
                var_10 = (type_15 *)var_8(db_00,var_9(var_32,in_stack_ffffff74));
                var_62->pTab = var_10;
                if (var_10 == (type_15 *)0x0) goto LAB_000cfae4;
                var_10->nTabRef = 1;
                var_7 = var_11(db_00,var_3->a[var_15].zName);
                var_10->tabFlags = var_10->tabFlags | 0x42;
                var_10->zName = var_7;
                var_10->nRowLogEst = 200;
                var_10->iPKey = -1;
                pSVar18 = var_12(in_stack_ffffff74,var_32,(int)in_stack_ffffff7c);
                var_62->pSelect = pSVar18;
                if (db_00->mallocFailed != '\0') goto LAB_000cfae4;
                var_5 = pSVar18->op + 0x85;
                if (1 < var_5) {
                  if (2 < var_10->nTabRef) goto LAB_000cffd0;
                  var_3->a[var_15].zCteErr = "circular reference: %s";
                  pWVar28 = pParse_00->pWith;
                  pParse_00->pWith = in_stack_ffffff7c;
                  if (pWalker->xSelectCallback != (type_21 *)0x0) {
                    var_13(pWalker,pSVar18);
                  }
                  goto LAB_000cfc05;
                }
                var_17 = pSVar18->pSrc;
                if (var_17->nSrc < 1) goto LAB_000cfecc;
                var_55 = &var_17->a[0].zDatabase;
                var_14 = 0;
                goto LAB_000cfe32;
              }
              var_14 = 1;
              while (var_27 = var_6 + var_14, ""[*var_27] == ""[var_26[var_14]]) {
                var_14 = var_14 + 1;
                if (*var_27 == 0) {
                  var_7 = var_3->a[var_15].zCteErr;
                  goto joined_r0x000cfd51;
                }
              }
            }
            var_15 = var_15 + 1;
          } while (var_3->nCte != var_15);
        }
      }
      if (var_62->pTab == (type_15 *)0x0) goto LAB_000cfcb3;
      piTab = (int *)0xcf908;
      var_15 = var_16((type_6 *)in_stack_ffffff74,(type_18 *)var_32);
      in_stack_ffffff7c = var_3;
      if (var_15 == 0) goto LAB_000cf910;
      goto LAB_000cfae4;
    }
LAB_000cf928:
    if (db->mallocFailed == '\0') {
      var_17 = p->pSrc;
      local_40 = var_17 + 1;
      if (1 < var_17->nSrc) {
        var_41 = (char *)0x1;
        do {
          var_7 = local_40->a[0].zName;
          if ((local_40[-1].a[0].pTab != (type_15 *)0x0) && (var_7 != (char *)0x0)) {
            var_5 = (type_10)local_40->a[0].regReturn;
            var_18 = local_40->a[0].fg;
            var_22 = var_5 & 0x20;
            var_2 = (type_13)((var_5 & 0x20) != 0);
            if ((var_5 & 4) != 0) {
              if ((var_18 != (type_16)0x0) || (local_40->a[0].iCursor != 0)) {
                var_7 = "a NATURAL join may not have an ON or USING clause";
                goto LAB_000cfad7;
              }
              var_15 = 0;
              ppWhere = &p->pWhere;
              if (*(short *)(var_7 + 0x2a) < 1) goto LAB_000d0070;
              uVar36 = var_5 & 0xffffff20;
              do {
                in_stack_ffffff68 = (char *)&sColname;
                var_14 = var_19((type_8 *)&iLeft,(int)&sColname,
                                             (char *)in_stack_ffffff6c,piTab,
                                             (int *)in_stack_ffffff74);
                if (var_14 != 0) {
                  var_20(pParse,var_17,iLeft,(int)sColname.z,(int)var_41,var_15,var_2,
                               ppWhere);
                }
                var_15 = var_15 + 1;
              } while (var_15 < *(short *)(var_7 + 0x2a));
              var_22 = (type_10)uVar36;
              var_18 = local_40->a[0].fg;
            }
            var_21 = (type_4 **)local_40->a[0].iCursor;
            if (var_18 != (type_16)0x0) {
              if (var_21 != (type_4 **)0x0) {
                var_7 = "cannot have both ON and USING clauses in the same join";
                goto LAB_000cfad7;
              }
              if (var_22 != 0) {
                var_23((type_14 *)var_18,local_40->a[0].regResult);
                var_18 = local_40->a[0].fg;
              }
              piTab = (int *)0xcf9d0;
              pEVar15 = var_24(pParse->db,p->pWhere,(type_14 *)var_18);
              p->pWhere = pEVar15;
              local_40->a[0].fg = (type_16)0x0;
              var_21 = (type_4 **)local_40->a[0].iCursor;
            }
            if ((var_21 != (type_4 **)0x0) && (var_25 = 0, 0 < (int)var_21[1])) {
LAB_000cfa10:
              var_6 = *(type_10 **)((int)*var_21 + var_25 * 8);
              if (0 < *(short *)(var_7 + 0x2a)) {
                var_15 = 0;
                do {
                  var_26 = *(type_10 **)(*(int *)(var_7 + 4) + var_15 * 0x10);
                  var_5 = *var_26;
                  var_27 = var_6;
                  if (""[*var_6] == ""[var_5]) {
                    do {
                      if (var_5 == 0) {
                        in_stack_ffffff68 = (char *)&sColname;
                        var_14 = var_19((type_8 *)&iLeft,(int)&sColname,
                                                     (char *)in_stack_ffffff6c,piTab,
                                                     (int *)in_stack_ffffff74);
                        if (var_14 == 0) goto LAB_000cfac6;
                        var_20(pParse,var_17,iLeft,(int)sColname.z,(int)var_41,var_15,var_2
                                     ,&p->pWhere);
                        var_25 = var_25 + 1;
                        if (var_25 < (int)var_21[1]) goto LAB_000cfa10;
                        goto LAB_000d0070;
                      }
                      var_26 = var_26 + 1;
                      var_27 = var_27 + 1;
                      var_5 = *var_26;
                    } while (""[var_5] == ""[*var_27]);
                  }
                  var_15 = var_15 + 1;
                } while (var_15 != *(short *)(var_7 + 0x2a));
              }
LAB_000cfac6:
              var_7 = "cannot join using column %s - column not present in both tables";
              goto LAB_000cfad7;
            }
          }
LAB_000d0070:
          local_40 = (type_8 *)&local_40->a[0].u1;
          bVar9 = (int)var_41 < var_17->nSrc + -1;
          var_41 = (char *)((int)var_41 + 1);
        } while (bVar9);
      }
      if (0 < var_29->nExpr) {
        pEVar15 = var_29->a[0].pExpr;
        var_28 = pEVar15->op;
        if (var_28 == 0xa8) {
          local_40 = (type_8 *)0x0;
        }
        else {
          var_46 = var_29 + 1;
          var_15 = 0;
          local_40 = (type_8 *)0x0;
          pEVar20 = pEVar15;
          var_30 = var_28;
          do {
            if ((var_30 == 0x82) && (pEVar20->pRight->op == 0xa8)) break;
            var_15 = var_15 + 1;
            local_40 = (type_8 *)((type_13)local_40 | pEVar20->flags);
            if (var_15 == var_29->nExpr) {
              var_46 = p->pEList;
              goto LAB_000d07de;
            }
            pEVar20 = (type_14 *)var_46->nExpr;
            var_46 = (type_9 *)&var_46->a[0].u;
            var_30 = pEVar20->op;
          } while (var_30 != 0xa8);
        }
        var_52 = 0;
        var_46 = (type_9 *)0x0;
        var_39 = pParse->db->flags;
        var_53 = var_29->a;
        do {
          local_40 = (type_8 *)((type_13)local_40 | pEVar15->flags);
          if (var_28 == 0xa8) {
            var_33 = (type_4 **)0x0;
            if (pList->nSrc < 1) {
LAB_000d0870:
              in_stack_ffffff68 = "no tables specified";
              var_31(pParse,"no tables specified");
            }
            else {
LAB_000d01d4:
              bVar9 = false;
              var_36 = 0;
              var_51 = pList->a;
              do {
                var_10 = var_51->pTab;
                var_32 = var_51->pSelect;
                var_21 = (type_4 **)var_51->zAlias;
                if (var_21 == (type_4 **)0x0) {
                  var_21 = (type_4 **)var_10->zName;
                }
                if (db->mallocFailed != '\0') break;
                if ((var_32 == (type_2 *)0x0) || ((var_32->selFlags & 0x800) == 0)) {
                  if (var_33 == (type_4 **)0x0) {
LAB_000d0438:
                    if (var_10->pSchema == (type_22 *)0x0) {
                      var_41 = "*";
                      var_32 = (type_2 *)0x0;
                    }
                    else {
                      piTab = (int *)0xd0458;
                      var_15 = var_34(db,var_10->pSchema);
                      if (var_15 < 0) {
                        var_32 = (type_2 *)0x0;
                        var_41 = "*";
                      }
                      else {
                        var_32 = (type_2 *)0x0;
                        var_41 = db->aDb[var_15].zDbSName;
                      }
                    }
                    goto LAB_000d0474;
                  }
                  var_5 = *(type_10 *)var_33;
                  ppCVar2 = var_33;
                  ppCVar27 = var_21;
                  if (""[var_5] == ""[*(type_10 *)var_21]) {
                    do {
                      if (var_5 == 0) goto LAB_000d0438;
                      ppCVar2 = (type_4 **)((int)ppCVar2 + 1);
                      ppCVar27 = (type_4 **)((int)ppCVar27 + 1);
                      var_5 = *(type_10 *)ppCVar2;
                    } while (""[var_5] == ""[*(type_10 *)ppCVar27]);
                  }
                }
                else {
                  var_41 = (char *)0x0;
LAB_000d0474:
                  if (0 < var_10->nCol) {
                    var_35 = var_32 == (type_2 *)0x0;
                    var_15 = 0;
                    do {
                      pCVar29 = var_10->aCol + var_15;
                      var_7 = pCVar29->zName;
                      if (var_33 == (type_4 **)0x0 || var_35) {
                        if (((p->selFlags & 0x20000) == 0) && ((pCVar29->colFlags & 2) != 0))
                        goto LAB_000d062b;
                        if ((var_36 < 1) || (var_33 != (type_4 **)0x0)) goto LAB_000d04f4;
                        if (((var_51->fg).jointype & 4) == 0) {
LAB_000d04da:
                          if (var_51->pUsing != (type_23 *)0x0) {
                            piTab = (int *)0xd04ec;
                            var_14 = var_37(var_51->pUsing,var_7);
                            if (-1 < var_14) goto LAB_000d0623;
                          }
LAB_000d04f4:
                          pEVar15 = var_38(in_stack_ffffff74,(int)var_32,(char *)var_10);
                          if ((var_39 & 0x44) == 4) {
                            var_38(in_stack_ffffff74,(int)var_32,(char *)var_10);
                            pEVar15 = var_40(pParse,0x82,pEVar15,(type_14 *)in_stack_ffffff68);
                            if (var_41 != (char *)0x0) {
                              var_38(in_stack_ffffff74,(int)var_32,(char *)var_10);
                              pEVar15 = var_40(pParse,0x82,pEVar15,(type_14 *)in_stack_ffffff68);
                            }
                            in_stack_ffffff68 = (char *)(type_14 *)0x120ecd;
                            in_stack_ffffff6c = var_21;
                            var_7 = var_42(db,"%s.%s",var_21,var_7);
                            var_48 = var_7;
                          }
                          else {
                            if (1 < pList->nSrc) {
                              var_38(in_stack_ffffff74,(int)var_32,(char *)var_10);
                              pEVar15 = var_40(pParse,0x82,pEVar15,(type_14 *)in_stack_ffffff68);
                              if (var_41 != (char *)0x0) {
                                var_38(in_stack_ffffff74,(int)var_32,(char *)var_10);
                                pEVar15 = var_40(pParse,0x82,pEVar15,(type_14 *)in_stack_ffffff68
                                                      );
                              }
                            }
                            var_48 = (char *)0x0;
                          }
                          piTab = (int *)0xd058f;
                          var_46 = var_43((type_6 *)pParse->db,var_46,pEVar15);
                          sColname.z = var_7;
                          if (var_7 == (char *)0x0) {
                            sColname.n = 0;
                          }
                          else {
                            var_45 = var_44(var_7);
                            sColname.n = var_45 & 0x3fffffff;
                          }
                          if ((var_46 != (type_9 *)0x0) &&
                             (var_47(pParse,var_46,&sColname,0),
                             (p->selFlags & 0x800) != 0)) {
                            var_14 = var_46->nExpr;
                            if (var_32 == (type_2 *)0x0) {
                              var_7 = var_42(db,"%s.%s.%s",var_41,var_21,var_7);
                              var_46->a[var_14 + -1].zSpan = var_7;
                            }
                            else {
                              piTab = (int *)0xd0601;
                              var_7 = var_11(db,var_32->pEList->a[var_15].zSpan);
                              var_46->a[var_14 + -1].zSpan = var_7;
                            }
                            puVar1 = &var_46->a[var_14 + -1].field_0xd;
                            *puVar1 = *puVar1 | 2;
                          }
                          if (var_48 != (char *)0x0) {
                            piTab = (int *)0xd0623;
                            var_49(db,var_48);
                          }
                        }
                        else {
                          in_stack_ffffff68 = (char *)0x0;
                          var_14 = var_19((type_8 *)0x0,0,(char *)in_stack_ffffff6c,
                                                       piTab,(int *)in_stack_ffffff74);
                          if (var_14 == 0) goto LAB_000d04da;
                        }
LAB_000d0623:
                        bVar9 = true;
                      }
                      else {
                        var_14 = var_50
                                           ((char *)0x0,in_stack_ffffff68,(char *)in_stack_ffffff6c,
                                            (char *)piTab);
                        if ((var_14 != 0) &&
                           (((p->selFlags & 0x20000) != 0 || ((pCVar29->colFlags & 2) == 0))))
                        goto LAB_000d04f4;
                      }
LAB_000d062b:
                      var_15 = var_15 + 1;
                    } while (var_15 < var_10->nCol);
                  }
                }
                var_36 = var_36 + 1;
                var_51 = var_51 + 1;
              } while (var_36 < pList->nSrc);
              if (!bVar9) goto LAB_000d02c3;
            }
          }
          else if ((var_28 == 0x82) && (pEVar15->pRight->op == 0xa8)) {
            var_33 = (type_4 **)(pEVar15->pLeft->u).zToken;
            if (0 < pList->nSrc) goto LAB_000d01d4;
LAB_000d02c3:
            if (var_33 == (type_4 **)0x0) goto LAB_000d0870;
            in_stack_ffffff68 = "no such table: %s";
            var_31(pParse,"no such table: %s");
            in_stack_ffffff6c = var_33;
          }
          else {
            piTab = (int *)0xd0155;
            var_46 = var_43((type_6 *)pParse->db,var_46,pEVar15);
            if (var_46 != (type_9 *)0x0) {
              var_15 = var_46->nExpr;
              var_46->a[var_15 + -1].zName = var_53->zName;
              var_46->a[var_15 + -1].zSpan = var_53->zSpan;
              var_53->zName = (char *)0x0;
              var_53->zSpan = (char *)0x0;
            }
            var_53->pExpr = (type_14 *)0x0;
          }
          var_52 = var_52 + 1;
          var_53 = var_53 + 1;
          if (var_29->nExpr <= var_52) goto LAB_000d07cd;
          pEVar15 = var_53->pExpr;
          var_28 = pEVar15->op;
        } while( true );
      }
      local_40 = (type_8 *)0x0;
      var_46 = p->pEList;
      goto LAB_000d07de;
    }
  }
  goto LAB_000cfae4;
LAB_000cfe32:
  do {
    if ((*var_55 == (char *)0x0) && (var_6 = (type_10 *)var_55[1], var_6 != (type_10 *)0x0)) {
      var_26 = (type_10 *)var_3->a[var_15].zName;
      if (""[*var_26] == ""[*var_6]) {
        if (*var_6 != 0) {
          var_54 = 1;
          do {
            var_27 = var_6 + var_54;
            if (""[*var_27] != ""[var_26[var_54]]) {
              var_14 = var_14 + 1;
              var_55 = var_55 + 0x11;
              if (var_14 < var_17->nSrc) goto LAB_000cfe32;
              goto LAB_000cfecc;
            }
            var_54 = var_54 + 1;
          } while (*var_27 != 0);
        }
        var_55[3] = (char *)var_10;
        puVar1 = &var_17->a[var_14].fg.field_0x1;
        *puVar1 = *puVar1 | 0x20;
        var_10->nTabRef = var_10->nTabRef + 1;
        pSVar18->selFlags = pSVar18->selFlags | 0x2000;
      }
    }
    var_14 = var_14 + 1;
    var_55 = var_55 + 0x11;
  } while (var_14 < var_17->nSrc);
LAB_000cfecc:
  if (2 < var_10->nTabRef) {
LAB_000cffd0:
    var_7 = "multiple references to recursive table: %s";
    var_26 = (type_10 *)in_stack_ffffff7c->a[var_15].zName;
LAB_000cfd64:
    var_31(pParse_00,var_7,var_26);
    local_48 = 2;
    goto LAB_000cfaec;
  }
  var_3->a[var_15].zCteErr = "circular reference: %s";
  pWVar28 = pParse_00->pWith;
  pParse_00->pWith = in_stack_ffffff7c;
  var_56 = pSVar18->pPrior;
  var_56->pWith = pSVar18->pWith;
  if (pWalker->xSelectCallback != (type_21 *)0x0) {
    var_13(pWalker,var_56);
  }
  var_56->pWith = (type_17 *)0x0;
LAB_000cfc05:
  pParse_00->pWith = in_stack_ffffff7c;
  var_56 = pSVar18;
  do {
    pSVar26 = var_56;
    var_56 = pSVar26->pPrior;
  } while (var_56 != (type_2 *)0x0);
  var_46 = pSVar26->pEList;
  var_57 = var_3->a[var_15].pCols;
  if ((var_57 != (type_9 *)0x0) && (var_46 != (type_9 *)0x0)) {
    var_14 = var_46->nExpr;
    var_54 = var_57->nExpr;
    if (var_14 != var_54) {
      var_31(pParse_00,"table %s has %d values for %d columns",
                      in_stack_ffffff7c->a[var_15].zName,var_14,var_54);
      pParse_00->pWith = pWVar28;
      local_48 = 2;
      goto LAB_000cfaec;
    }
  }
  var_58
            ((type_6 *)pParse_00->db,(type_9 *)&var_10->aCol,(type_5 *)in_stack_ffffff68,
             in_stack_ffffff6c);
  if (var_5 < 2) {
    var_7 = "multiple recursive references: %s";
    if ((pSVar18->selFlags & 0x2000) == 0) {
      var_7 = "recursive reference in a subquery: %s";
    }
    var_3->a[var_15].zCteErr = var_7;
    if (pWalker->xSelectCallback != (type_21 *)0x0) {
      var_13(pWalker,pSVar18);
    }
  }
  var_3->a[var_15].zCteErr = (char *)0x0;
  pParse_00->pWith = pWVar28;
LAB_000cfc82:
  if (var_62->pTab == (type_15 *)0x0) {
    if (var_62->zName == (char *)0x0) {
LAB_000cfd90:
      if ((((var_62->pSelect != (type_2 *)0x0) &&
           (pWalker->xSelectCallback != (type_21 *)0x0)) &&
          (var_15 = var_13(pWalker,var_62->pSelect), var_15 != 0)) ||
         (var_15 = var_59(pParse,var_62), var_15 != 0)) goto LAB_000cfae4;
    }
    else {
LAB_000cfcb3:
      var_10 = var_60(pParse,0,var_62);
      var_62->pTab = var_10;
      if (var_10 == (type_15 *)0x0) goto LAB_000cfae4;
      if (0xfffe < var_10->nTabRef) {
        var_31(pParse,"too many references to \"%s\": max 65535",var_10->zName);
        var_62->pTab = (type_15 *)0x0;
        local_48 = 2;
        goto LAB_000cfaec;
      }
      var_10->nTabRef = var_10->nTabRef + 1;
      if (var_10->nModuleArg == 0) {
        if (((var_62->fg).field_0x1 & 4) != 0) {
          var_7 = "\'%s\' is not a function";
          goto LAB_000cfad7;
        }
        if (var_10->pSelect == (type_2 *)0x0) goto LAB_000cfc89;
      }
      var_15 = var_61(pParse,var_10);
      if (var_15 != 0) goto LAB_000cfae4;
      pSVar18 = var_12(in_stack_ffffff74,var_32,(int)in_stack_ffffff7c);
      var_62->pSelect = pSVar18;
      iVar3 = var_10->nCol;
      var_10->nCol = -1;
      if ((var_62->pSelect != (type_2 *)0x0) &&
         (pWalker->xSelectCallback != (type_21 *)0x0)) {
        var_13(pWalker,var_62->pSelect);
      }
      var_10->nCol = iVar3;
    }
  }
LAB_000cfc89:
  piTab = (int *)0xcfc94;
  var_15 = var_16((type_6 *)in_stack_ffffff74,(type_18 *)var_32);
  if (var_15 != 0) goto LAB_000cfae4;
LAB_000cf910:
  var_32 = (type_2 *)((int)&var_32->pEList + 1);
  var_62 = var_62 + 1;
  if (pList->nSrc <= (int)var_32) goto LAB_000cf928;
  goto LAB_000cf800;
LAB_000d07cd:
  var_63(db,var_29);
  p->pEList = var_46;
LAB_000d07de:
  local_48 = 0;
  if (var_46 == (type_9 *)0x0) goto LAB_000cfaec;
  if (var_46->nExpr <= db->aLimit[2]) {
    if (((type_13)local_40 & 0x200004) != 0) {
      p->selFlags = p->selFlags | 0x40000;
    }
    goto LAB_000cfaec;
  }
  var_7 = "too many columns in result set";
LAB_000cfad7:
  var_31(pParse,var_7);
LAB_000cfae4:
  local_48 = 2;
LAB_000cfaec:
  if (var_64 == *(int *)(var_1 + 0x14)) {
    return local_48;
  }
                    /* WARNING: Subroutine does not return */
  var_65();
}


(translation_unit (function_definition type: (type_identifier) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (for_statement initializer: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) condition: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))) update: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (escape_sequence) (string_content) (escape_sequence) (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (while_statement condition: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))) right: (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (subscript_expression argument: (identifier) index: (identifier)))))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (goto_statement label: (statement_identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier)))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (binary_expression left: (identifier) right: (number_literal))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)))) consequence: (compound_statement (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (pointer_expression argument: (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier) (identifier) (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (identifier)) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))) (goto_statement label: (statement_identifier)))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) condition: (parenthesized_expression (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content))))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (false)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (char_literal (escape_sequence)))) consequence: (break_statement)) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))))))))))))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))))) consequence: (goto_statement label: (statement_identifier)))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal)))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal)))))))))))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (parenthesized_expression (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal)))))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (call_expression function: (identifier) arguments: (argument_list (number_literal))) right: (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (true))))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal)))))))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (goto_statement label: (statement_identifier))))))) alternative: (else_clause (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (pointer_expression argument: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (identifier))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) condition: (parenthesized_expression (true))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (goto_statement label: (statement_identifier))))))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (pointer_expression argument: (identifier))) right: (subscript_expression argument: (parenthesized_expression (pointer_expression argument: (identifier))) index: (subscript_expression argument: (parenthesized_expression (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))) index: (identifier))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal)))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) right: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content)) (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) (identifier) (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))) right: (binary_expression left: (identifier) right: (number_literal)))))) consequence: (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list)))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (string_literal (string_content) (escape_sequence) (string_content) (escape_sequence) (string_content)) (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (string_literal (escape_sequence) (string_content) (escape_sequence) (string_content)))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) right: (identifier))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (string_literal (string_content)))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (return_statement (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))))))

/* WARNING: Function: __i686.get_pc_thunk.ax replaced with injection: get_pc_thunk_ax */

undefined4 MASKED(int *param_1,int *param_2)

{
  undefined2 uVar1;
  int *piVar2;
  int iVar3;
  uint uVar4;
  int *piVar5;
  int *piVar6;
  int *piVar7;
  int *piVar8;
  int *piVar9;
  int iVar10;
  byte bVar11;
  char cVar12;
  int iVar13;
  byte *pbVar14;
  int *piVar15;
  undefined4 *puVar16;
  int iVar17;
  char *pcVar18;
  undefined4 uVar19;
  size_t sVar20;
  char *pcVar21;
  char cVar22;
  int *piVar23;
  byte *pbVar24;
  byte *pbVar25;
  undefined4 *puVar26;
  int *piVar27;
  int iVar28;
  int in_GS_OFFSET;
  bool bVar29;
  byte *local_88;
  int *local_80;
  int local_78;
  byte *local_74;
  int local_70;
  char *local_68;
  byte *local_64;
  char *local_60;
  int *local_4c;
  undefined4 local_48;
  int local_44;
  int *local_40;
  undefined1 local_2c [4];
  char *local_28;
  uint local_24;
  int local_20;
  
  piVar2 = (int *)*param_1;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  iVar3 = *piVar2;
  uVar4 = param_2[2];
  param_2[2] = uVar4 | 0x40;
  if (*(char *)(iVar3 + 0x4d) == '\0') {
    if ((uVar4 & 0x40) != 0) {
      local_48 = 1;
      goto LAB_000cfaec;
    }
    piVar5 = (int *)param_2[8];
    piVar6 = (int *)*param_2;
    iVar28 = param_2[0x10];
    if (iVar28 != 0) {
      *(int *)(iVar28 + 4) = piVar2[0x41];
      piVar2[0x41] = iVar28;
    }
    FUN_00039910();
    if (0 < *piVar5) {
      local_88 = (byte *)0x0;
      piVar27 = piVar5 + 2;
LAB_000cf800:
      if ((*(byte *)((int)piVar27 + 0x25) & 0x20) != 0) goto LAB_000cf910;
      if (piVar27[1] != 0) goto LAB_000cfc82;
      pbVar25 = (byte *)piVar27[2];
      if (pbVar25 == (byte *)0x0) {
        if (piVar27[4] == 0) goto LAB_000cfd90;
        goto LAB_000cfc89;
      }
      piVar7 = (int *)*param_1;
      for (piVar8 = (int *)piVar7[0x41]; piVar8 != (int *)0x0; piVar8 = (int *)piVar8[1]) {
        if (0 < *piVar8) {
          iVar28 = 0;
          do {
            pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];
            if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[*pbVar14]) {
              if (*pbVar25 == 0) {
                pcVar21 = (char *)piVar8[iVar28 * 4 + 5];
joined_r0x000cfd51:
                if (pcVar21 != (char *)0x0) goto LAB_000cfd64;
                if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {
                  pcVar21 = "\'%s\' is not a function";
                  pbVar14 = pbVar25;
                  goto LAB_000cfd64;
                }
                iVar13 = *piVar7;
                puVar16 = (undefined4 *)FUN_00044520();
                piVar27[4] = (int)puVar16;
                if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;
                puVar16[8] = 1;
                uVar19 = FUN_00044980();
                puVar16[9] = puVar16[9] | 0x42;
                *puVar16 = uVar19;
                *(undefined2 *)(puVar16 + 0xb) = 200;
                *(undefined2 *)(puVar16 + 10) = 0xffff;
                piVar15 = (int *)FUN_0005a810();
                piVar27[5] = (int)piVar15;
                if (*(char *)(iVar13 + 0x4d) != '\0') goto LAB_000cfae4;
                bVar11 = (char)piVar15[1] + 0x85;
                if (1 < bVar11) {
                  if (2 < (uint)puVar16[8]) goto LAB_000cffd0;
                  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";
                  iVar13 = piVar7[0x41];
                  piVar7[0x41] = (int)piVar8;
                  if (param_1[2] != 0) {
                    FUN_0004a550();
                  }
                  goto LAB_000cfc05;
                }
                piVar9 = (int *)piVar15[8];
                if (*piVar9 < 1) goto LAB_000cfecc;
                piVar23 = piVar9 + 3;
                iVar13 = 0;
                goto LAB_000cfe32;
              }
              iVar13 = 1;
              while (pbVar24 = pbVar25 + iVar13,
                    (&DAT_0012c6e0)[*pbVar24] == (&DAT_0012c6e0)[pbVar14[iVar13]]) {
                iVar13 = iVar13 + 1;
                if (*pbVar24 == 0) {
                  pcVar21 = (char *)piVar8[iVar28 * 4 + 5];
                  goto joined_r0x000cfd51;
                }
              }
            }
            iVar28 = iVar28 + 1;
          } while (*piVar8 != iVar28);
        }
      }
      if (piVar27[4] == 0) goto LAB_000cfcb3;
      iVar28 = FUN_000757e0();
      if (iVar28 == 0) goto LAB_000cf910;
      goto LAB_000cfae4;
    }
LAB_000cf928:
    if (*(char *)(iVar3 + 0x4d) == '\0') {
      piVar27 = (int *)param_2[8];
      local_40 = piVar27 + 0x13;
      if (1 < *piVar27) {
        local_60 = (char *)0x1;
        do {
          iVar28 = local_40[4];
          if ((local_40[-0xd] != 0) && (iVar28 != 0)) {
            bVar11 = *(byte *)(local_40 + 9);
            iVar13 = local_40[0xb];
            bVar29 = (bVar11 & 0x20) != 0;
            if ((bVar11 & 4) != 0) {
              if ((iVar13 != 0) || (local_40[0xc] != 0)) {
                pcVar21 = "a NATURAL join may not have an ON or USING clause";
                goto LAB_000cfad7;
              }
              iVar13 = 0;
              if (*(short *)(iVar28 + 0x2a) < 1) goto LAB_000d0070;
              do {
                iVar17 = FUN_00039c70(local_2c,&local_28);
                if (iVar17 != 0) {
                  FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);
                }
                iVar13 = iVar13 + 1;
              } while (iVar13 < *(short *)(iVar28 + 0x2a));
              iVar13 = local_40[0xb];
            }
            local_64 = (byte *)local_40[0xc];
            if (iVar13 != 0) {
              if (local_64 != (byte *)0x0) {
                pcVar21 = "cannot have both ON and USING clauses in the same join";
                goto LAB_000cfad7;
              }
              if ((bVar11 & 0x20) != 0) {
                FUN_00039da0();
              }
              iVar13 = FUN_000569c0();
              param_2[9] = iVar13;
              local_40[0xb] = 0;
              local_64 = (byte *)local_40[0xc];
            }
            if ((local_64 != (byte *)0x0) && (local_70 = 0, 0 < *(int *)((int)local_64 + 4))) {
LAB_000cfa10:
              pbVar25 = *(byte **)(*(int *)local_64 + local_70 * 8);
              if (0 < *(short *)(iVar28 + 0x2a)) {
                iVar13 = 0;
                do {
                  pbVar14 = *(byte **)(*(int *)(iVar28 + 4) + iVar13 * 0x10);
                  bVar11 = *pbVar14;
                  pbVar24 = pbVar25;
                  if ((&DAT_0012c6e0)[*pbVar25] == (&DAT_0012c6e0)[bVar11]) {
                    do {
                      if (bVar11 == 0) {
                        iVar17 = FUN_00039c70(local_2c,&local_28);
                        if (iVar17 == 0) goto LAB_000cfac6;
                        FUN_00075e20(local_28,local_60,iVar13,bVar29,param_2 + 9);
                        local_70 = local_70 + 1;
                        if (local_70 < *(int *)((int)local_64 + 4)) goto LAB_000cfa10;
                        goto LAB_000d0070;
                      }
                      pbVar14 = pbVar14 + 1;
                      pbVar24 = pbVar24 + 1;
                      bVar11 = *pbVar14;
                    } while ((&DAT_0012c6e0)[bVar11] == (&DAT_0012c6e0)[*pbVar24]);
                  }
                  iVar13 = iVar13 + 1;
                } while (iVar13 != *(short *)(iVar28 + 0x2a));
              }
LAB_000cfac6:
              pcVar21 = "cannot join using column %s - column not present in both tables";
              goto LAB_000cfad7;
            }
          }
LAB_000d0070:
          local_40 = local_40 + 0x11;
          bVar29 = (int)local_60 < *piVar27 + -1;
          local_60 = (char *)((int)local_60 + 1);
        } while (bVar29);
      }
      if (0 < *piVar6) {
        pcVar21 = (char *)piVar6[1];
        cVar12 = *pcVar21;
        if (cVar12 == -0x58) {
          local_40 = (int *)0x0;
        }
        else {
          piVar27 = piVar6 + 6;
          iVar28 = 0;
          local_40 = (int *)0x0;
          pcVar18 = pcVar21;
          cVar22 = cVar12;
          do {
            if ((cVar22 == -0x7e) && (**(char **)(pcVar18 + 0x10) == -0x58)) break;
            iVar28 = iVar28 + 1;
            local_40 = (int *)((uint)local_40 | *(uint *)(pcVar18 + 4));
            if (iVar28 == *piVar6) {
              piVar27 = (int *)*param_2;
              goto LAB_000d07de;
            }
            pcVar18 = (char *)*piVar27;
            piVar27 = piVar27 + 5;
            cVar22 = *pcVar18;
          } while (cVar22 != -0x58);
        }
        local_44 = 0;
        piVar27 = (int *)0x0;
        uVar4 = *(uint *)(*piVar2 + 0x1c);
        local_4c = piVar6 + 1;
        do {
          local_40 = (int *)((uint)local_40 | *(uint *)(pcVar21 + 4));
          if (cVar12 == -0x58) {
            local_74 = (byte *)0x0;
            if (*piVar5 < 1) {
LAB_000d0870:
              FUN_00074ee0(piVar2,"no tables specified");
            }
            else {
LAB_000d01d4:
              bVar29 = false;
              local_78 = 0;
              local_80 = piVar5 + 2;
              do {
                puVar16 = (undefined4 *)local_80[4];
                local_88 = (byte *)local_80[5];
                local_64 = (byte *)local_80[3];
                if (local_64 == (byte *)0x0) {
                  local_64 = (byte *)*puVar16;
                }
                if (*(char *)(iVar3 + 0x4d) != '\0') break;
                if ((local_88 == (byte *)0x0) || ((*(byte *)((int)local_88 + 9) & 8) == 0)) {
                  if (local_74 == (byte *)0x0) {
LAB_000d0438:
                    if (puVar16[0x12] == 0) {
                      local_60 = "*";
                      local_88 = (byte *)0x0;
                    }
                    else {
                      iVar28 = FUN_0004c580();
                      if (iVar28 < 0) {
                        local_88 = (byte *)0x0;
                        local_60 = "*";
                      }
                      else {
                        local_88 = (byte *)0x0;
                        local_60 = *(char **)(iVar28 * 0x10 + *(int *)(iVar3 + 0x10));
                      }
                    }
                    goto LAB_000d0474;
                  }
                  if ((&DAT_0012c6e0)[*local_74] == (&DAT_0012c6e0)[*local_64]) {
                    if (*local_74 != 0) {
                      local_88 = local_74;
                      pbVar25 = local_64;
                      do {
                        local_88 = local_88 + 1;
                        pbVar25 = pbVar25 + 1;
                        if ((&DAT_0012c6e0)[*local_88] != (&DAT_0012c6e0)[*pbVar25])
                        goto LAB_000d029d;
                      } while (*local_88 != 0);
                    }
                    goto LAB_000d0438;
                  }
                }
                else {
                  local_60 = (char *)0x0;
LAB_000d0474:
                  if (0 < *(short *)((int)puVar16 + 0x2a)) {
                    iVar28 = 0;
                    do {
                      puVar26 = (undefined4 *)(iVar28 * 0x10 + puVar16[1]);
                      pcVar21 = (char *)*puVar26;
                      if (local_74 == (byte *)0x0 || local_88 == (byte *)0x0) {
                        if (((*(byte *)((int)param_2 + 10) & 2) != 0) ||
                           ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)) {
                          if (((local_78 < 1) || (local_74 != (byte *)0x0)) ||
                             ((((*(byte *)(local_80 + 9) & 4) == 0 ||
                               (iVar13 = FUN_00039c70(0,0), iVar13 == 0)) &&
                              ((local_80[0xc] == 0 || (iVar13 = FUN_0004bf80(), iVar13 < 0))))))
                          goto LAB_000d04f4;
                          goto LAB_000d0623;
                        }
                      }
                      else {
                        iVar13 = FUN_00045a10(0);
                        if ((iVar13 != 0) &&
                           (((*(byte *)((int)param_2 + 10) & 2) != 0 ||
                            ((*(byte *)((int)puVar26 + 0xf) & 2) == 0)))) {
LAB_000d04f4:
                          uVar19 = FUN_00045020();
                          if ((uVar4 & 0x44) == 4) {
                            FUN_00045020();
                            uVar19 = FUN_00075cf0(uVar19);
                            if (local_60 != (char *)0x0) {
                              FUN_00045020();
                              FUN_00075cf0(uVar19);
                            }
                            pcVar21 = (char *)FUN_0007a820(iVar3,"%s.%s",local_64,pcVar21);
                            local_68 = pcVar21;
                          }
                          else {
                            if (1 < *piVar5) {
                              FUN_00045020();
                              uVar19 = FUN_00075cf0(uVar19);
                              if (local_60 != (char *)0x0) {
                                FUN_00045020();
                                FUN_00075cf0(uVar19);
                              }
                            }
                            local_68 = (char *)0x0;
                          }
                          piVar27 = (int *)FUN_000675b0();
                          local_28 = pcVar21;
                          if (pcVar21 == (char *)0x0) {
                            local_24 = 0;
                          }
                          else {
                            sVar20 = strlen(pcVar21);
                            local_24 = sVar20 & 0x3fffffff;
                          }
                          if ((piVar27 != (int *)0x0) &&
                             (FUN_0004b9c0(0), (*(byte *)((int)param_2 + 9) & 8) != 0)) {
                            iVar13 = *piVar27 + -1;
                            if (local_88 == (byte *)0x0) {
                              iVar17 = FUN_0007a820(iVar3,"%s.%s.%s",local_60,local_64,pcVar21);
                              piVar27[iVar13 * 5 + 3] = iVar17;
                            }
                            else {
                              iVar17 = FUN_00044980();
                              piVar27[iVar13 * 5 + 3] = iVar17;
                            }
                            pbVar25 = (byte *)((int)piVar27 + iVar13 * 0x14 + 0x11);
                            *pbVar25 = *pbVar25 | 2;
                          }
                          if (local_68 != (char *)0x0) {
                            FUN_000428d0();
                          }
LAB_000d0623:
                          bVar29 = true;
                        }
                      }
                      iVar28 = iVar28 + 1;
                    } while (iVar28 < *(short *)((int)puVar16 + 0x2a));
                  }
                }
LAB_000d029d:
                local_78 = local_78 + 1;
                local_80 = local_80 + 0x11;
              } while (local_78 < *piVar5);
              if (!bVar29) goto LAB_000d02c3;
            }
          }
          else if ((cVar12 == -0x7e) && (**(char **)(pcVar21 + 0x10) == -0x58)) {
            local_74 = *(byte **)(*(int *)(pcVar21 + 0xc) + 8);
            if (0 < *piVar5) goto LAB_000d01d4;
LAB_000d02c3:
            if (local_74 == (byte *)0x0) goto LAB_000d0870;
            FUN_00074ee0(piVar2,"no such table: %s",local_74);
          }
          else {
            piVar27 = (int *)FUN_000675b0();
            if (piVar27 != (int *)0x0) {
              iVar28 = *piVar27;
              piVar27[iVar28 * 5 + -3] = local_4c[1];
              piVar27[iVar28 * 5 + -2] = local_4c[2];
              local_4c[1] = 0;
              local_4c[2] = 0;
            }
            *local_4c = 0;
          }
          local_44 = local_44 + 1;
          local_4c = local_4c + 5;
          if (*piVar6 <= local_44) goto LAB_000d07cd;
          pcVar21 = (char *)*local_4c;
          cVar12 = *pcVar21;
        } while( true );
      }
      local_40 = (int *)0x0;
      piVar27 = (int *)*param_2;
      goto LAB_000d07de;
    }
  }
  goto LAB_000cfae4;
LAB_000cfe32:
  do {
    if ((*piVar23 == 0) && (pbVar25 = (byte *)piVar23[1], pbVar25 != (byte *)0x0)) {
      if ((&DAT_0012c6e0)[*(byte *)piVar8[iVar28 * 4 + 2]] == (&DAT_0012c6e0)[*pbVar25]) {
        if (*pbVar25 != 0) {
          iVar17 = 1;
          do {
            pbVar14 = pbVar25 + iVar17;
            if ((&DAT_0012c6e0)[*pbVar14] !=
                (&DAT_0012c6e0)[((byte *)piVar8[iVar28 * 4 + 2])[iVar17]]) {
              iVar13 = iVar13 + 1;
              piVar23 = piVar23 + 0x11;
              if (iVar13 < *piVar9) goto LAB_000cfe32;
              goto LAB_000cfecc;
            }
            iVar17 = iVar17 + 1;
          } while (*pbVar14 != 0);
        }
        piVar23[3] = (int)puVar16;
        pbVar25 = (byte *)((int)piVar9 + iVar13 * 0x44 + 0x2d);
        *pbVar25 = *pbVar25 | 0x20;
        puVar16[8] = puVar16[8] + 1;
        piVar15[2] = piVar15[2] | 0x2000;
      }
    }
    iVar13 = iVar13 + 1;
    piVar23 = piVar23 + 0x11;
  } while (iVar13 < *piVar9);
LAB_000cfecc:
  if (2 < (uint)puVar16[8]) {
LAB_000cffd0:
    pcVar21 = "multiple references to recursive table: %s";
    pbVar14 = (byte *)piVar8[iVar28 * 4 + 2];
LAB_000cfd64:
    FUN_00074ee0(piVar7,pcVar21,pbVar14);
    local_48 = 2;
    goto LAB_000cfaec;
  }
  piVar8[iVar28 * 4 + 5] = (int)"circular reference: %s";
  iVar13 = piVar7[0x41];
  piVar7[0x41] = (int)piVar8;
  iVar17 = piVar15[0xd];
  *(int *)(iVar17 + 0x40) = piVar15[0x10];
  if (param_1[2] != 0) {
    FUN_0004a550();
  }
  *(undefined4 *)(iVar17 + 0x40) = 0;
LAB_000cfc05:
  piVar7[0x41] = (int)piVar8;
  piVar9 = piVar15;
  do {
    piVar23 = piVar9;
    piVar9 = (int *)piVar23[0xd];
  } while (piVar9 != (int *)0x0);
  piVar23 = (int *)*piVar23;
  if (((int *)piVar8[iVar28 * 4 + 3] != (int *)0x0) && (piVar23 != (int *)0x0)) {
    iVar17 = *piVar23;
    iVar10 = *(int *)piVar8[iVar28 * 4 + 3];
    if (iVar17 != iVar10) {
      FUN_00074ee0(piVar7,"table %s has %d values for %d columns",piVar8[iVar28 * 4 + 2],iVar17,
                   iVar10);
      piVar7[0x41] = iVar13;
      local_48 = 2;
      goto LAB_000cfaec;
    }
  }
  FUN_000ae410(puVar16 + 1);
  if (bVar11 < 2) {
    pcVar21 = "multiple recursive references: %s";
    if ((*(byte *)((int)piVar15 + 9) & 0x20) == 0) {
      pcVar21 = "recursive reference in a subquery: %s";
    }
    piVar8[iVar28 * 4 + 5] = (int)pcVar21;
    if (param_1[2] != 0) {
      FUN_0004a550();
    }
  }
  piVar8[iVar28 * 4 + 5] = 0;
  piVar7[0x41] = iVar13;
LAB_000cfc82:
  if (piVar27[4] == 0) {
    if (piVar27[2] == 0) {
LAB_000cfd90:
      if ((((piVar27[5] != 0) && (param_1[2] != 0)) && (iVar28 = FUN_0004a550(), iVar28 != 0)) ||
         (iVar28 = FUN_000ae800(), iVar28 != 0)) goto LAB_000cfae4;
    }
    else {
LAB_000cfcb3:
      puVar16 = (undefined4 *)FUN_000cf6d0();
      piVar27[4] = (int)puVar16;
      if (puVar16 == (undefined4 *)0x0) goto LAB_000cfae4;
      if (0xfffe < (uint)puVar16[8]) {
        FUN_00074ee0(piVar2,"too many references to \"%s\": max 65535",*puVar16);
        piVar27[4] = 0;
        local_48 = 2;
        goto LAB_000cfaec;
      }
      puVar16[8] = puVar16[8] + 1;
      if (puVar16[0xe] == 0) {
        if ((*(byte *)((int)piVar27 + 0x25) & 4) != 0) {
          pcVar21 = "\'%s\' is not a function";
          goto LAB_000cfad7;
        }
        if (puVar16[3] == 0) goto LAB_000cfc89;
      }
      iVar28 = FUN_000c26b0();
      if (iVar28 != 0) goto LAB_000cfae4;
      iVar28 = FUN_0005a810();
      piVar27[5] = iVar28;
      uVar1 = *(undefined2 *)((int)puVar16 + 0x2a);
      *(undefined2 *)((int)puVar16 + 0x2a) = 0xffff;
      if ((piVar27[5] != 0) && (param_1[2] != 0)) {
        FUN_0004a550();
      }
      *(undefined2 *)((int)puVar16 + 0x2a) = uVar1;
    }
  }
LAB_000cfc89:
  iVar28 = FUN_000757e0();
  if (iVar28 != 0) goto LAB_000cfae4;
LAB_000cf910:
  local_88 = (byte *)((int)local_88 + 1);
  piVar27 = piVar27 + 0x11;
  if (*piVar5 <= (int)local_88) goto LAB_000cf928;
  goto LAB_000cf800;
LAB_000d07cd:
  FUN_00056520();
  *param_2 = (int)piVar27;
LAB_000d07de:
  local_48 = 0;
  if (piVar27 == (int *)0x0) goto LAB_000cfaec;
  if (*piVar27 <= *(int *)(iVar3 + 0x70)) {
    if (((uint)local_40 & 0x200004) != 0) {
      param_2[2] = param_2[2] | 0x40000;
    }
    goto LAB_000cfaec;
  }
  pcVar21 = "too many columns in result set";
LAB_000cfad7:
  FUN_00074ee0(piVar2,pcVar21);
LAB_000cfae4:
  local_48 = 2;
LAB_000cfaec:
  if (local_20 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_48;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00116110();
}

