
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 sessionChangesetNext(sqlite3_changeset_iter *p,u8 **paRec,int *pnRec,int *pbNew)

{
  int *piVar1;
  size_t __n;
  byte bVar2;
  byte *p_00;
  uint uVar3;
  int iVar4;
  u8 *puVar5;
  uint uVar6;
  sqlite3_value **apOut;
  sqlite3_value **ppsVar7;
  u8 *puVar8;
  int iVar9;
  sqlite3_value **apOut_00;
  int in_GS_OFFSET;
  undefined4 uVar10;
  SessionInput *in_stack_ffffffb4;
  int *in_stack_ffffffb8;
  int local_3c;
  u8 *local_38;
  int rc;
  int nCopy;
  int local_20;
  undefined4 uStack_14;
  
  uStack_14 = 0x8db6b;
  ppsVar7 = p->apValue;
  local_20 = *(int *)(in_GS_OFFSET + 0x14);
  if (ppsVar7 != (sqlite3_value **)0x0) {
    iVar4 = p->nCol;
    if (0 < iVar4) {
      iVar9 = 0;
      do {
        ppsVar7 = ppsVar7 + iVar9;
        iVar9 = iVar9 + 1;
        sqlite3ValueFree(*ppsVar7);
        iVar4 = p->nCol;
        ppsVar7 = p->apValue;
      } while (iVar9 < iVar4 * 2);
    }
    memset(ppsVar7,0,iVar4 << 3);
  }
  local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);
  p->rc = local_3c;
  if (local_3c != 0) goto LAB_0008dd7a;
  if ((p->in).nData <= (p->in).iNext) {
LAB_0008dda0:
    local_3c = 0x65;
    goto LAB_0008dd7a;
  }
  sessionDiscardData(&p->in);
  iVar4 = (p->in).iNext;
  puVar8 = (p->in).aData;
  (p->in).iCurrent = iVar4;
  (p->in).iNext = iVar4 + 1;
  bVar2 = puVar8[iVar4];
  if ((bVar2 & 0xfb) == 0x50) {
    do {
      if (pbNew != (int *)0x0) {
        *pbNew = 1;
      }
      p->bPatchset = (uint)(bVar2 == 0x50);
      rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8);
      local_3c = rc;
      if (rc != 0) {
LAB_0008dd5f:
        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;
        p->rc = local_3c;
        p->apValue = ppsVar7;
        ppsVar7 = ppsVar7 + p->nCol * 2;
        p->abPK = (u8 *)ppsVar7;
        p->zTab = (char *)((int)ppsVar7 + p->nCol);
        goto LAB_0008dd7a;
      }
      p_00 = (p->in).aData + (p->in).iNext;
      bVar2 = *p_00;
      uVar6 = (uint)bVar2;
      if ((char)bVar2 < '\0') {
        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);
        uVar6 = p->nCol;
        uVar3 = (uint)bVar2;
      }
      else {
        p->nCol = uVar6;
        uVar3 = 1;
      }
      if ((int)uVar6 < 1) {
        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,
                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
        local_3c = 0xb;
        goto LAB_0008dd5f;
      }
      piVar1 = &(p->in).iNext;
      *piVar1 = *piVar1 + uVar3;
      (p->tblhdr).nBuf = 0;
      nCopy = nCopy - uVar3;
      sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc);
      local_3c = rc;
      if (rc != 0) goto LAB_0008dd5f;
      __n = p->nCol * 8;
      memset((p->tblhdr).aBuf,0,__n);
      memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy);
      ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;
      iVar4 = p->nCol;
      piVar1 = &(p->in).iNext;
      *piVar1 = *piVar1 + nCopy;
      p->apValue = ppsVar7;
      ppsVar7 = ppsVar7 + iVar4 * 2;
      p->abPK = (u8 *)ppsVar7;
      p->zTab = (char *)((int)ppsVar7 + iVar4);
      p->rc = rc;
      local_3c = rc;
      if (rc != 0) goto LAB_0008dd7a;
      local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);
      p->rc = local_3c;
      if (local_3c != 0) goto LAB_0008dd7a;
      iVar4 = (p->in).iNext;
      (p->in).iCurrent = iVar4;
      if ((p->in).nData <= iVar4) goto LAB_0008dda0;
      puVar8 = (p->in).aData;
      (p->in).iNext = iVar4 + 1;
      bVar2 = puVar8[iVar4];
    } while ((bVar2 & 0xfb) == 0x50);
  }
  uVar6 = (uint)bVar2;
  if ((p->zTab == (char *)0x0) || ((iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0)))) {
    uVar10 = 0x301e0;
  }
  else {
    p->op = uVar6;
    iVar9 = (p->in).iNext;
    (p->in).iNext = iVar9 + 1;
    p->bIndirect = (uint)puVar8[iVar9];
    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {
      iVar9 = p->nCol;
      if (paRec != (u8 **)0x0) {
        if (iVar4 == 0) {
          if (bVar2 == 0x17) {
            iVar9 = iVar9 * 2;
          }
        }
        else if (bVar2 == 9) {
          if (iVar9 < 1) {
            iVar9 = 0;
          }
          else {
            puVar5 = p->abPK;
            puVar8 = puVar5 + iVar9;
            iVar9 = 0;
            do {
              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');
              puVar5 = puVar5 + 1;
            } while (puVar8 != puVar5);
          }
        }
        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);
        p->rc = local_3c;
        if (local_3c == 0) {
          local_3c = 100;
          *paRec = (p->in).aData + (p->in).iNext;
          piVar1 = &(p->in).iNext;
          *piVar1 = *piVar1 + *pnRec;
        }
        goto LAB_0008dd7a;
      }
      ppsVar7 = p->apValue;
      apOut = ppsVar7;
      apOut_00 = ppsVar7 + iVar9;
      if (p->bInvert != 0) {
        apOut = ppsVar7 + iVar9;
        apOut_00 = ppsVar7;
      }
      if (uVar6 != 0x12) {
        local_38 = (u8 *)0x0;
        if (iVar4 != 0) {
          if (uVar6 != 9) goto LAB_0008df25;
          local_38 = p->abPK;
        }
        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);
        p->rc = local_3c;
        if (local_3c != 0) goto LAB_0008dd7a;
        if (p->op != 9) {
          iVar9 = p->nCol;
          goto LAB_0008df25;
        }
        if (p->bPatchset == 0) goto LAB_0008dffb;
LAB_0008dfde:
        if (p->bInvert != 0) {
          iVar4 = p->op;
          goto LAB_0008dfe8;
        }
        goto LAB_0008df9a;
      }
LAB_0008df25:
      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);
      p->rc = local_3c;
      if (local_3c != 0) goto LAB_0008dd7a;
      if (p->bPatchset == 0) {
LAB_0008dffb:
        if (p->bInvert != 0) {
          iVar4 = p->op;
          if (iVar4 == 0x17) goto LAB_0008df57;
LAB_0008dfe8:
          if (iVar4 == 0x12) {
            p->op = 9;
            local_3c = 100;
            goto LAB_0008dd7a;
          }
          if (iVar4 == 9) {
            p->op = 0x12;
          }
        }
      }
      else {
        if (p->op != 0x17) goto LAB_0008dfde;
LAB_0008df57:
        iVar4 = p->nCol;
        if (0 < iVar4) {
          iVar9 = 0;
          do {
            if (p->abPK[iVar9] != '\0') {
              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];
              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {
                uVar10 = 0x30212;
                goto LAB_0008dead;
              }
              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;
              iVar4 = p->nCol;
            }
            iVar9 = iVar9 + 1;
          } while (iVar9 < iVar4);
        }
      }
LAB_0008df9a:
      local_3c = 100;
      goto LAB_0008dd7a;
    }
    uVar10 = 0x301e6;
  }
LAB_0008dead:
  sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",uVar10,
              "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
  p->rc = 0xb;
  local_3c = 0xb;
LAB_0008dd7a:
  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail_local();
  }
  return local_3c;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 FUN_0008db60(int param_1,int *param_2,int *param_3,undefined4 *param_4)

{
  size_t __n;
  int iVar1;
  byte bVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  void *__s;
  int iVar8;
  int in_GS_OFFSET;
  undefined4 uVar9;
  int local_3c;
  size_t local_24;
  
  __s = *(void **)(param_1 + 0x5c);
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (__s != (void *)0x0) {
    iVar5 = *(int *)(param_1 + 0x4c);
    if (0 < iVar5) {
      iVar8 = 0;
      do {
        iVar8 = iVar8 + 1;
        FUN_00042f80();
        iVar5 = *(int *)(param_1 + 0x4c);
        __s = *(void **)(param_1 + 0x5c);
      } while (iVar8 < iVar5 * 2);
    }
    memset(__s,0,iVar5 << 3);
  }
  local_3c = FUN_0008d3d0();
  *(int *)(param_1 + 0x40) = local_3c;
  if (local_3c != 0) goto LAB_0008dd7a;
  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {
LAB_0008dda0:
    local_3c = 0x65;
    goto LAB_0008dd7a;
  }
  FUN_00050030();
  iVar5 = *(int *)(param_1 + 8);
  iVar8 = *(int *)(param_1 + 0xc);
  *(int *)(param_1 + 4) = iVar5;
  *(int *)(param_1 + 8) = iVar5 + 1;
  bVar2 = *(byte *)(iVar8 + iVar5);
  while ((bVar2 & 0xfb) == 0x50) {
    if (param_4 != (undefined4 *)0x0) {
      *param_4 = 1;
    }
    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);
    local_3c = FUN_0008d500();
    if (local_3c != 0) {
LAB_0008dd5f:
      *(int *)(param_1 + 0x40) = local_3c;
      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);
      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;
      *(int *)(param_1 + 0x58) = iVar5;
      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);
      goto LAB_0008dd7a;
    }
    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));
    uVar6 = (uint)bVar2;
    if ((char)bVar2 < '\0') {
      uVar4 = FUN_00046230();
      uVar6 = *(uint *)(param_1 + 0x4c);
      uVar4 = uVar4 & 0xff;
    }
    else {
      *(uint *)(param_1 + 0x4c) = uVar6;
      uVar4 = 1;
    }
    if ((int)uVar6 < 1) {
      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,
                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
      local_3c = 0xb;
      goto LAB_0008dd5f;
    }
    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;
    *(undefined4 *)(param_1 + 0x30) = 0;
    local_24 = local_24 - uVar4;
    FUN_0008ccb0();
    __n = *(int *)(param_1 + 0x4c) * 8;
    memset(*(void **)(param_1 + 0x2c),0,__n);
    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),
           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);
    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;
    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);
    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;
    *(int *)(param_1 + 0x58) = iVar5;
    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);
    *(undefined4 *)(param_1 + 0x40) = 0;
    local_3c = FUN_0008d3d0();
    *(int *)(param_1 + 0x40) = local_3c;
    if (local_3c != 0) goto LAB_0008dd7a;
    iVar5 = *(int *)(param_1 + 8);
    *(int *)(param_1 + 4) = iVar5;
    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;
    iVar8 = *(int *)(param_1 + 0xc);
    *(int *)(param_1 + 8) = iVar5 + 1;
    bVar2 = *(byte *)(iVar8 + iVar5);
  }
  uVar6 = (uint)bVar2;
  if ((*(int *)(param_1 + 0x48) == 0) ||
     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {
    uVar9 = 0x301e0;
  }
  else {
    *(uint *)(param_1 + 0x50) = uVar6;
    iVar3 = *(int *)(param_1 + 8);
    *(int *)(param_1 + 8) = iVar3 + 1;
    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);
    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {
      iVar8 = *(int *)(param_1 + 0x4c);
      if (param_2 != (int *)0x0) {
        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {
          iVar5 = *(int *)(param_1 + 0x58);
          iVar8 = iVar8 + iVar5;
          do {
            iVar5 = iVar5 + 1;
          } while (iVar8 != iVar5);
        }
        local_3c = FUN_0008d660();
        *(int *)(param_1 + 0x40) = local_3c;
        if (local_3c == 0) {
          local_3c = 100;
          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);
          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;
        }
        goto LAB_0008dd7a;
      }
      iVar3 = *(int *)(param_1 + 0x5c);
      iVar8 = iVar3 + iVar8 * 4;
      iVar7 = iVar3;
      if (*(int *)(param_1 + 0x3c) != 0) {
        iVar7 = iVar8;
        iVar8 = iVar3;
      }
      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {
LAB_0008df25:
        local_3c = FUN_0008d780(iVar8);
        *(int *)(param_1 + 0x40) = local_3c;
        if (local_3c != 0) goto LAB_0008dd7a;
        if (*(int *)(param_1 + 0x38) == 0) {
LAB_0008dffb:
          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;
          iVar5 = *(int *)(param_1 + 0x50);
          if (iVar5 != 0x17) goto LAB_0008dfe8;
        }
        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;
        iVar5 = *(int *)(param_1 + 0x4c);
        if (0 < iVar5) {
          iVar8 = 0;
          do {
            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {
              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =
                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);
              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {
                uVar9 = 0x30212;
                goto LAB_0008dead;
              }
              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0
              ;
              iVar5 = *(int *)(param_1 + 0x4c);
            }
            iVar8 = iVar8 + 1;
          } while (iVar8 < iVar5);
        }
      }
      else {
        local_3c = FUN_0008d780(iVar7);
        *(int *)(param_1 + 0x40) = local_3c;
        if (local_3c != 0) goto LAB_0008dd7a;
        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;
        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;
LAB_0008dfde:
        if (*(int *)(param_1 + 0x3c) != 0) {
          iVar5 = *(int *)(param_1 + 0x50);
LAB_0008dfe8:
          if (iVar5 == 0x12) {
            *(undefined4 *)(param_1 + 0x50) = 9;
            local_3c = 100;
            goto LAB_0008dd7a;
          }
          if (iVar5 == 9) {
            *(undefined4 *)(param_1 + 0x50) = 0x12;
          }
        }
      }
LAB_0008df9a:
      local_3c = 100;
      goto LAB_0008dd7a;
    }
    uVar9 = 0x301e6;
  }
LAB_0008dead:
  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,
               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
  *(undefined4 *)(param_1 + 0x40) = 0xb;
  local_3c = 0xb;
LAB_0008dd7a:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_3c;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00116110();
}


PUSH EBP
PUSH EDI
PUSH ESI
MOV ESI,EAX
PUSH EBX
CALL 0x00017230
ADD EBX,0xee2bd
SUB ESP,0x3c
MOV dword ptr [ESP + 0x14],EDX
MOV EDX,dword ptr [ESI + 0x5c]
MOV dword ptr [ESP + 0x18],ECX
MOV EDI,dword ptr [ESP + 0x50]
MOV EAX,GS:[0x14]
MOV dword ptr [ESP + 0x2c],EAX
XOR EAX,EAX
TEST EDX,EDX
JZ 0x0008dbca
MOV EAX,dword ptr [ESI + 0x4c]
TEST EAX,EAX
JLE 0x0008dbb8
XOR EBP,EBP
LEA ESI,[ESI]
MOV EAX,dword ptr [EDX + EBP*0x4]
ADD EBP,0x1
CALL 0x00042f80
MOV EAX,dword ptr [ESI + 0x4c]
LEA EDX,[EAX + EAX*0x1]
CMP EBP,EDX
MOV EDX,dword ptr [ESI + 0x5c]
JL 0x0008dba0
SUB ESP,0x4
SHL EAX,0x3
PUSH EAX
PUSH 0x0
PUSH EDX
CALL 0x00015440
ADD ESP,0x10
MOV EDX,0x2
MOV EAX,ESI
CALL 0x0008d3d0
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [ESI + 0x40],EAX
TEST EAX,EAX
JNZ 0x0008dd7a
MOV EAX,dword ptr [ESI + 0x10]
CMP dword ptr [ESI + 0x8],EAX
JGE 0x0008dda0
MOV EAX,ESI
CALL 0x00050030
MOV EAX,dword ptr [ESI + 0x8]
MOV EDX,dword ptr [ESI + 0xc]
LEA ECX,[EAX + 0x1]
MOV dword ptr [ESI + 0x4],EAX
MOV dword ptr [ESI + 0x8],ECX
MOVZX ECX,byte ptr [EDX + EAX*0x1]
CMP CL,0x50
MOV EBP,ECX
SETZ byte ptr [ESP + 0xc]
AND EBP,0xfffffffb
MOV EAX,EBP
CMP AL,0x50
JNZ 0x0008ddfc
LEA EAX,[ESP + 0x28]
MOV dword ptr [ESP + 0x8],EAX
LEA EAX,[ESI + 0x4c]
MOV dword ptr [ESP + 0x1c],EAX
MOVZX EAX,byte ptr [ESP + 0xc]
JMP 0x0008dd38
MOV EAX,dword ptr [ESI + 0x8]
ADD EAX,dword ptr [ESI + 0xc]
MOVZX EDX,byte ptr [EAX]
TEST DL,DL
JS 0x0008dde0
MOV dword ptr [ESI + 0x4c],EDX
MOV EAX,0x1
TEST EDX,EDX
JLE 0x0008ddb0
MOV EBP,dword ptr [ESP + 0x28]
ADD dword ptr [ESI + 0x8],EAX
LEA ECX,[ESP + 0x24]
MOV dword ptr [ESI + 0x30],0x0
SUB EBP,EAX
LEA EAX,[ESI + 0x2c]
LEA EDX,[EBP + EDX*0x8]
MOV dword ptr [ESP + 0x28],EBP
CALL 0x0008ccb0
MOV EAX,dword ptr [ESP + 0x24]
TEST EAX,EAX
JNZ 0x0008dd5f
MOV EAX,dword ptr [ESI + 0x4c]
SUB ESP,0x4
LEA EBP,[EAX*0x8 + 0x0]
PUSH EBP
PUSH 0x0
PUSH dword ptr [ESI + 0x2c]
CALL 0x00015440
ADD ESP,0xc
ADD EBP,dword ptr [ESI + 0x2c]
MOV EAX,dword ptr [ESI + 0x8]
ADD EAX,dword ptr [ESI + 0xc]
PUSH dword ptr [ESP + 0x2c]
PUSH EAX
PUSH EBP
CALL 0x00015130
MOV EDX,dword ptr [ESI + 0x2c]
MOV ECX,dword ptr [ESI + 0x4c]
MOV EAX,dword ptr [ESP + 0x38]
ADD dword ptr [ESI + 0x8],EAX
MOV dword ptr [ESI + 0x5c],EDX
MOV EAX,dword ptr [ESP + 0x34]
LEA EDX,[EDX + ECX*0x8]
ADD ESP,0x10
MOV dword ptr [ESI + 0x58],EDX
ADD EDX,ECX
MOV dword ptr [ESI + 0x48],EDX
MOV dword ptr [ESI + 0x40],EAX
TEST EAX,EAX
JNZ 0x0008dd76
MOV EDX,0x2
MOV EAX,ESI
CALL 0x0008d3d0
MOV dword ptr [ESI + 0x40],EAX
TEST EAX,EAX
JNZ 0x0008dd76
MOV EAX,dword ptr [ESI + 0x8]
MOV dword ptr [ESI + 0x4],EAX
CMP EAX,dword ptr [ESI + 0x10]
JGE 0x0008dda0
MOV ECX,dword ptr [ESI + 0xc]
MOV EDX,ECX
MOV dword ptr [ESP + 0xc],ECX
LEA ECX,[EAX + 0x1]
MOV dword ptr [ESI + 0x8],ECX
MOVZX ECX,byte ptr [EDX + EAX*0x1]
CMP CL,0x50
MOV EBP,ECX
SETZ AL
AND EBP,0xfffffffb
MOV EDX,EBP
CMP DL,0x50
JNZ 0x0008ddf8
TEST EDI,EDI
JZ 0x0008dd42
MOV dword ptr [EDI],0x1
MOVZX EAX,AL
MOV EDX,dword ptr [ESP + 0x8]
MOV dword ptr [ESI + 0x38],EAX
MOV EAX,ESI
CALL 0x0008d500
MOV dword ptr [ESP + 0x24],EAX
TEST EAX,EAX
JZ 0x0008dc40
MOV EDX,dword ptr [ESI + 0x2c]
MOV ECX,dword ptr [ESI + 0x4c]
MOV dword ptr [ESI + 0x40],EAX
MOV dword ptr [ESI + 0x5c],EDX
LEA EDX,[EDX + ECX*0x8]
MOV dword ptr [ESI + 0x58],EDX
ADD EDX,ECX
MOV dword ptr [ESI + 0x48],EDX
MOV dword ptr [ESP + 0x10],EAX
MOV EDI,dword ptr [ESP + 0x2c]
XOR EDI,dword ptr GS:[0x14]
MOV EAX,dword ptr [ESP + 0x10]
JNZ 0x0008e05a
ADD ESP,0x3c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x10],0x65
JMP 0x0008dd7a
SUB ESP,0xc
LEA EAX,[EBX + 0xfffa0934]
PUSH EAX
LEA EAX,[EBX + 0xfffa3c05]
PUSH 0x3018b
PUSH EAX
LEA EAX,[EBX + 0xfffa39ca]
PUSH EAX
PUSH 0xb
CALL 0x0006e260
ADD ESP,0x20
MOV EAX,0xb
JMP 0x0008dd5f
MOV EDX,dword ptr [ESP + 0x1c]
CALL 0x00046230
MOV EDX,dword ptr [ESI + 0x4c]
MOVZX EAX,AL
JMP 0x0008dc59
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,dword ptr [ESI + 0x48]
TEST EAX,EAX
JZ 0x0008ded9
MOV EBP,dword ptr [ESI + 0x38]
TEST EBP,EBP
JZ 0x0008de19
MOV EAX,dword ptr [ESI + 0x3c]
TEST EAX,EAX
JNZ 0x0008ded9
MOVZX EAX,CL
MOV dword ptr [ESI + 0x50],EAX
MOV dword ptr [ESP + 0x8],EAX
MOV EAX,dword ptr [ESI + 0x8]
LEA EDI,[EAX + 0x1]
MOV dword ptr [ESI + 0x8],EDI
MOVZX EAX,byte ptr [EDX + EAX*0x1]
MOV dword ptr [ESI + 0x54],EAX
CMP CL,0x17
JA 0x0008de9e
MOV EAX,0x840200
BT EAX,ECX
JNC 0x0008de9e
MOV EDX,dword ptr [ESI + 0x4c]
MOV EDI,dword ptr [ESP + 0x14]
MOV EAX,EDX
TEST EDI,EDI
JZ 0x0008def8
TEST EBP,EBP
JZ 0x0008deea
CMP CL,0x9
JZ 0x0008e00f
MOV EDI,dword ptr [ESP + 0x18]
MOV EAX,ESI
MOV ECX,EDI
CALL 0x0008d660
MOV dword ptr [ESP + 0x10],EAX
MOV dword ptr [ESI + 0x40],EAX
TEST EAX,EAX
JNZ 0x0008dd7a
MOV EBX,dword ptr [ESP + 0x14]
MOV EAX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP + 0x10],0x64
ADD EAX,dword ptr [ESI + 0xc]
MOV dword ptr [EBX],EAX
MOV EAX,dword ptr [EDI]
ADD dword ptr [ESI + 0x8],EAX
JMP 0x0008dd7a
SUB ESP,0xc
LEA EAX,[EBX + 0xfffa0934]
PUSH EAX
PUSH 0x301e6
LEA EAX,[EBX + 0xfffa3c05]
PUSH EAX
LEA EAX,[EBX + 0xfffa39ca]
PUSH EAX
PUSH 0xb
CALL 0x0006e260
ADD ESP,0x20
MOV dword ptr [ESI + 0x40],0xb
MOV dword ptr [ESP + 0x10],0xb
JMP 0x0008dd7a
SUB ESP,0xc
LEA EAX,[EBX + 0xfffa0934]
PUSH EAX
PUSH 0x301e0
JMP 0x0008dead
LEA EAX,[EDX + EDX*0x1]
CMP CL,0x17
CMOVZ EDX,EAX
JMP 0x0008de64
MOV ECX,dword ptr [ESI + 0x5c]
LEA EDI,[ECX + EDX*0x4]
MOV EDX,dword ptr [ESI + 0x3c]
TEST EDX,EDX
JZ 0x0008df0b
MOV EDX,EDI
MOV EDI,ECX
MOV ECX,EDX
MOV EDX,dword ptr [ESP + 0x8]
CMP EDX,0x12
JZ 0x0008df25
TEST EBP,EBP
JZ 0x0008dfae
CMP EDX,0x9
JZ 0x0008dfa7
SUB ESP,0xc
MOV EDX,EAX
XOR ECX,ECX
MOV EAX,ESI
PUSH EDI
CALL 0x0008d780
ADD ESP,0x10
MOV dword ptr [ESI + 0x40],EAX
TEST EAX,EAX
JNZ 0x0008dd76
MOV EBP,dword ptr [ESI + 0x38]
TEST EBP,EBP
JZ 0x0008dffb
CMP dword ptr [ESI + 0x50],0x17
JNZ 0x0008dfde
MOV EAX,dword ptr [ESI + 0x4c]
TEST EAX,EAX
JLE 0x0008df9a
MOV EDX,dword ptr [ESP + 0x10]
MOV ECX,dword ptr [ESI + 0x58]
CMP byte ptr [ECX + EDX*0x1],0x0
JZ 0x0008df93
MOV ECX,dword ptr [ESI + 0x5c]
ADD EAX,EDX
MOV EAX,dword ptr [ECX + EAX*0x4]
MOV dword ptr [ECX + EDX*0x4],EAX
MOV EAX,dword ptr [ESI + 0x5c]
MOV ECX,dword ptr [EAX + EDX*0x4]
TEST ECX,ECX
JZ 0x0008e046
MOV ECX,dword ptr [ESI + 0x4c]
ADD ECX,EDX
MOV dword ptr [EAX + ECX*0x4],0x0
MOV EAX,dword ptr [ESI + 0x4c]
ADD EDX,0x1
CMP EAX,EDX
JG 0x0008df62
MOV dword ptr [ESP + 0x10],0x64
JMP 0x0008dd7a
MOV EDX,dword ptr [ESI + 0x58]
MOV dword ptr [ESP + 0x14],EDX
SUB ESP,0xc
MOV EDX,EAX
MOV EAX,ESI
PUSH ECX
MOV ECX,dword ptr [ESP + 0x24]
CALL 0x0008d780
ADD ESP,0x10
MOV dword ptr [ESI + 0x40],EAX
TEST EAX,EAX
JNZ 0x0008dd76
CMP dword ptr [ESI + 0x50],0x9
JNZ 0x0008e066
MOV EAX,dword ptr [ESI + 0x38]
TEST EAX,EAX
JZ 0x0008dffb
MOV EDX,dword ptr [ESI + 0x3c]
TEST EDX,EDX
JZ 0x0008df9a
MOV EAX,dword ptr [ESI + 0x50]
CMP EAX,0x12
JZ 0x0008e032
CMP EAX,0x9
JNZ 0x0008df9a
MOV dword ptr [ESI + 0x50],0x12
JMP 0x0008df9a
MOV EDI,dword ptr [ESI + 0x3c]
TEST EDI,EDI
JZ 0x0008df9a
MOV EAX,dword ptr [ESI + 0x50]
CMP EAX,0x17
JNZ 0x0008dfe8
JMP 0x0008df57
TEST EDX,EDX
JLE 0x0008e05f
MOV EAX,dword ptr [ESI + 0x58]
LEA ECX,[EDX + EAX*0x1]
XOR EDX,EDX
LEA ESI,[ESI]
NOP
CMP byte ptr [EAX],0x1
SBB EDX,-0x1
ADD EAX,0x1
CMP ECX,EAX
JNZ 0x0008e020
JMP 0x0008de64
MOV dword ptr [ESI + 0x50],0x9
MOV dword ptr [ESP + 0x10],0x64
JMP 0x0008dd7a
SUB ESP,0xc
LEA EAX,[EBX + 0xfffa0934]
PUSH EAX
PUSH 0x30212
JMP 0x0008dead
CALL 0x00116110
XOR EDX,EDX
JMP 0x0008de64
MOV EAX,dword ptr [ESI + 0x4c]
JMP 0x0008df25
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 FUN_0008db60(int param_1,int *param_2,int *param_3,undefined4 *param_4)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  void *__s;\n  int iVar8;\n  int in_GS_OFFSET;\n  undefined4 uVar9;\n  int local_3c;\n  size_t local_24;\n  \n  __s = *(void **)(param_1 + 0x5c);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }\n  local_3c = FUN_0008d3d0();\n  *(int *)(param_1 + 0x40) = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  FUN_00050030();\n  iVar5 = *(int *)(param_1 + 8);\n  iVar8 = *(int *)(param_1 + 0xc);\n  *(int *)(param_1 + 4) = iVar5;\n  *(int *)(param_1 + 8) = iVar5 + 1;\n  bVar2 = *(byte *)(iVar8 + iVar5);\n  while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }\n  uVar6 = (uint)bVar2;\n  if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }\nLAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  *(undefined4 *)(param_1 + 0x40) = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}\n\n" comment (function_definition "int __regparm3 FUN_0008db60(int param_1,int *param_2,int *param_3,undefined4 *param_4)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  void *__s;\n  int iVar8;\n  int in_GS_OFFSET;\n  undefined4 uVar9;\n  int local_3c;\n  size_t local_24;\n  \n  __s = *(void **)(param_1 + 0x5c);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }\n  local_3c = FUN_0008d3d0();\n  *(int *)(param_1 + 0x40) = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  FUN_00050030();\n  iVar5 = *(int *)(param_1 + 8);\n  iVar8 = *(int *)(param_1 + 0xc);\n  *(int *)(param_1 + 4) = iVar5;\n  *(int *)(param_1 + 8) = iVar5 + 1;\n  bVar2 = *(byte *)(iVar8 + iVar5);\n  while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }\n  uVar6 = (uint)bVar2;\n  if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }\nLAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  *(undefined4 *)(param_1 + 0x40) = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0008db60(int param_1,int *param_2,int *param_3,undefined4 *param_4)" identifier (parameter_list "(int param_1,int *param_2,int *param_3,undefined4 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  void *__s;\n  int iVar8;\n  int in_GS_OFFSET;\n  undefined4 uVar9;\n  int local_3c;\n  size_t local_24;\n  \n  __s = *(void **)(param_1 + 0x5c);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }\n  local_3c = FUN_0008d3d0();\n  *(int *)(param_1 + 0x40) = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  FUN_00050030();\n  iVar5 = *(int *)(param_1 + 8);\n  iVar8 = *(int *)(param_1 + 0xc);\n  *(int *)(param_1 + 4) = iVar5;\n  *(int *)(param_1 + 8) = iVar5 + 1;\n  bVar2 = *(byte *)(iVar8 + iVar5);\n  while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }\n  uVar6 = (uint)bVar2;\n  if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }\nLAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  *(undefined4 *)(param_1 + 0x40) = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }\n                    /* WARNING: Subroutine does not return */\n  FUN_00116110();\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "size_t local_24;" primitive_type identifier ;) (expression_statement "__s = *(void **)(param_1 + 0x5c);" (assignment_expression "__s = *(void **)(param_1 + 0x5c)" identifier = (pointer_expression "*(void **)(param_1 + 0x5c)" * (cast_expression "(void **)(param_1 + 0x5c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(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) ))))) ;) (if_statement "if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }" if (parenthesized_expression "(__s != (void *)0x0)" ( (binary_expression "__s != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);" do (compound_statement "{\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00042f80();" (call_expression "FUN_00042f80()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "__s = *(void **)(param_1 + 0x5c);" (assignment_expression "__s = *(void **)(param_1 + 0x5c)" identifier = (pointer_expression "*(void **)(param_1 + 0x5c)" * (cast_expression "(void **)(param_1 + 0x5c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar8 < iVar5 * 2)" ( (binary_expression "iVar8 < iVar5 * 2" identifier < (binary_expression "iVar5 * 2" identifier * number_literal)) )) ;) })) (expression_statement "memset(__s,0,iVar5 << 3);" (call_expression "memset(__s,0,iVar5 << 3)" identifier (argument_list "(__s,0,iVar5 << 3)" ( identifier , number_literal , (binary_expression "iVar5 << 3" identifier << number_literal) ))) ;) })) (expression_statement "local_3c = FUN_0008d3d0();" (assignment_expression "local_3c = FUN_0008d3d0()" identifier = (call_expression "FUN_0008d3d0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8))" ( (binary_expression "*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }" { (labeled_statement "LAB_0008dda0:\n    local_3c = 0x65;" statement_identifier : (expression_statement "local_3c = 0x65;" (assignment_expression "local_3c = 0x65" identifier = number_literal) ;)) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "FUN_00050030();" (call_expression "FUN_00050030()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 8);" (assignment_expression "iVar5 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 4) = iVar5;" (assignment_expression "*(int *)(param_1 + 4) = iVar5" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 8) = iVar5 + 1;" (assignment_expression "*(int *)(param_1 + 8) = iVar5 + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *(byte *)(iVar8 + iVar5);" (assignment_expression "bVar2 = *(byte *)(iVar8 + iVar5)" identifier = (pointer_expression "*(byte *)(iVar8 + iVar5)" * (cast_expression "(byte *)(iVar8 + iVar5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar5)" ( (binary_expression "iVar8 + iVar5" identifier + identifier) ))))) ;) (while_statement "while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }" while (parenthesized_expression "((bVar2 & 0xfb) == 0x50)" ( (binary_expression "(bVar2 & 0xfb) == 0x50" (parenthesized_expression "(bVar2 & 0xfb)" ( (binary_expression "bVar2 & 0xfb" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }" { (if_statement "if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }" if (parenthesized_expression "(param_4 != (undefined4 *)0x0)" ( (binary_expression "param_4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *param_4 = 1;\n    }" { (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) })) (expression_statement "*(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);" (assignment_expression "*(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50)" (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = (call_expression "(uint)(bVar2 == 0x50)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 == 0x50)" ( (binary_expression "bVar2 == 0x50" identifier == number_literal) )))) ;) (expression_statement "local_3c = FUN_0008d500();" (assignment_expression "local_3c = FUN_0008d500()" identifier = (call_expression "FUN_0008d500()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }" { (labeled_statement "LAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;" statement_identifier : (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);" (assignment_expression "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c)" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) = (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;" (assignment_expression "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" identifier = (binary_expression "*(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) + (binary_expression "*(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "*(int *)(param_1 + 0x58) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x58) = iVar5" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);" (assignment_expression "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c)" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = (binary_expression "iVar5 + *(int *)(param_1 + 0x4c)" identifier + (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))))) ;) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));" (assignment_expression "bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" identifier = (pointer_expression "*(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" * (cast_expression "(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" ( (binary_expression "*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ))))) ;) (expression_statement "uVar6 = (uint)bVar2;" (assignment_expression "uVar6 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }" if (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }" { (expression_statement "uVar4 = FUN_00046230();" (assignment_expression "uVar4 = FUN_00046230()" identifier = (call_expression "FUN_00046230()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x4c);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = uVar4 & 0xff;" (assignment_expression "uVar4 = uVar4 & 0xff" identifier = (binary_expression "uVar4 & 0xff" identifier & number_literal)) ;) }) (else_clause "else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }" else (compound_statement "{\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }" { (expression_statement "*(uint *)(param_1 + 0x4c) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x4c) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) }))) (if_statement "if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }" if (parenthesized_expression "((int)uVar6 < 1)" ( (binary_expression "(int)uVar6 < 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }" { (expression_statement "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" identifier (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" ( number_literal , (string_literal ""%s at line %d of [%.10s]"" " string_content ") , (string_literal ""database corruption"" " string_content ") , number_literal , (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" " string_content ") ))) ;) (expression_statement "local_3c = 0xb;" (assignment_expression "local_3c = 0xb" identifier = number_literal) ;) (goto_statement "goto LAB_0008dd5f;" goto statement_identifier ;) })) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + uVar4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x30) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_24 = local_24 - uVar4;" (assignment_expression "local_24 = local_24 - uVar4" identifier = (binary_expression "local_24 - uVar4" identifier - identifier)) ;) (expression_statement "FUN_0008ccb0();" (call_expression "FUN_0008ccb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "__n = *(int *)(param_1 + 0x4c) * 8;" (assignment_expression "__n = *(int *)(param_1 + 0x4c) * 8" identifier = (binary_expression "*(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal)) ;) (expression_statement "memset(*(void **)(param_1 + 0x2c),0,__n);" (call_expression "memset(*(void **)(param_1 + 0x2c),0,__n)" identifier (argument_list "(*(void **)(param_1 + 0x2c),0,__n)" ( (pointer_expression "*(void **)(param_1 + 0x2c)" * (cast_expression "(void **)(param_1 + 0x2c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) , number_literal , identifier ))) ;) (expression_statement "memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);" (call_expression "memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24)" identifier (argument_list "((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24)" ( (cast_expression "(void *)(__n + *(int *)(param_1 + 0x2c))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__n + *(int *)(param_1 + 0x2c))" ( (binary_expression "__n + *(int *)(param_1 + 0x2c)" identifier + (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ))) , (cast_expression "(void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" ( (binary_expression "*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ))) , identifier ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + local_24" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);" (assignment_expression "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c)" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) = (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;" (assignment_expression "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" identifier = (binary_expression "*(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) + (binary_expression "*(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "*(int *)(param_1 + 0x58) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x58) = iVar5" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);" (assignment_expression "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c)" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = (binary_expression "iVar5 + *(int *)(param_1 + 0x4c)" identifier + (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x40) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x40) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c = FUN_0008d3d0();" (assignment_expression "local_3c = FUN_0008d3d0()" identifier = (call_expression "FUN_0008d3d0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (expression_statement "iVar5 = *(int *)(param_1 + 8);" (assignment_expression "iVar5 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 4) = iVar5;" (assignment_expression "*(int *)(param_1 + 4) = iVar5" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;" if (parenthesized_expression "(*(int *)(param_1 + 0x10) <= iVar5)" ( (binary_expression "*(int *)(param_1 + 0x10) <= iVar5" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto LAB_0008dda0;" goto statement_identifier ;)) (expression_statement "iVar8 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 8) = iVar5 + 1;" (assignment_expression "*(int *)(param_1 + 8) = iVar5 + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *(byte *)(iVar8 + iVar5);" (assignment_expression "bVar2 = *(byte *)(iVar8 + iVar5)" identifier = (pointer_expression "*(byte *)(iVar8 + iVar5)" * (cast_expression "(byte *)(iVar8 + iVar5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar5)" ( (binary_expression "iVar8 + iVar5" identifier + identifier) ))))) ;) })) (expression_statement "uVar6 = (uint)bVar2;" (assignment_expression "uVar6 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0))))" ( (binary_expression "(*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))" (parenthesized_expression "(*(int *)(param_1 + 0x48) == 0)" ( (binary_expression "*(int *)(param_1 + 0x48) == 0" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))" ( (parenthesized_expression "(iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0))" ( (comma_expression "iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)" (assignment_expression "iVar5 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) , (binary_expression "iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)" (binary_expression "iVar5 != 0" identifier != number_literal) && (parenthesized_expression "(*(int *)(param_1 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) != 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) != number_literal) )))) )) ))) )) (compound_statement "{\n    uVar9 = 0x301e0;\n  }" { (expression_statement "uVar9 = 0x301e0;" (assignment_expression "uVar9 = 0x301e0" identifier = number_literal) ;) }) (else_clause "else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }" else (compound_statement "{\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }" { (expression_statement "*(uint *)(param_1 + 0x50) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x50) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(param_1 + 8);" (assignment_expression "iVar3 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 8) = iVar3 + 1;" (assignment_expression "*(int *)(param_1 + 8) = iVar3 + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);" (assignment_expression "*(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3)" (pointer_expression "*(uint *)(param_1 + 0x54)" * (cast_expression "(uint *)(param_1 + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = (binary_expression "(uint)*(byte *)(iVar8 + iVar3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar8 + iVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar3)" ( (binary_expression "iVar8 + iVar3" identifier + identifier) ))))) ;) (if_statement "if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }" if (parenthesized_expression "((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0))" ( (binary_expression "(bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)" (parenthesized_expression "(bVar2 < 0x18)" ( (binary_expression "bVar2 < 0x18" identifier < number_literal) )) && (parenthesized_expression "((0x840200U >> (uVar6 & 0x1f) & 1) != 0)" ( (binary_expression "(0x840200U >> (uVar6 & 0x1f) & 1) != 0" (parenthesized_expression "(0x840200U >> (uVar6 & 0x1f) & 1)" ( (binary_expression "0x840200U >> (uVar6 & 0x1f) & 1" (binary_expression "0x840200U >> (uVar6 & 0x1f)" number_literal >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }" { (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }" { (if_statement "if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }" if (parenthesized_expression "(((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8))" ( (binary_expression "((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)" (parenthesized_expression "((iVar5 != 0) && (bVar2 == 9))" ( (binary_expression "(iVar5 != 0) && (bVar2 == 9)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar2 == 9)" ( (binary_expression "bVar2 == 9" identifier == number_literal) ))) )) && (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) ))) )) (compound_statement "{\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x58);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x58)" identifier = (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar8 + iVar5;" (assignment_expression "iVar8 = iVar8 + iVar5" identifier = (binary_expression "iVar8 + iVar5" identifier + identifier)) ;) (do_statement "do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);" do (compound_statement "{\n            iVar5 = iVar5 + 1;\n          }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != iVar5)" ( (binary_expression "iVar8 != iVar5" identifier != identifier) )) ;) })) (expression_statement "local_3c = FUN_0008d660();" (assignment_expression "local_3c = FUN_0008d660()" identifier = (call_expression "FUN_0008d660()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }" { (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" identifier = number_literal) ;) (expression_statement "*param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);" (assignment_expression "*param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*param_2" * identifier) = (binary_expression "*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + *param_3" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (pointer_expression "*param_3" * identifier))) ;) })) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "iVar3 = *(int *)(param_1 + 0x5c);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x5c)" identifier = (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar3 + iVar8 * 4;" (assignment_expression "iVar8 = iVar3 + iVar8 * 4" identifier = (binary_expression "iVar3 + iVar8 * 4" identifier + (binary_expression "iVar8 * 4" identifier * number_literal))) ;) (expression_statement "iVar7 = iVar3;" (assignment_expression "iVar7 = iVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) != 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }" { (expression_statement "iVar7 = iVar8;" (assignment_expression "iVar7 = iVar8" identifier = identifier) ;) (expression_statement "iVar8 = iVar3;" (assignment_expression "iVar8 = iVar3" identifier = identifier) ;) })) (if_statement "if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }" if (parenthesized_expression "((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9))))" ( (binary_expression "(uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))" (parenthesized_expression "(uVar6 == 0x12)" ( (binary_expression "uVar6 == 0x12" identifier == number_literal) )) || (parenthesized_expression "((iVar5 != 0 && (uVar6 != 9)))" ( (parenthesized_expression "(iVar5 != 0 && (uVar6 != 9))" ( (binary_expression "iVar5 != 0 && (uVar6 != 9)" (binary_expression "iVar5 != 0" identifier != number_literal) && (parenthesized_expression "(uVar6 != 9)" ( (binary_expression "uVar6 != 9" identifier != number_literal) ))) )) ))) )) (compound_statement "{\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }" { (labeled_statement "LAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);" statement_identifier : (expression_statement "local_3c = FUN_0008d780(iVar8);" (assignment_expression "local_3c = FUN_0008d780(iVar8)" identifier = (call_expression "FUN_0008d780(iVar8)" identifier (argument_list "(iVar8)" ( identifier )))) ;)) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;" if (parenthesized_expression "(*(int *)(param_1 + 0x38) == 0)" ( (binary_expression "*(int *)(param_1 + 0x38) == 0" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }" { (labeled_statement "LAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) == 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0008df9a;" goto statement_identifier ;))) (expression_statement "iVar5 = *(int *)(param_1 + 0x50);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x50)" identifier = (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0x17) goto LAB_0008dfe8;" if (parenthesized_expression "(iVar5 != 0x17)" ( (binary_expression "iVar5 != 0x17" identifier != number_literal) )) (goto_statement "goto LAB_0008dfe8;" goto statement_identifier ;)) }) (else_clause "else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;" else (if_statement "if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;" if (parenthesized_expression "(*(int *)(param_1 + 0x50) != 0x17)" ( (binary_expression "*(int *)(param_1 + 0x50) != 0x17" (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0008dfde;" goto statement_identifier ;)))) (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);" do (compound_statement "{\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          }" { (if_statement "if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 0x58) + iVar8)" * (cast_expression "(char *)(*(int *)(param_1 + 0x58) + iVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x58) + iVar8)" ( (binary_expression "*(int *)(param_1 + 0x58) + iVar8" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }" { (expression_statement "*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);" (assignment_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + iVar8 * 4)" ( (binary_expression "*(int *)(param_1 + 0x5c) + iVar8 * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" ( (binary_expression "*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + (binary_expression "(iVar5 + iVar8) * 4" (parenthesized_expression "(iVar5 + iVar8)" ( (binary_expression "iVar5 + iVar8" identifier + identifier) )) * number_literal)) ))))) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + iVar8 * 4)" ( (binary_expression "*(int *)(param_1 + 0x5c) + iVar8 * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }" { (expression_statement "uVar9 = 0x30212;" (assignment_expression "uVar9 = 0x30212" identifier = number_literal) ;) (goto_statement "goto LAB_0008dead;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;" (assignment_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0" (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4)" ( (binary_expression "*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + (binary_expression "(*(int *)(param_1 + 0x4c) + iVar8) * 4" (parenthesized_expression "(*(int *)(param_1 + 0x4c) + iVar8)" ( (binary_expression "*(int *)(param_1 + 0x4c) + iVar8" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) + identifier) )) * number_literal)) )))) = number_literal) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 < iVar5)" ( (binary_expression "iVar8 < iVar5" identifier < identifier) )) ;) })) }) (else_clause "else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }" else (compound_statement "{\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }" { (expression_statement "local_3c = FUN_0008d780(iVar7);" (assignment_expression "local_3c = FUN_0008d780(iVar7)" identifier = (call_expression "FUN_0008d780(iVar7)" identifier (argument_list "(iVar7)" ( identifier )))) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;" if (parenthesized_expression "(*(int *)(param_1 + 0x50) != 9)" ( (binary_expression "*(int *)(param_1 + 0x50) != 9" (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0008df25;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;" if (parenthesized_expression "(*(int *)(param_1 + 0x38) == 0)" ( (binary_expression "*(int *)(param_1 + 0x38) == 0" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0008dffb;" goto statement_identifier ;)) (labeled_statement "LAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) != 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x50);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x50)" identifier = (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" statement_identifier : (if_statement "if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" if (parenthesized_expression "(iVar5 == 0x12)" ( (binary_expression "iVar5 == 0x12" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x50) = 9;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 9" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" identifier = number_literal) ;) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) }))) (if_statement "if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }" if (parenthesized_expression "(iVar5 == 9)" ( (binary_expression "iVar5 == 9" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0x12;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0x12" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) })) }))) }))) (labeled_statement "LAB_0008df9a:\n      local_3c = 100;" statement_identifier : (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" identifier = number_literal) ;)) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "uVar9 = 0x301e6;" (assignment_expression "uVar9 = 0x301e6" identifier = number_literal) ;) }))) (labeled_statement "LAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" statement_identifier : (expression_statement "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" identifier (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" ( number_literal , (string_literal ""%s at line %d of [%.10s]"" " string_content ") , (string_literal ""database corruption"" " string_content ") , identifier , (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" " string_content ") ))) ;)) (expression_statement "*(undefined4 *)(param_1 + 0x40) = 0xb;" (assignment_expression "*(undefined4 *)(param_1 + 0x40) = 0xb" (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c = 0xb;" (assignment_expression "local_3c = 0xb" identifier = number_literal) ;) (labeled_statement "LAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(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_3c;\n  }" { (return_statement "return local_3c;" return identifier ;) }))) comment (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint __regparm3 sessionChangesetNext(sqlite3_changeset_iter *p,u8 **paRec,int *pnRec,int *pbNew)\n\n{\n  int *piVar1;\n  size_t __n;\n  byte bVar2;\n  byte *p_00;\n  uint uVar3;\n  int iVar4;\n  u8 *puVar5;\n  uint uVar6;\n  sqlite3_value **apOut;\n  sqlite3_value **ppsVar7;\n  u8 *puVar8;\n  int iVar9;\n  sqlite3_value **apOut_00;\n  int in_GS_OFFSET;\n  undefined4 uVar10;\n  SessionInput *in_stack_ffffffb4;\n  int *in_stack_ffffffb8;\n  int local_3c;\n  u8 *local_38;\n  int rc;\n  int nCopy;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8db6b;\n  ppsVar7 = p->apValue;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (ppsVar7 != (sqlite3_value **)0x0) {\n    iVar4 = p->nCol;\n    if (0 < iVar4) {\n      iVar9 = 0;\n      do {\n        ppsVar7 = ppsVar7 + iVar9;\n        iVar9 = iVar9 + 1;\n        sqlite3ValueFree(*ppsVar7);\n        iVar4 = p->nCol;\n        ppsVar7 = p->apValue;\n      } while (iVar9 < iVar4 * 2);\n    }\n    memset(ppsVar7,0,iVar4 << 3);\n  }\n  local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n  p->rc = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if ((p->in).nData <= (p->in).iNext) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  sessionDiscardData(&p->in);\n  iVar4 = (p->in).iNext;\n  puVar8 = (p->in).aData;\n  (p->in).iCurrent = iVar4;\n  (p->in).iNext = iVar4 + 1;\n  bVar2 = puVar8[iVar4];\n  if ((bVar2 & 0xfb) == 0x50) {\n    do {\n      if (pbNew != (int *)0x0) {\n        *pbNew = 1;\n      }\n      p->bPatchset = (uint)(bVar2 == 0x50);\n      rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8);\n      local_3c = rc;\n      if (rc != 0) {\nLAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n        p->rc = local_3c;\n        p->apValue = ppsVar7;\n        ppsVar7 = ppsVar7 + p->nCol * 2;\n        p->abPK = (u8 *)ppsVar7;\n        p->zTab = (char *)((int)ppsVar7 + p->nCol);\n        goto LAB_0008dd7a;\n      }\n      p_00 = (p->in).aData + (p->in).iNext;\n      bVar2 = *p_00;\n      uVar6 = (uint)bVar2;\n      if ((char)bVar2 < '\0') {\n        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);\n        uVar6 = p->nCol;\n        uVar3 = (uint)bVar2;\n      }\n      else {\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }\n      if ((int)uVar6 < 1) {\n        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n        local_3c = 0xb;\n        goto LAB_0008dd5f;\n      }\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + uVar3;\n      (p->tblhdr).nBuf = 0;\n      nCopy = nCopy - uVar3;\n      sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc);\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd5f;\n      __n = p->nCol * 8;\n      memset((p->tblhdr).aBuf,0,__n);\n      memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy);\n      ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n      iVar4 = p->nCol;\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + nCopy;\n      p->apValue = ppsVar7;\n      ppsVar7 = ppsVar7 + iVar4 * 2;\n      p->abPK = (u8 *)ppsVar7;\n      p->zTab = (char *)((int)ppsVar7 + iVar4);\n      p->rc = rc;\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd7a;\n      local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      iVar4 = (p->in).iNext;\n      (p->in).iCurrent = iVar4;\n      if ((p->in).nData <= iVar4) goto LAB_0008dda0;\n      puVar8 = (p->in).aData;\n      (p->in).iNext = iVar4 + 1;\n      bVar2 = puVar8[iVar4];\n    } while ((bVar2 & 0xfb) == 0x50);\n  }\n  uVar6 = (uint)bVar2;\n  if ((p->zTab == (char *)0x0) || ((iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0)))) {\n    uVar10 = 0x301e0;\n  }\n  else {\n    p->op = uVar6;\n    iVar9 = (p->in).iNext;\n    (p->in).iNext = iVar9 + 1;\n    p->bIndirect = (uint)puVar8[iVar9];\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar9 = p->nCol;\n      if (paRec != (u8 **)0x0) {\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }\n      ppsVar7 = p->apValue;\n      apOut = ppsVar7;\n      apOut_00 = ppsVar7 + iVar9;\n      if (p->bInvert != 0) {\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }\n      if (uVar6 != 0x12) {\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }\nLAB_0008df25:\n      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      if (p->bPatchset == 0) {\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }\n      else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar10 = 0x301e6;\n  }\nLAB_0008dead:\n  sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",uVar10,\n              "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  p->rc = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_3c;\n}\n\n" comment (function_definition "int __regparm3 sessionChangesetNext(sqlite3_changeset_iter *p,u8 **paRec,int *pnRec,int *pbNew)\n\n{\n  int *piVar1;\n  size_t __n;\n  byte bVar2;\n  byte *p_00;\n  uint uVar3;\n  int iVar4;\n  u8 *puVar5;\n  uint uVar6;\n  sqlite3_value **apOut;\n  sqlite3_value **ppsVar7;\n  u8 *puVar8;\n  int iVar9;\n  sqlite3_value **apOut_00;\n  int in_GS_OFFSET;\n  undefined4 uVar10;\n  SessionInput *in_stack_ffffffb4;\n  int *in_stack_ffffffb8;\n  int local_3c;\n  u8 *local_38;\n  int rc;\n  int nCopy;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8db6b;\n  ppsVar7 = p->apValue;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (ppsVar7 != (sqlite3_value **)0x0) {\n    iVar4 = p->nCol;\n    if (0 < iVar4) {\n      iVar9 = 0;\n      do {\n        ppsVar7 = ppsVar7 + iVar9;\n        iVar9 = iVar9 + 1;\n        sqlite3ValueFree(*ppsVar7);\n        iVar4 = p->nCol;\n        ppsVar7 = p->apValue;\n      } while (iVar9 < iVar4 * 2);\n    }\n    memset(ppsVar7,0,iVar4 << 3);\n  }\n  local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n  p->rc = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if ((p->in).nData <= (p->in).iNext) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  sessionDiscardData(&p->in);\n  iVar4 = (p->in).iNext;\n  puVar8 = (p->in).aData;\n  (p->in).iCurrent = iVar4;\n  (p->in).iNext = iVar4 + 1;\n  bVar2 = puVar8[iVar4];\n  if ((bVar2 & 0xfb) == 0x50) {\n    do {\n      if (pbNew != (int *)0x0) {\n        *pbNew = 1;\n      }\n      p->bPatchset = (uint)(bVar2 == 0x50);\n      rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8);\n      local_3c = rc;\n      if (rc != 0) {\nLAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n        p->rc = local_3c;\n        p->apValue = ppsVar7;\n        ppsVar7 = ppsVar7 + p->nCol * 2;\n        p->abPK = (u8 *)ppsVar7;\n        p->zTab = (char *)((int)ppsVar7 + p->nCol);\n        goto LAB_0008dd7a;\n      }\n      p_00 = (p->in).aData + (p->in).iNext;\n      bVar2 = *p_00;\n      uVar6 = (uint)bVar2;\n      if ((char)bVar2 < '\0') {\n        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);\n        uVar6 = p->nCol;\n        uVar3 = (uint)bVar2;\n      }\n      else {\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }\n      if ((int)uVar6 < 1) {\n        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n        local_3c = 0xb;\n        goto LAB_0008dd5f;\n      }\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + uVar3;\n      (p->tblhdr).nBuf = 0;\n      nCopy = nCopy - uVar3;\n      sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc);\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd5f;\n      __n = p->nCol * 8;\n      memset((p->tblhdr).aBuf,0,__n);\n      memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy);\n      ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n      iVar4 = p->nCol;\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + nCopy;\n      p->apValue = ppsVar7;\n      ppsVar7 = ppsVar7 + iVar4 * 2;\n      p->abPK = (u8 *)ppsVar7;\n      p->zTab = (char *)((int)ppsVar7 + iVar4);\n      p->rc = rc;\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd7a;\n      local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      iVar4 = (p->in).iNext;\n      (p->in).iCurrent = iVar4;\n      if ((p->in).nData <= iVar4) goto LAB_0008dda0;\n      puVar8 = (p->in).aData;\n      (p->in).iNext = iVar4 + 1;\n      bVar2 = puVar8[iVar4];\n    } while ((bVar2 & 0xfb) == 0x50);\n  }\n  uVar6 = (uint)bVar2;\n  if ((p->zTab == (char *)0x0) || ((iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0)))) {\n    uVar10 = 0x301e0;\n  }\n  else {\n    p->op = uVar6;\n    iVar9 = (p->in).iNext;\n    (p->in).iNext = iVar9 + 1;\n    p->bIndirect = (uint)puVar8[iVar9];\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar9 = p->nCol;\n      if (paRec != (u8 **)0x0) {\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }\n      ppsVar7 = p->apValue;\n      apOut = ppsVar7;\n      apOut_00 = ppsVar7 + iVar9;\n      if (p->bInvert != 0) {\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }\n      if (uVar6 != 0x12) {\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }\nLAB_0008df25:\n      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      if (p->bPatchset == 0) {\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }\n      else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar10 = 0x301e6;\n  }\nLAB_0008dead:\n  sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",uVar10,\n              "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  p->rc = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_3c;\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "sessionChangesetNext(sqlite3_changeset_iter *p,u8 **paRec,int *pnRec,int *pbNew)" identifier (parameter_list "(sqlite3_changeset_iter *p,u8 **paRec,int *pnRec,int *pbNew)" ( (parameter_declaration "sqlite3_changeset_iter *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "u8 **paRec" type_identifier (pointer_declarator "**paRec" * (pointer_declarator "*paRec" * identifier))) , (parameter_declaration "int *pnRec" primitive_type (pointer_declarator "*pnRec" * identifier)) , (parameter_declaration "int *pbNew" primitive_type (pointer_declarator "*pbNew" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  size_t __n;\n  byte bVar2;\n  byte *p_00;\n  uint uVar3;\n  int iVar4;\n  u8 *puVar5;\n  uint uVar6;\n  sqlite3_value **apOut;\n  sqlite3_value **ppsVar7;\n  u8 *puVar8;\n  int iVar9;\n  sqlite3_value **apOut_00;\n  int in_GS_OFFSET;\n  undefined4 uVar10;\n  SessionInput *in_stack_ffffffb4;\n  int *in_stack_ffffffb8;\n  int local_3c;\n  u8 *local_38;\n  int rc;\n  int nCopy;\n  int local_20;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x8db6b;\n  ppsVar7 = p->apValue;\n  local_20 = *(int *)(in_GS_OFFSET + 0x14);\n  if (ppsVar7 != (sqlite3_value **)0x0) {\n    iVar4 = p->nCol;\n    if (0 < iVar4) {\n      iVar9 = 0;\n      do {\n        ppsVar7 = ppsVar7 + iVar9;\n        iVar9 = iVar9 + 1;\n        sqlite3ValueFree(*ppsVar7);\n        iVar4 = p->nCol;\n        ppsVar7 = p->apValue;\n      } while (iVar9 < iVar4 * 2);\n    }\n    memset(ppsVar7,0,iVar4 << 3);\n  }\n  local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n  p->rc = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if ((p->in).nData <= (p->in).iNext) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  sessionDiscardData(&p->in);\n  iVar4 = (p->in).iNext;\n  puVar8 = (p->in).aData;\n  (p->in).iCurrent = iVar4;\n  (p->in).iNext = iVar4 + 1;\n  bVar2 = puVar8[iVar4];\n  if ((bVar2 & 0xfb) == 0x50) {\n    do {\n      if (pbNew != (int *)0x0) {\n        *pbNew = 1;\n      }\n      p->bPatchset = (uint)(bVar2 == 0x50);\n      rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8);\n      local_3c = rc;\n      if (rc != 0) {\nLAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n        p->rc = local_3c;\n        p->apValue = ppsVar7;\n        ppsVar7 = ppsVar7 + p->nCol * 2;\n        p->abPK = (u8 *)ppsVar7;\n        p->zTab = (char *)((int)ppsVar7 + p->nCol);\n        goto LAB_0008dd7a;\n      }\n      p_00 = (p->in).aData + (p->in).iNext;\n      bVar2 = *p_00;\n      uVar6 = (uint)bVar2;\n      if ((char)bVar2 < '\0') {\n        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);\n        uVar6 = p->nCol;\n        uVar3 = (uint)bVar2;\n      }\n      else {\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }\n      if ((int)uVar6 < 1) {\n        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n        local_3c = 0xb;\n        goto LAB_0008dd5f;\n      }\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + uVar3;\n      (p->tblhdr).nBuf = 0;\n      nCopy = nCopy - uVar3;\n      sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc);\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd5f;\n      __n = p->nCol * 8;\n      memset((p->tblhdr).aBuf,0,__n);\n      memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy);\n      ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n      iVar4 = p->nCol;\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + nCopy;\n      p->apValue = ppsVar7;\n      ppsVar7 = ppsVar7 + iVar4 * 2;\n      p->abPK = (u8 *)ppsVar7;\n      p->zTab = (char *)((int)ppsVar7 + iVar4);\n      p->rc = rc;\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd7a;\n      local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      iVar4 = (p->in).iNext;\n      (p->in).iCurrent = iVar4;\n      if ((p->in).nData <= iVar4) goto LAB_0008dda0;\n      puVar8 = (p->in).aData;\n      (p->in).iNext = iVar4 + 1;\n      bVar2 = puVar8[iVar4];\n    } while ((bVar2 & 0xfb) == 0x50);\n  }\n  uVar6 = (uint)bVar2;\n  if ((p->zTab == (char *)0x0) || ((iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0)))) {\n    uVar10 = 0x301e0;\n  }\n  else {\n    p->op = uVar6;\n    iVar9 = (p->in).iNext;\n    (p->in).iNext = iVar9 + 1;\n    p->bIndirect = (uint)puVar8[iVar9];\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar9 = p->nCol;\n      if (paRec != (u8 **)0x0) {\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }\n      ppsVar7 = p->apValue;\n      apOut = ppsVar7;\n      apOut_00 = ppsVar7 + iVar9;\n      if (p->bInvert != 0) {\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }\n      if (uVar6 != 0x12) {\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }\nLAB_0008df25:\n      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      if (p->bPatchset == 0) {\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }\n      else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar10 = 0x301e6;\n  }\nLAB_0008dead:\n  sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",uVar10,\n              "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  p->rc = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }\n  return local_3c;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "byte *p_00;" type_identifier (pointer_declarator "*p_00" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "u8 *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "sqlite3_value **apOut;" type_identifier (pointer_declarator "**apOut" * (pointer_declarator "*apOut" * identifier)) ;) (declaration "sqlite3_value **ppsVar7;" type_identifier (pointer_declarator "**ppsVar7" * (pointer_declarator "*ppsVar7" * identifier)) ;) (declaration "u8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "sqlite3_value **apOut_00;" type_identifier (pointer_declarator "**apOut_00" * (pointer_declarator "*apOut_00" * identifier)) ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "SessionInput *in_stack_ffffffb4;" type_identifier (pointer_declarator "*in_stack_ffffffb4" * identifier) ;) (declaration "int *in_stack_ffffffb8;" primitive_type (pointer_declarator "*in_stack_ffffffb8" * identifier) ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "u8 *local_38;" type_identifier (pointer_declarator "*local_38" * identifier) ;) (declaration "int rc;" primitive_type identifier ;) (declaration "int nCopy;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x8db6b;" (assignment_expression "uStack_14 = 0x8db6b" identifier = number_literal) ;) (expression_statement "ppsVar7 = p->apValue;" (assignment_expression "ppsVar7 = p->apValue" identifier = (field_expression "p->apValue" identifier -> field_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) ))))) ;) (if_statement "if (ppsVar7 != (sqlite3_value **)0x0) {\n    iVar4 = p->nCol;\n    if (0 < iVar4) {\n      iVar9 = 0;\n      do {\n        ppsVar7 = ppsVar7 + iVar9;\n        iVar9 = iVar9 + 1;\n        sqlite3ValueFree(*ppsVar7);\n        iVar4 = p->nCol;\n        ppsVar7 = p->apValue;\n      } while (iVar9 < iVar4 * 2);\n    }\n    memset(ppsVar7,0,iVar4 << 3);\n  }" if (parenthesized_expression "(ppsVar7 != (sqlite3_value **)0x0)" ( (binary_expression "ppsVar7 != (sqlite3_value **)0x0" identifier != (cast_expression "(sqlite3_value **)0x0" ( (type_descriptor "sqlite3_value **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n    iVar4 = p->nCol;\n    if (0 < iVar4) {\n      iVar9 = 0;\n      do {\n        ppsVar7 = ppsVar7 + iVar9;\n        iVar9 = iVar9 + 1;\n        sqlite3ValueFree(*ppsVar7);\n        iVar4 = p->nCol;\n        ppsVar7 = p->apValue;\n      } while (iVar9 < iVar4 * 2);\n    }\n    memset(ppsVar7,0,iVar4 << 3);\n  }" { (expression_statement "iVar4 = p->nCol;" (assignment_expression "iVar4 = p->nCol" identifier = (field_expression "p->nCol" identifier -> field_identifier)) ;) (if_statement "if (0 < iVar4) {\n      iVar9 = 0;\n      do {\n        ppsVar7 = ppsVar7 + iVar9;\n        iVar9 = iVar9 + 1;\n        sqlite3ValueFree(*ppsVar7);\n        iVar4 = p->nCol;\n        ppsVar7 = p->apValue;\n      } while (iVar9 < iVar4 * 2);\n    }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n      iVar9 = 0;\n      do {\n        ppsVar7 = ppsVar7 + iVar9;\n        iVar9 = iVar9 + 1;\n        sqlite3ValueFree(*ppsVar7);\n        iVar4 = p->nCol;\n        ppsVar7 = p->apValue;\n      } while (iVar9 < iVar4 * 2);\n    }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n        ppsVar7 = ppsVar7 + iVar9;\n        iVar9 = iVar9 + 1;\n        sqlite3ValueFree(*ppsVar7);\n        iVar4 = p->nCol;\n        ppsVar7 = p->apValue;\n      } while (iVar9 < iVar4 * 2);" do (compound_statement "{\n        ppsVar7 = ppsVar7 + iVar9;\n        iVar9 = iVar9 + 1;\n        sqlite3ValueFree(*ppsVar7);\n        iVar4 = p->nCol;\n        ppsVar7 = p->apValue;\n      }" { (expression_statement "ppsVar7 = ppsVar7 + iVar9;" (assignment_expression "ppsVar7 = ppsVar7 + iVar9" identifier = (binary_expression "ppsVar7 + iVar9" identifier + identifier)) ;) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3ValueFree(*ppsVar7);" (call_expression "sqlite3ValueFree(*ppsVar7)" identifier (argument_list "(*ppsVar7)" ( (pointer_expression "*ppsVar7" * identifier) ))) ;) (expression_statement "iVar4 = p->nCol;" (assignment_expression "iVar4 = p->nCol" identifier = (field_expression "p->nCol" identifier -> field_identifier)) ;) (expression_statement "ppsVar7 = p->apValue;" (assignment_expression "ppsVar7 = p->apValue" identifier = (field_expression "p->apValue" identifier -> field_identifier)) ;) }) while (parenthesized_expression "(iVar9 < iVar4 * 2)" ( (binary_expression "iVar9 < iVar4 * 2" identifier < (binary_expression "iVar4 * 2" identifier * number_literal)) )) ;) })) (expression_statement "memset(ppsVar7,0,iVar4 << 3);" (call_expression "memset(ppsVar7,0,iVar4 << 3)" identifier (argument_list "(ppsVar7,0,iVar4 << 3)" ( identifier , number_literal , (binary_expression "iVar4 << 3" identifier << number_literal) ))) ;) })) (expression_statement "local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);" (assignment_expression "local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8)" identifier = (call_expression "sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8)" identifier (argument_list "(in_stack_ffffffb4,(int)in_stack_ffffffb8)" ( identifier , (cast_expression "(int)in_stack_ffffffb8" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "p->rc = local_3c;" (assignment_expression "p->rc = local_3c" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (if_statement "if ((p->in).nData <= (p->in).iNext) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }" if (parenthesized_expression "((p->in).nData <= (p->in).iNext)" ( (binary_expression "(p->in).nData <= (p->in).iNext" (field_expression "(p->in).nData" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) <= (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier)) )) (compound_statement "{\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }" { (labeled_statement "LAB_0008dda0:\n    local_3c = 0x65;" statement_identifier : (expression_statement "local_3c = 0x65;" (assignment_expression "local_3c = 0x65" identifier = number_literal) ;)) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "sessionDiscardData(&p->in);" (call_expression "sessionDiscardData(&p->in)" identifier (argument_list "(&p->in)" ( (pointer_expression "&p->in" & (field_expression "p->in" identifier -> field_identifier)) ))) ;) (expression_statement "iVar4 = (p->in).iNext;" (assignment_expression "iVar4 = (p->in).iNext" identifier = (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "puVar8 = (p->in).aData;" (assignment_expression "puVar8 = (p->in).aData" identifier = (field_expression "(p->in).aData" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(p->in).iCurrent = iVar4;" (assignment_expression "(p->in).iCurrent = iVar4" (field_expression "(p->in).iCurrent" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "(p->in).iNext = iVar4 + 1;" (assignment_expression "(p->in).iNext = iVar4 + 1" (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = puVar8[iVar4];" (assignment_expression "bVar2 = puVar8[iVar4]" identifier = (subscript_expression "puVar8[iVar4]" identifier [ identifier ])) ;) (if_statement "if ((bVar2 & 0xfb) == 0x50) {\n    do {\n      if (pbNew != (int *)0x0) {\n        *pbNew = 1;\n      }\n      p->bPatchset = (uint)(bVar2 == 0x50);\n      rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8);\n      local_3c = rc;\n      if (rc != 0) {\nLAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n        p->rc = local_3c;\n        p->apValue = ppsVar7;\n        ppsVar7 = ppsVar7 + p->nCol * 2;\n        p->abPK = (u8 *)ppsVar7;\n        p->zTab = (char *)((int)ppsVar7 + p->nCol);\n        goto LAB_0008dd7a;\n      }\n      p_00 = (p->in).aData + (p->in).iNext;\n      bVar2 = *p_00;\n      uVar6 = (uint)bVar2;\n      if ((char)bVar2 < '\0') {\n        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);\n        uVar6 = p->nCol;\n        uVar3 = (uint)bVar2;\n      }\n      else {\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }\n      if ((int)uVar6 < 1) {\n        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n        local_3c = 0xb;\n        goto LAB_0008dd5f;\n      }\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + uVar3;\n      (p->tblhdr).nBuf = 0;\n      nCopy = nCopy - uVar3;\n      sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc);\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd5f;\n      __n = p->nCol * 8;\n      memset((p->tblhdr).aBuf,0,__n);\n      memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy);\n      ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n      iVar4 = p->nCol;\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + nCopy;\n      p->apValue = ppsVar7;\n      ppsVar7 = ppsVar7 + iVar4 * 2;\n      p->abPK = (u8 *)ppsVar7;\n      p->zTab = (char *)((int)ppsVar7 + iVar4);\n      p->rc = rc;\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd7a;\n      local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      iVar4 = (p->in).iNext;\n      (p->in).iCurrent = iVar4;\n      if ((p->in).nData <= iVar4) goto LAB_0008dda0;\n      puVar8 = (p->in).aData;\n      (p->in).iNext = iVar4 + 1;\n      bVar2 = puVar8[iVar4];\n    } while ((bVar2 & 0xfb) == 0x50);\n  }" if (parenthesized_expression "((bVar2 & 0xfb) == 0x50)" ( (binary_expression "(bVar2 & 0xfb) == 0x50" (parenthesized_expression "(bVar2 & 0xfb)" ( (binary_expression "bVar2 & 0xfb" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    do {\n      if (pbNew != (int *)0x0) {\n        *pbNew = 1;\n      }\n      p->bPatchset = (uint)(bVar2 == 0x50);\n      rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8);\n      local_3c = rc;\n      if (rc != 0) {\nLAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n        p->rc = local_3c;\n        p->apValue = ppsVar7;\n        ppsVar7 = ppsVar7 + p->nCol * 2;\n        p->abPK = (u8 *)ppsVar7;\n        p->zTab = (char *)((int)ppsVar7 + p->nCol);\n        goto LAB_0008dd7a;\n      }\n      p_00 = (p->in).aData + (p->in).iNext;\n      bVar2 = *p_00;\n      uVar6 = (uint)bVar2;\n      if ((char)bVar2 < '\0') {\n        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);\n        uVar6 = p->nCol;\n        uVar3 = (uint)bVar2;\n      }\n      else {\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }\n      if ((int)uVar6 < 1) {\n        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n        local_3c = 0xb;\n        goto LAB_0008dd5f;\n      }\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + uVar3;\n      (p->tblhdr).nBuf = 0;\n      nCopy = nCopy - uVar3;\n      sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc);\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd5f;\n      __n = p->nCol * 8;\n      memset((p->tblhdr).aBuf,0,__n);\n      memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy);\n      ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n      iVar4 = p->nCol;\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + nCopy;\n      p->apValue = ppsVar7;\n      ppsVar7 = ppsVar7 + iVar4 * 2;\n      p->abPK = (u8 *)ppsVar7;\n      p->zTab = (char *)((int)ppsVar7 + iVar4);\n      p->rc = rc;\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd7a;\n      local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      iVar4 = (p->in).iNext;\n      (p->in).iCurrent = iVar4;\n      if ((p->in).nData <= iVar4) goto LAB_0008dda0;\n      puVar8 = (p->in).aData;\n      (p->in).iNext = iVar4 + 1;\n      bVar2 = puVar8[iVar4];\n    } while ((bVar2 & 0xfb) == 0x50);\n  }" { (do_statement "do {\n      if (pbNew != (int *)0x0) {\n        *pbNew = 1;\n      }\n      p->bPatchset = (uint)(bVar2 == 0x50);\n      rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8);\n      local_3c = rc;\n      if (rc != 0) {\nLAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n        p->rc = local_3c;\n        p->apValue = ppsVar7;\n        ppsVar7 = ppsVar7 + p->nCol * 2;\n        p->abPK = (u8 *)ppsVar7;\n        p->zTab = (char *)((int)ppsVar7 + p->nCol);\n        goto LAB_0008dd7a;\n      }\n      p_00 = (p->in).aData + (p->in).iNext;\n      bVar2 = *p_00;\n      uVar6 = (uint)bVar2;\n      if ((char)bVar2 < '\0') {\n        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);\n        uVar6 = p->nCol;\n        uVar3 = (uint)bVar2;\n      }\n      else {\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }\n      if ((int)uVar6 < 1) {\n        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n        local_3c = 0xb;\n        goto LAB_0008dd5f;\n      }\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + uVar3;\n      (p->tblhdr).nBuf = 0;\n      nCopy = nCopy - uVar3;\n      sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc);\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd5f;\n      __n = p->nCol * 8;\n      memset((p->tblhdr).aBuf,0,__n);\n      memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy);\n      ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n      iVar4 = p->nCol;\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + nCopy;\n      p->apValue = ppsVar7;\n      ppsVar7 = ppsVar7 + iVar4 * 2;\n      p->abPK = (u8 *)ppsVar7;\n      p->zTab = (char *)((int)ppsVar7 + iVar4);\n      p->rc = rc;\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd7a;\n      local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      iVar4 = (p->in).iNext;\n      (p->in).iCurrent = iVar4;\n      if ((p->in).nData <= iVar4) goto LAB_0008dda0;\n      puVar8 = (p->in).aData;\n      (p->in).iNext = iVar4 + 1;\n      bVar2 = puVar8[iVar4];\n    } while ((bVar2 & 0xfb) == 0x50);" do (compound_statement "{\n      if (pbNew != (int *)0x0) {\n        *pbNew = 1;\n      }\n      p->bPatchset = (uint)(bVar2 == 0x50);\n      rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8);\n      local_3c = rc;\n      if (rc != 0) {\nLAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n        p->rc = local_3c;\n        p->apValue = ppsVar7;\n        ppsVar7 = ppsVar7 + p->nCol * 2;\n        p->abPK = (u8 *)ppsVar7;\n        p->zTab = (char *)((int)ppsVar7 + p->nCol);\n        goto LAB_0008dd7a;\n      }\n      p_00 = (p->in).aData + (p->in).iNext;\n      bVar2 = *p_00;\n      uVar6 = (uint)bVar2;\n      if ((char)bVar2 < '\0') {\n        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);\n        uVar6 = p->nCol;\n        uVar3 = (uint)bVar2;\n      }\n      else {\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }\n      if ((int)uVar6 < 1) {\n        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n        local_3c = 0xb;\n        goto LAB_0008dd5f;\n      }\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + uVar3;\n      (p->tblhdr).nBuf = 0;\n      nCopy = nCopy - uVar3;\n      sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc);\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd5f;\n      __n = p->nCol * 8;\n      memset((p->tblhdr).aBuf,0,__n);\n      memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy);\n      ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n      iVar4 = p->nCol;\n      piVar1 = &(p->in).iNext;\n      *piVar1 = *piVar1 + nCopy;\n      p->apValue = ppsVar7;\n      ppsVar7 = ppsVar7 + iVar4 * 2;\n      p->abPK = (u8 *)ppsVar7;\n      p->zTab = (char *)((int)ppsVar7 + iVar4);\n      p->rc = rc;\n      local_3c = rc;\n      if (rc != 0) goto LAB_0008dd7a;\n      local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      iVar4 = (p->in).iNext;\n      (p->in).iCurrent = iVar4;\n      if ((p->in).nData <= iVar4) goto LAB_0008dda0;\n      puVar8 = (p->in).aData;\n      (p->in).iNext = iVar4 + 1;\n      bVar2 = puVar8[iVar4];\n    }" { (if_statement "if (pbNew != (int *)0x0) {\n        *pbNew = 1;\n      }" if (parenthesized_expression "(pbNew != (int *)0x0)" ( (binary_expression "pbNew != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        *pbNew = 1;\n      }" { (expression_statement "*pbNew = 1;" (assignment_expression "*pbNew = 1" (pointer_expression "*pbNew" * identifier) = number_literal) ;) })) (expression_statement "p->bPatchset = (uint)(bVar2 == 0x50);" (assignment_expression "p->bPatchset = (uint)(bVar2 == 0x50)" (field_expression "p->bPatchset" identifier -> field_identifier) = (call_expression "(uint)(bVar2 == 0x50)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 == 0x50)" ( (binary_expression "bVar2 == 0x50" identifier == number_literal) )))) ;) (expression_statement "rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8);" (assignment_expression "rc = sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8)" identifier = (call_expression "sessionChangesetBufferTblhdr(in_stack_ffffffb4,in_stack_ffffffb8)" identifier (argument_list "(in_stack_ffffffb4,in_stack_ffffffb8)" ( identifier , identifier )))) ;) (expression_statement "local_3c = rc;" (assignment_expression "local_3c = rc" identifier = identifier) ;) (if_statement "if (rc != 0) {\nLAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n        p->rc = local_3c;\n        p->apValue = ppsVar7;\n        ppsVar7 = ppsVar7 + p->nCol * 2;\n        p->abPK = (u8 *)ppsVar7;\n        p->zTab = (char *)((int)ppsVar7 + p->nCol);\n        goto LAB_0008dd7a;\n      }" if (parenthesized_expression "(rc != 0)" ( (binary_expression "rc != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;\n        p->rc = local_3c;\n        p->apValue = ppsVar7;\n        ppsVar7 = ppsVar7 + p->nCol * 2;\n        p->abPK = (u8 *)ppsVar7;\n        p->zTab = (char *)((int)ppsVar7 + p->nCol);\n        goto LAB_0008dd7a;\n      }" { (labeled_statement "LAB_0008dd5f:\n        ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;" statement_identifier : (expression_statement "ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;" (assignment_expression "ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf" identifier = (cast_expression "(sqlite3_value **)(p->tblhdr).aBuf" ( (type_descriptor "sqlite3_value **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "(p->tblhdr).aBuf" (parenthesized_expression "(p->tblhdr)" ( (field_expression "p->tblhdr" identifier -> field_identifier) )) . field_identifier))) ;)) (expression_statement "p->rc = local_3c;" (assignment_expression "p->rc = local_3c" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;) (expression_statement "p->apValue = ppsVar7;" (assignment_expression "p->apValue = ppsVar7" (field_expression "p->apValue" identifier -> field_identifier) = identifier) ;) (expression_statement "ppsVar7 = ppsVar7 + p->nCol * 2;" (assignment_expression "ppsVar7 = ppsVar7 + p->nCol * 2" identifier = (binary_expression "ppsVar7 + p->nCol * 2" identifier + (binary_expression "p->nCol * 2" (field_expression "p->nCol" identifier -> field_identifier) * number_literal))) ;) (expression_statement "p->abPK = (u8 *)ppsVar7;" (assignment_expression "p->abPK = (u8 *)ppsVar7" (field_expression "p->abPK" identifier -> field_identifier) = (cast_expression "(u8 *)ppsVar7" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "p->zTab = (char *)((int)ppsVar7 + p->nCol);" (assignment_expression "p->zTab = (char *)((int)ppsVar7 + p->nCol)" (field_expression "p->zTab" identifier -> field_identifier) = (cast_expression "(char *)((int)ppsVar7 + p->nCol)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppsVar7 + p->nCol)" ( (binary_expression "(int)ppsVar7 + p->nCol" (cast_expression "(int)ppsVar7" ( (type_descriptor "int" primitive_type) ) identifier) + (field_expression "p->nCol" identifier -> field_identifier)) )))) ;) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "p_00 = (p->in).aData + (p->in).iNext;" (assignment_expression "p_00 = (p->in).aData + (p->in).iNext" identifier = (binary_expression "(p->in).aData + (p->in).iNext" (field_expression "(p->in).aData" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) + (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "bVar2 = *p_00;" (assignment_expression "bVar2 = *p_00" identifier = (pointer_expression "*p_00" * identifier)) ;) (expression_statement "uVar6 = (uint)bVar2;" (assignment_expression "uVar6 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar2 < '\0') {\n        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);\n        uVar6 = p->nCol;\n        uVar3 = (uint)bVar2;\n      }\n      else {\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }" if (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);\n        uVar6 = p->nCol;\n        uVar3 = (uint)bVar2;\n      }" { (expression_statement "bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol);" (assignment_expression "bVar2 = sqlite3GetVarint32(p_00,(u32 *)&p->nCol)" identifier = (call_expression "sqlite3GetVarint32(p_00,(u32 *)&p->nCol)" identifier (argument_list "(p_00,(u32 *)&p->nCol)" ( identifier , (cast_expression "(u32 *)&p->nCol" ( (type_descriptor "u32 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&p->nCol" & (field_expression "p->nCol" identifier -> field_identifier))) )))) ;) (expression_statement "uVar6 = p->nCol;" (assignment_expression "uVar6 = p->nCol" identifier = (field_expression "p->nCol" identifier -> field_identifier)) ;) (expression_statement "uVar3 = (uint)bVar2;" (assignment_expression "uVar3 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }) (else_clause "else {\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }" else (compound_statement "{\n        p->nCol = uVar6;\n        uVar3 = 1;\n      }" { (expression_statement "p->nCol = uVar6;" (assignment_expression "p->nCol = uVar6" (field_expression "p->nCol" identifier -> field_identifier) = identifier) ;) (expression_statement "uVar3 = 1;" (assignment_expression "uVar3 = 1" identifier = number_literal) ;) }))) (if_statement "if ((int)uVar6 < 1) {\n        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n        local_3c = 0xb;\n        goto LAB_0008dd5f;\n      }" if (parenthesized_expression "((int)uVar6 < 1)" ( (binary_expression "(int)uVar6 < 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n        sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n        local_3c = 0xb;\n        goto LAB_0008dd5f;\n      }" { (expression_statement "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" identifier (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" ( number_literal , (string_literal ""%s at line %d of [%.10s]"" " string_content ") , (string_literal ""database corruption"" " string_content ") , number_literal , (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" " string_content ") ))) ;) (expression_statement "local_3c = 0xb;" (assignment_expression "local_3c = 0xb" identifier = number_literal) ;) (goto_statement "goto LAB_0008dd5f;" goto statement_identifier ;) })) (expression_statement "piVar1 = &(p->in).iNext;" (assignment_expression "piVar1 = &(p->in).iNext" identifier = (pointer_expression "&(p->in).iNext" & (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 + uVar3;" (assignment_expression "*piVar1 = *piVar1 + uVar3" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + uVar3" (pointer_expression "*piVar1" * identifier) + identifier)) ;) (expression_statement "(p->tblhdr).nBuf = 0;" (assignment_expression "(p->tblhdr).nBuf = 0" (field_expression "(p->tblhdr).nBuf" (parenthesized_expression "(p->tblhdr)" ( (field_expression "p->tblhdr" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "nCopy = nCopy - uVar3;" (assignment_expression "nCopy = nCopy - uVar3" identifier = (binary_expression "nCopy - uVar3" identifier - identifier)) ;) (expression_statement "sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc);" (call_expression "sessionBufferGrow(&p->tblhdr,nCopy + uVar6 * 8,&rc)" identifier (argument_list "(&p->tblhdr,nCopy + uVar6 * 8,&rc)" ( (pointer_expression "&p->tblhdr" & (field_expression "p->tblhdr" identifier -> field_identifier)) , (binary_expression "nCopy + uVar6 * 8" identifier + (binary_expression "uVar6 * 8" identifier * number_literal)) , (pointer_expression "&rc" & identifier) ))) ;) (expression_statement "local_3c = rc;" (assignment_expression "local_3c = rc" identifier = identifier) ;) (if_statement "if (rc != 0) goto LAB_0008dd5f;" if (parenthesized_expression "(rc != 0)" ( (binary_expression "rc != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd5f;" goto statement_identifier ;)) (expression_statement "__n = p->nCol * 8;" (assignment_expression "__n = p->nCol * 8" identifier = (binary_expression "p->nCol * 8" (field_expression "p->nCol" identifier -> field_identifier) * number_literal)) ;) (expression_statement "memset((p->tblhdr).aBuf,0,__n);" (call_expression "memset((p->tblhdr).aBuf,0,__n)" identifier (argument_list "((p->tblhdr).aBuf,0,__n)" ( (field_expression "(p->tblhdr).aBuf" (parenthesized_expression "(p->tblhdr)" ( (field_expression "p->tblhdr" identifier -> field_identifier) )) . field_identifier) , number_literal , identifier ))) ;) (expression_statement "memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy);" (call_expression "memcpy((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy)" identifier (argument_list "((p->tblhdr).aBuf + __n,(p->in).aData + (p->in).iNext,nCopy)" ( (binary_expression "(p->tblhdr).aBuf + __n" (field_expression "(p->tblhdr).aBuf" (parenthesized_expression "(p->tblhdr)" ( (field_expression "p->tblhdr" identifier -> field_identifier) )) . field_identifier) + identifier) , (binary_expression "(p->in).aData + (p->in).iNext" (field_expression "(p->in).aData" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) + (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier)) , identifier ))) ;) (expression_statement "ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf;" (assignment_expression "ppsVar7 = (sqlite3_value **)(p->tblhdr).aBuf" identifier = (cast_expression "(sqlite3_value **)(p->tblhdr).aBuf" ( (type_descriptor "sqlite3_value **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (field_expression "(p->tblhdr).aBuf" (parenthesized_expression "(p->tblhdr)" ( (field_expression "p->tblhdr" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "iVar4 = p->nCol;" (assignment_expression "iVar4 = p->nCol" identifier = (field_expression "p->nCol" identifier -> field_identifier)) ;) (expression_statement "piVar1 = &(p->in).iNext;" (assignment_expression "piVar1 = &(p->in).iNext" identifier = (pointer_expression "&(p->in).iNext" & (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 + nCopy;" (assignment_expression "*piVar1 = *piVar1 + nCopy" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + nCopy" (pointer_expression "*piVar1" * identifier) + identifier)) ;) (expression_statement "p->apValue = ppsVar7;" (assignment_expression "p->apValue = ppsVar7" (field_expression "p->apValue" identifier -> field_identifier) = identifier) ;) (expression_statement "ppsVar7 = ppsVar7 + iVar4 * 2;" (assignment_expression "ppsVar7 = ppsVar7 + iVar4 * 2" identifier = (binary_expression "ppsVar7 + iVar4 * 2" identifier + (binary_expression "iVar4 * 2" identifier * number_literal))) ;) (expression_statement "p->abPK = (u8 *)ppsVar7;" (assignment_expression "p->abPK = (u8 *)ppsVar7" (field_expression "p->abPK" identifier -> field_identifier) = (cast_expression "(u8 *)ppsVar7" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "p->zTab = (char *)((int)ppsVar7 + iVar4);" (assignment_expression "p->zTab = (char *)((int)ppsVar7 + iVar4)" (field_expression "p->zTab" identifier -> field_identifier) = (cast_expression "(char *)((int)ppsVar7 + iVar4)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)ppsVar7 + iVar4)" ( (binary_expression "(int)ppsVar7 + iVar4" (cast_expression "(int)ppsVar7" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) ;) (expression_statement "p->rc = rc;" (assignment_expression "p->rc = rc" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;) (expression_statement "local_3c = rc;" (assignment_expression "local_3c = rc" identifier = identifier) ;) (if_statement "if (rc != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(rc != 0)" ( (binary_expression "rc != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (expression_statement "local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8);" (assignment_expression "local_3c = sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8)" identifier = (call_expression "sessionInputBuffer(in_stack_ffffffb4,(int)in_stack_ffffffb8)" identifier (argument_list "(in_stack_ffffffb4,(int)in_stack_ffffffb8)" ( identifier , (cast_expression "(int)in_stack_ffffffb8" ( (type_descriptor "int" primitive_type) ) identifier) )))) ;) (expression_statement "p->rc = local_3c;" (assignment_expression "p->rc = local_3c" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (expression_statement "iVar4 = (p->in).iNext;" (assignment_expression "iVar4 = (p->in).iNext" identifier = (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(p->in).iCurrent = iVar4;" (assignment_expression "(p->in).iCurrent = iVar4" (field_expression "(p->in).iCurrent" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (if_statement "if ((p->in).nData <= iVar4) goto LAB_0008dda0;" if (parenthesized_expression "((p->in).nData <= iVar4)" ( (binary_expression "(p->in).nData <= iVar4" (field_expression "(p->in).nData" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) <= identifier) )) (goto_statement "goto LAB_0008dda0;" goto statement_identifier ;)) (expression_statement "puVar8 = (p->in).aData;" (assignment_expression "puVar8 = (p->in).aData" identifier = (field_expression "(p->in).aData" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(p->in).iNext = iVar4 + 1;" (assignment_expression "(p->in).iNext = iVar4 + 1" (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = puVar8[iVar4];" (assignment_expression "bVar2 = puVar8[iVar4]" identifier = (subscript_expression "puVar8[iVar4]" identifier [ identifier ])) ;) }) while (parenthesized_expression "((bVar2 & 0xfb) == 0x50)" ( (binary_expression "(bVar2 & 0xfb) == 0x50" (parenthesized_expression "(bVar2 & 0xfb)" ( (binary_expression "bVar2 & 0xfb" identifier & number_literal) )) == number_literal) )) ;) })) (expression_statement "uVar6 = (uint)bVar2;" (assignment_expression "uVar6 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((p->zTab == (char *)0x0) || ((iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0)))) {\n    uVar10 = 0x301e0;\n  }\n  else {\n    p->op = uVar6;\n    iVar9 = (p->in).iNext;\n    (p->in).iNext = iVar9 + 1;\n    p->bIndirect = (uint)puVar8[iVar9];\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar9 = p->nCol;\n      if (paRec != (u8 **)0x0) {\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }\n      ppsVar7 = p->apValue;\n      apOut = ppsVar7;\n      apOut_00 = ppsVar7 + iVar9;\n      if (p->bInvert != 0) {\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }\n      if (uVar6 != 0x12) {\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }\nLAB_0008df25:\n      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      if (p->bPatchset == 0) {\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }\n      else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar10 = 0x301e6;\n  }" if (parenthesized_expression "((p->zTab == (char *)0x0) || ((iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0))))" ( (binary_expression "(p->zTab == (char *)0x0) || ((iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0)))" (parenthesized_expression "(p->zTab == (char *)0x0)" ( (binary_expression "p->zTab == (char *)0x0" (field_expression "p->zTab" identifier -> field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "((iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0)))" ( (parenthesized_expression "(iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0))" ( (comma_expression "iVar4 = p->bPatchset, iVar4 != 0 && (p->bInvert != 0)" (assignment_expression "iVar4 = p->bPatchset" identifier = (field_expression "p->bPatchset" identifier -> field_identifier)) , (binary_expression "iVar4 != 0 && (p->bInvert != 0)" (binary_expression "iVar4 != 0" identifier != number_literal) && (parenthesized_expression "(p->bInvert != 0)" ( (binary_expression "p->bInvert != 0" (field_expression "p->bInvert" identifier -> field_identifier) != number_literal) )))) )) ))) )) (compound_statement "{\n    uVar10 = 0x301e0;\n  }" { (expression_statement "uVar10 = 0x301e0;" (assignment_expression "uVar10 = 0x301e0" identifier = number_literal) ;) }) (else_clause "else {\n    p->op = uVar6;\n    iVar9 = (p->in).iNext;\n    (p->in).iNext = iVar9 + 1;\n    p->bIndirect = (uint)puVar8[iVar9];\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar9 = p->nCol;\n      if (paRec != (u8 **)0x0) {\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }\n      ppsVar7 = p->apValue;\n      apOut = ppsVar7;\n      apOut_00 = ppsVar7 + iVar9;\n      if (p->bInvert != 0) {\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }\n      if (uVar6 != 0x12) {\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }\nLAB_0008df25:\n      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      if (p->bPatchset == 0) {\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }\n      else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar10 = 0x301e6;\n  }" else (compound_statement "{\n    p->op = uVar6;\n    iVar9 = (p->in).iNext;\n    (p->in).iNext = iVar9 + 1;\n    p->bIndirect = (uint)puVar8[iVar9];\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar9 = p->nCol;\n      if (paRec != (u8 **)0x0) {\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }\n      ppsVar7 = p->apValue;\n      apOut = ppsVar7;\n      apOut_00 = ppsVar7 + iVar9;\n      if (p->bInvert != 0) {\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }\n      if (uVar6 != 0x12) {\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }\nLAB_0008df25:\n      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      if (p->bPatchset == 0) {\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }\n      else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar10 = 0x301e6;\n  }" { (expression_statement "p->op = uVar6;" (assignment_expression "p->op = uVar6" (field_expression "p->op" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar9 = (p->in).iNext;" (assignment_expression "iVar9 = (p->in).iNext" identifier = (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "(p->in).iNext = iVar9 + 1;" (assignment_expression "(p->in).iNext = iVar9 + 1" (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "p->bIndirect = (uint)puVar8[iVar9];" (assignment_expression "p->bIndirect = (uint)puVar8[iVar9]" (field_expression "p->bIndirect" identifier -> field_identifier) = (cast_expression "(uint)puVar8[iVar9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar8[iVar9]" identifier [ identifier ]))) ;) (if_statement "if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar9 = p->nCol;\n      if (paRec != (u8 **)0x0) {\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }\n      ppsVar7 = p->apValue;\n      apOut = ppsVar7;\n      apOut_00 = ppsVar7 + iVar9;\n      if (p->bInvert != 0) {\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }\n      if (uVar6 != 0x12) {\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }\nLAB_0008df25:\n      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      if (p->bPatchset == 0) {\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }\n      else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }" if (parenthesized_expression "((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0))" ( (binary_expression "(bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)" (parenthesized_expression "(bVar2 < 0x18)" ( (binary_expression "bVar2 < 0x18" identifier < number_literal) )) && (parenthesized_expression "((0x840200U >> (uVar6 & 0x1f) & 1) != 0)" ( (binary_expression "(0x840200U >> (uVar6 & 0x1f) & 1) != 0" (parenthesized_expression "(0x840200U >> (uVar6 & 0x1f) & 1)" ( (binary_expression "0x840200U >> (uVar6 & 0x1f) & 1" (binary_expression "0x840200U >> (uVar6 & 0x1f)" number_literal >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      iVar9 = p->nCol;\n      if (paRec != (u8 **)0x0) {\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }\n      ppsVar7 = p->apValue;\n      apOut = ppsVar7;\n      apOut_00 = ppsVar7 + iVar9;\n      if (p->bInvert != 0) {\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }\n      if (uVar6 != 0x12) {\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }\nLAB_0008df25:\n      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);\n      p->rc = local_3c;\n      if (local_3c != 0) goto LAB_0008dd7a;\n      if (p->bPatchset == 0) {\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }\n      else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }" { (expression_statement "iVar9 = p->nCol;" (assignment_expression "iVar9 = p->nCol" identifier = (field_expression "p->nCol" identifier -> field_identifier)) ;) (if_statement "if (paRec != (u8 **)0x0) {\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }" if (parenthesized_expression "(paRec != (u8 **)0x0)" ( (binary_expression "paRec != (u8 **)0x0" identifier != (cast_expression "(u8 **)0x0" ( (type_descriptor "u8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n        if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }\n        local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);\n        p->rc = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }\n        goto LAB_0008dd7a;\n      }" { (if_statement "if (iVar4 == 0) {\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }\n        else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }" if (parenthesized_expression "(iVar4 == 0)" ( (binary_expression "iVar4 == 0" identifier == number_literal) )) (compound_statement "{\n          if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }\n        }" { (if_statement "if (bVar2 == 0x17) {\n            iVar9 = iVar9 * 2;\n          }" if (parenthesized_expression "(bVar2 == 0x17)" ( (binary_expression "bVar2 == 0x17" identifier == number_literal) )) (compound_statement "{\n            iVar9 = iVar9 * 2;\n          }" { (expression_statement "iVar9 = iVar9 * 2;" (assignment_expression "iVar9 = iVar9 * 2" identifier = (binary_expression "iVar9 * 2" identifier * number_literal)) ;) })) }) (else_clause "else if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }" else (if_statement "if (bVar2 == 9) {\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }" if (parenthesized_expression "(bVar2 == 9)" ( (binary_expression "bVar2 == 9" identifier == number_literal) )) (compound_statement "{\n          if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }\n        }" { (if_statement "if (iVar9 < 1) {\n            iVar9 = 0;\n          }\n          else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }" if (parenthesized_expression "(iVar9 < 1)" ( (binary_expression "iVar9 < 1" identifier < number_literal) )) (compound_statement "{\n            iVar9 = 0;\n          }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) }) (else_clause "else {\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }" else (compound_statement "{\n            puVar5 = p->abPK;\n            puVar8 = puVar5 + iVar9;\n            iVar9 = 0;\n            do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);\n          }" { (expression_statement "puVar5 = p->abPK;" (assignment_expression "puVar5 = p->abPK" identifier = (field_expression "p->abPK" identifier -> field_identifier)) ;) (expression_statement "puVar8 = puVar5 + iVar9;" (assignment_expression "puVar8 = puVar5 + iVar9" identifier = (binary_expression "puVar5 + iVar9" identifier + identifier)) ;) (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            } while (puVar8 != puVar5);" do (compound_statement "{\n              iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');\n              puVar5 = puVar5 + 1;\n            }" { (expression_statement "iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0');" (assignment_expression "iVar9 = (iVar9 + 1) - (uint)(*puVar5 == '\0')" identifier = (binary_expression "(iVar9 + 1) - (uint)(*puVar5 == '\0')" (parenthesized_expression "(iVar9 + 1)" ( (binary_expression "iVar9 + 1" identifier + number_literal) )) - (call_expression "(uint)(*puVar5 == '\0')" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*puVar5 == '\0')" ( (binary_expression "*puVar5 == '\0'" (pointer_expression "*puVar5" * identifier) == (char_literal "'\0'" ' escape_sequence ')) ))))) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar8 != puVar5)" ( (binary_expression "puVar8 != puVar5" identifier != identifier) )) ;) }))) })))) (expression_statement "local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec);" (assignment_expression "local_3c = sessionChangesetBufferRecord(&p->in,iVar9,pnRec)" identifier = (call_expression "sessionChangesetBufferRecord(&p->in,iVar9,pnRec)" identifier (argument_list "(&p->in,iVar9,pnRec)" ( (pointer_expression "&p->in" & (field_expression "p->in" identifier -> field_identifier)) , identifier , identifier )))) ;) (expression_statement "p->rc = local_3c;" (assignment_expression "p->rc = local_3c" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_3c == 0) {\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n          local_3c = 100;\n          *paRec = (p->in).aData + (p->in).iNext;\n          piVar1 = &(p->in).iNext;\n          *piVar1 = *piVar1 + *pnRec;\n        }" { (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" identifier = number_literal) ;) (expression_statement "*paRec = (p->in).aData + (p->in).iNext;" (assignment_expression "*paRec = (p->in).aData + (p->in).iNext" (pointer_expression "*paRec" * identifier) = (binary_expression "(p->in).aData + (p->in).iNext" (field_expression "(p->in).aData" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier) + (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "piVar1 = &(p->in).iNext;" (assignment_expression "piVar1 = &(p->in).iNext" identifier = (pointer_expression "&(p->in).iNext" & (field_expression "(p->in).iNext" (parenthesized_expression "(p->in)" ( (field_expression "p->in" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "*piVar1 = *piVar1 + *pnRec;" (assignment_expression "*piVar1 = *piVar1 + *pnRec" (pointer_expression "*piVar1" * identifier) = (binary_expression "*piVar1 + *pnRec" (pointer_expression "*piVar1" * identifier) + (pointer_expression "*pnRec" * identifier))) ;) })) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "ppsVar7 = p->apValue;" (assignment_expression "ppsVar7 = p->apValue" identifier = (field_expression "p->apValue" identifier -> field_identifier)) ;) (expression_statement "apOut = ppsVar7;" (assignment_expression "apOut = ppsVar7" identifier = identifier) ;) (expression_statement "apOut_00 = ppsVar7 + iVar9;" (assignment_expression "apOut_00 = ppsVar7 + iVar9" identifier = (binary_expression "ppsVar7 + iVar9" identifier + identifier)) ;) (if_statement "if (p->bInvert != 0) {\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }" if (parenthesized_expression "(p->bInvert != 0)" ( (binary_expression "p->bInvert != 0" (field_expression "p->bInvert" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n        apOut = ppsVar7 + iVar9;\n        apOut_00 = ppsVar7;\n      }" { (expression_statement "apOut = ppsVar7 + iVar9;" (assignment_expression "apOut = ppsVar7 + iVar9" identifier = (binary_expression "ppsVar7 + iVar9" identifier + identifier)) ;) (expression_statement "apOut_00 = ppsVar7;" (assignment_expression "apOut_00 = ppsVar7" identifier = identifier) ;) })) (if_statement "if (uVar6 != 0x12) {\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }" if (parenthesized_expression "(uVar6 != 0x12)" ( (binary_expression "uVar6 != 0x12" identifier != number_literal) )) (compound_statement "{\n        local_38 = (u8 *)0x0;\n        if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }\n        local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);\n        p->rc = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }\n        if (p->bPatchset == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }\n        goto LAB_0008df9a;\n      }" { (expression_statement "local_38 = (u8 *)0x0;" (assignment_expression "local_38 = (u8 *)0x0" identifier = (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (if_statement "if (iVar4 != 0) {\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n          if (uVar6 != 9) goto LAB_0008df25;\n          local_38 = p->abPK;\n        }" { (if_statement "if (uVar6 != 9) goto LAB_0008df25;" if (parenthesized_expression "(uVar6 != 9)" ( (binary_expression "uVar6 != 9" identifier != number_literal) )) (goto_statement "goto LAB_0008df25;" goto statement_identifier ;)) (expression_statement "local_38 = p->abPK;" (assignment_expression "local_38 = p->abPK" identifier = (field_expression "p->abPK" identifier -> field_identifier)) ;) })) (expression_statement "local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut);" (assignment_expression "local_3c = sessionReadRecord(&p->in,iVar9,local_38,apOut)" identifier = (call_expression "sessionReadRecord(&p->in,iVar9,local_38,apOut)" identifier (argument_list "(&p->in,iVar9,local_38,apOut)" ( (pointer_expression "&p->in" & (field_expression "p->in" identifier -> field_identifier)) , identifier , identifier , identifier )))) ;) (expression_statement "p->rc = local_3c;" (assignment_expression "p->rc = local_3c" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (if_statement "if (p->op != 9) {\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }" if (parenthesized_expression "(p->op != 9)" ( (binary_expression "p->op != 9" (field_expression "p->op" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n          iVar9 = p->nCol;\n          goto LAB_0008df25;\n        }" { (expression_statement "iVar9 = p->nCol;" (assignment_expression "iVar9 = p->nCol" identifier = (field_expression "p->nCol" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0008df25;" goto statement_identifier ;) })) (if_statement "if (p->bPatchset == 0) goto LAB_0008dffb;" if (parenthesized_expression "(p->bPatchset == 0)" ( (binary_expression "p->bPatchset == 0" (field_expression "p->bPatchset" identifier -> field_identifier) == number_literal) )) (goto_statement "goto LAB_0008dffb;" goto statement_identifier ;)) (labeled_statement "LAB_0008dfde:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }" statement_identifier : (if_statement "if (p->bInvert != 0) {\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }" if (parenthesized_expression "(p->bInvert != 0)" ( (binary_expression "p->bInvert != 0" (field_expression "p->bInvert" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n          iVar4 = p->op;\n          goto LAB_0008dfe8;\n        }" { (expression_statement "iVar4 = p->op;" (assignment_expression "iVar4 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0008dfe8;" goto statement_identifier ;) }))) (goto_statement "goto LAB_0008df9a;" goto statement_identifier ;) })) (labeled_statement "LAB_0008df25:\n      local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);" statement_identifier : (expression_statement "local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00);" (assignment_expression "local_3c = sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00)" identifier = (call_expression "sessionReadRecord(&p->in,iVar9,(u8 *)0x0,apOut_00)" identifier (argument_list "(&p->in,iVar9,(u8 *)0x0,apOut_00)" ( (pointer_expression "&p->in" & (field_expression "p->in" identifier -> field_identifier)) , identifier , (cast_expression "(u8 *)0x0" ( (type_descriptor "u8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) , identifier )))) ;)) (expression_statement "p->rc = local_3c;" (assignment_expression "p->rc = local_3c" (field_expression "p->rc" identifier -> field_identifier) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (if_statement "if (p->bPatchset == 0) {\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }\n      else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }" if (parenthesized_expression "(p->bPatchset == 0)" ( (binary_expression "p->bPatchset == 0" (field_expression "p->bPatchset" identifier -> field_identifier) == number_literal) )) (compound_statement "{\nLAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }\n      }" { (labeled_statement "LAB_0008dffb:\n        if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }" statement_identifier : (if_statement "if (p->bInvert != 0) {\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }" if (parenthesized_expression "(p->bInvert != 0)" ( (binary_expression "p->bInvert != 0" (field_expression "p->bInvert" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n          iVar4 = p->op;\n          if (iVar4 == 0x17) goto LAB_0008df57;\nLAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar4 == 9) {\n            p->op = 0x12;\n          }\n        }" { (expression_statement "iVar4 = p->op;" (assignment_expression "iVar4 = p->op" identifier = (field_expression "p->op" identifier -> field_identifier)) ;) (if_statement "if (iVar4 == 0x17) goto LAB_0008df57;" if (parenthesized_expression "(iVar4 == 0x17)" ( (binary_expression "iVar4 == 0x17" identifier == number_literal) )) (goto_statement "goto LAB_0008df57;" goto statement_identifier ;)) (labeled_statement "LAB_0008dfe8:\n          if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" statement_identifier : (if_statement "if (iVar4 == 0x12) {\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" if (parenthesized_expression "(iVar4 == 0x12)" ( (binary_expression "iVar4 == 0x12" identifier == number_literal) )) (compound_statement "{\n            p->op = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" { (expression_statement "p->op = 9;" (assignment_expression "p->op = 9" (field_expression "p->op" identifier -> field_identifier) = number_literal) ;) (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" identifier = number_literal) ;) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) }))) (if_statement "if (iVar4 == 9) {\n            p->op = 0x12;\n          }" if (parenthesized_expression "(iVar4 == 9)" ( (binary_expression "iVar4 == 9" identifier == number_literal) )) (compound_statement "{\n            p->op = 0x12;\n          }" { (expression_statement "p->op = 0x12;" (assignment_expression "p->op = 0x12" (field_expression "p->op" identifier -> field_identifier) = number_literal) ;) })) }))) }) (else_clause "else {\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }" else (compound_statement "{\n        if (p->op != 0x17) goto LAB_0008dfde;\nLAB_0008df57:\n        iVar4 = p->nCol;\n        if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }\n      }" { (if_statement "if (p->op != 0x17) goto LAB_0008dfde;" if (parenthesized_expression "(p->op != 0x17)" ( (binary_expression "p->op != 0x17" (field_expression "p->op" identifier -> field_identifier) != number_literal) )) (goto_statement "goto LAB_0008dfde;" goto statement_identifier ;)) (labeled_statement "LAB_0008df57:\n        iVar4 = p->nCol;" statement_identifier : (expression_statement "iVar4 = p->nCol;" (assignment_expression "iVar4 = p->nCol" identifier = (field_expression "p->nCol" identifier -> field_identifier)) ;)) (if_statement "if (0 < iVar4) {\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }" if (parenthesized_expression "(0 < iVar4)" ( (binary_expression "0 < iVar4" number_literal < identifier) )) (compound_statement "{\n          iVar9 = 0;\n          do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);\n        }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          } while (iVar9 < iVar4);" do (compound_statement "{\n            if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }\n            iVar9 = iVar9 + 1;\n          }" { (if_statement "if (p->abPK[iVar9] != '\0') {\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }" if (parenthesized_expression "(p->abPK[iVar9] != '\0')" ( (binary_expression "p->abPK[iVar9] != '\0'" (subscript_expression "p->abPK[iVar9]" (field_expression "p->abPK" identifier -> field_identifier) [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              p->apValue[iVar9] = p->apValue[iVar4 + iVar9];\n              if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }\n              p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;\n              iVar4 = p->nCol;\n            }" { (expression_statement "p->apValue[iVar9] = p->apValue[iVar4 + iVar9];" (assignment_expression "p->apValue[iVar9] = p->apValue[iVar4 + iVar9]" (subscript_expression "p->apValue[iVar9]" (field_expression "p->apValue" identifier -> field_identifier) [ identifier ]) = (subscript_expression "p->apValue[iVar4 + iVar9]" (field_expression "p->apValue" identifier -> field_identifier) [ (binary_expression "iVar4 + iVar9" identifier + identifier) ])) ;) (if_statement "if (p->apValue[iVar9] == (sqlite3_value *)0x0) {\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }" if (parenthesized_expression "(p->apValue[iVar9] == (sqlite3_value *)0x0)" ( (binary_expression "p->apValue[iVar9] == (sqlite3_value *)0x0" (subscript_expression "p->apValue[iVar9]" (field_expression "p->apValue" identifier -> field_identifier) [ identifier ]) == (cast_expression "(sqlite3_value *)0x0" ( (type_descriptor "sqlite3_value *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n                uVar10 = 0x30212;\n                goto LAB_0008dead;\n              }" { (expression_statement "uVar10 = 0x30212;" (assignment_expression "uVar10 = 0x30212" identifier = number_literal) ;) (goto_statement "goto LAB_0008dead;" goto statement_identifier ;) })) (expression_statement "p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0;" (assignment_expression "p->apValue[p->nCol + iVar9] = (sqlite3_value *)0x0" (subscript_expression "p->apValue[p->nCol + iVar9]" (field_expression "p->apValue" identifier -> field_identifier) [ (binary_expression "p->nCol + iVar9" (field_expression "p->nCol" identifier -> field_identifier) + identifier) ]) = (cast_expression "(sqlite3_value *)0x0" ( (type_descriptor "sqlite3_value *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "iVar4 = p->nCol;" (assignment_expression "iVar4 = p->nCol" identifier = (field_expression "p->nCol" identifier -> field_identifier)) ;) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar9 < iVar4)" ( (binary_expression "iVar9 < iVar4" identifier < identifier) )) ;) })) }))) (labeled_statement "LAB_0008df9a:\n      local_3c = 100;" statement_identifier : (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" identifier = number_literal) ;)) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "uVar10 = 0x301e6;" (assignment_expression "uVar10 = 0x301e6" identifier = number_literal) ;) }))) (labeled_statement "LAB_0008dead:\n  sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",uVar10,\n              "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" statement_identifier : (expression_statement "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",uVar10,\n              "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "sqlite3_log(0xb,"%s at line %d of [%.10s]","database corruption",uVar10,\n              "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" identifier (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",uVar10,\n              "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" ( number_literal , (string_literal ""%s at line %d of [%.10s]"" " string_content ") , (string_literal ""database corruption"" " string_content ") , identifier , (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" " string_content ") ))) ;)) (expression_statement "p->rc = 0xb;" (assignment_expression "p->rc = 0xb" (field_expression "p->rc" identifier -> field_identifier) = number_literal) ;) (expression_statement "local_3c = 0xb;" (assignment_expression "local_3c = 0xb" identifier = number_literal) ;) (labeled_statement "LAB_0008dd7a:\n  if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" statement_identifier : (if_statement "if (local_20 != *(int *)(in_GS_OFFSET + 0x14)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\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                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail_local();\n  }" { comment (expression_statement "__stack_chk_fail_local();" (call_expression "__stack_chk_fail_local()" identifier (argument_list "()" ( ))) ;) }))) (return_statement "return local_3c;" return identifier ;) })))
(translation_unit "int __regparm3 FUN_0008db60(int param_1,int *param_2,int *param_3,undefined4 *param_4)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  void *__s;\n  int iVar8;\n  int in_GS_OFFSET;\n  undefined4 uVar9;\n  int local_3c;\n  size_t local_24;\n  \n  __s = *(void **)(param_1 + 0x5c);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }\n  local_3c = FUN_0008d3d0();\n  *(int *)(param_1 + 0x40) = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  FUN_00050030();\n  iVar5 = *(int *)(param_1 + 8);\n  iVar8 = *(int *)(param_1 + 0xc);\n  *(int *)(param_1 + 4) = iVar5;\n  *(int *)(param_1 + 8) = iVar5 + 1;\n  bVar2 = *(byte *)(iVar8 + iVar5);\n  while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }\n  uVar6 = (uint)bVar2;\n  if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }\nLAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  *(undefined4 *)(param_1 + 0x40) = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }\n                    \n  FUN_00116110();\n}\n\n" (function_definition "int __regparm3 FUN_0008db60(int param_1,int *param_2,int *param_3,undefined4 *param_4)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  void *__s;\n  int iVar8;\n  int in_GS_OFFSET;\n  undefined4 uVar9;\n  int local_3c;\n  size_t local_24;\n  \n  __s = *(void **)(param_1 + 0x5c);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }\n  local_3c = FUN_0008d3d0();\n  *(int *)(param_1 + 0x40) = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  FUN_00050030();\n  iVar5 = *(int *)(param_1 + 8);\n  iVar8 = *(int *)(param_1 + 0xc);\n  *(int *)(param_1 + 4) = iVar5;\n  *(int *)(param_1 + 8) = iVar5 + 1;\n  bVar2 = *(byte *)(iVar8 + iVar5);\n  while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }\n  uVar6 = (uint)bVar2;\n  if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }\nLAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  *(undefined4 *)(param_1 + 0x40) = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }\n                    \n  FUN_00116110();\n}" primitive_type (ERROR "__regparm3" identifier) (function_declarator "FUN_0008db60(int param_1,int *param_2,int *param_3,undefined4 *param_4)" identifier (parameter_list "(int param_1,int *param_2,int *param_3,undefined4 *param_4)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "int *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "undefined4 *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  void *__s;\n  int iVar8;\n  int in_GS_OFFSET;\n  undefined4 uVar9;\n  int local_3c;\n  size_t local_24;\n  \n  __s = *(void **)(param_1 + 0x5c);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }\n  local_3c = FUN_0008d3d0();\n  *(int *)(param_1 + 0x40) = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  FUN_00050030();\n  iVar5 = *(int *)(param_1 + 8);\n  iVar8 = *(int *)(param_1 + 0xc);\n  *(int *)(param_1 + 4) = iVar5;\n  *(int *)(param_1 + 8) = iVar5 + 1;\n  bVar2 = *(byte *)(iVar8 + iVar5);\n  while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }\n  uVar6 = (uint)bVar2;\n  if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }\nLAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  *(undefined4 *)(param_1 + 0x40) = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }\n                    \n  FUN_00116110();\n}" { (declaration "size_t __n;" primitive_type identifier ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "int iVar3;" primitive_type identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "void *__s;" primitive_type (pointer_declarator "*__s" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int in_GS_OFFSET;" primitive_type identifier ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "size_t local_24;" primitive_type identifier ;) (expression_statement "__s = *(void **)(param_1 + 0x5c);" (assignment_expression "__s = *(void **)(param_1 + 0x5c)" identifier = (pointer_expression "*(void **)(param_1 + 0x5c)" * (cast_expression "(void **)(param_1 + 0x5c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(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) ))))) ;) (if_statement "if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }" if (parenthesized_expression "(__s != (void *)0x0)" ( (binary_expression "__s != (void *)0x0" identifier != (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);" do (compound_statement "{\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      }" { (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "FUN_00042f80();" (call_expression "FUN_00042f80()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "__s = *(void **)(param_1 + 0x5c);" (assignment_expression "__s = *(void **)(param_1 + 0x5c)" identifier = (pointer_expression "*(void **)(param_1 + 0x5c)" * (cast_expression "(void **)(param_1 + 0x5c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) }) while (parenthesized_expression "(iVar8 < iVar5 * 2)" ( (binary_expression "iVar8 < iVar5 * 2" identifier < (binary_expression "iVar5 * 2" identifier * number_literal)) )) ;) })) (expression_statement "memset(__s,0,iVar5 << 3);" (call_expression "memset(__s,0,iVar5 << 3)" identifier (argument_list "(__s,0,iVar5 << 3)" ( identifier , number_literal , (binary_expression "iVar5 << 3" identifier << number_literal) ))) ;) })) (expression_statement "local_3c = FUN_0008d3d0();" (assignment_expression "local_3c = FUN_0008d3d0()" identifier = (call_expression "FUN_0008d3d0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }" if (parenthesized_expression "(*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8))" ( (binary_expression "*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) )) (compound_statement "{\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }" { (labeled_statement "LAB_0008dda0:\n    local_3c = 0x65;" statement_identifier : (expression_statement "local_3c = 0x65;" (assignment_expression "local_3c = 0x65" identifier = number_literal) ;)) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "FUN_00050030();" (call_expression "FUN_00050030()" identifier (argument_list "()" ( ))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 8);" (assignment_expression "iVar5 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 4) = iVar5;" (assignment_expression "*(int *)(param_1 + 4) = iVar5" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 8) = iVar5 + 1;" (assignment_expression "*(int *)(param_1 + 8) = iVar5 + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *(byte *)(iVar8 + iVar5);" (assignment_expression "bVar2 = *(byte *)(iVar8 + iVar5)" identifier = (pointer_expression "*(byte *)(iVar8 + iVar5)" * (cast_expression "(byte *)(iVar8 + iVar5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar5)" ( (binary_expression "iVar8 + iVar5" identifier + identifier) ))))) ;) (while_statement "while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }" while (parenthesized_expression "((bVar2 & 0xfb) == 0x50)" ( (binary_expression "(bVar2 & 0xfb) == 0x50" (parenthesized_expression "(bVar2 & 0xfb)" ( (binary_expression "bVar2 & 0xfb" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }" { (if_statement "if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }" if (parenthesized_expression "(param_4 != (undefined4 *)0x0)" ( (binary_expression "param_4 != (undefined4 *)0x0" identifier != (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      *param_4 = 1;\n    }" { (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" * identifier) = number_literal) ;) })) (expression_statement "*(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);" (assignment_expression "*(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50)" (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) = (call_expression "(uint)(bVar2 == 0x50)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar2 == 0x50)" ( (binary_expression "bVar2 == 0x50" identifier == number_literal) )))) ;) (expression_statement "local_3c = FUN_0008d500();" (assignment_expression "local_3c = FUN_0008d500()" identifier = (call_expression "FUN_0008d500()" identifier (argument_list "()" ( )))) ;) (if_statement "if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (compound_statement "{\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }" { (labeled_statement "LAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;" statement_identifier : (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;)) (expression_statement "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);" (assignment_expression "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c)" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) = (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;" (assignment_expression "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" identifier = (binary_expression "*(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) + (binary_expression "*(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "*(int *)(param_1 + 0x58) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x58) = iVar5" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);" (assignment_expression "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c)" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = (binary_expression "iVar5 + *(int *)(param_1 + 0x4c)" identifier + (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))))) ;) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));" (assignment_expression "bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" identifier = (pointer_expression "*(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" * (cast_expression "(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" ( (binary_expression "*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ))))) ;) (expression_statement "uVar6 = (uint)bVar2;" (assignment_expression "uVar6 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }" if (parenthesized_expression "((char)bVar2 < '\0')" ( (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }" { (expression_statement "uVar4 = FUN_00046230();" (assignment_expression "uVar4 = FUN_00046230()" identifier = (call_expression "FUN_00046230()" identifier (argument_list "()" ( )))) ;) (expression_statement "uVar6 = *(uint *)(param_1 + 0x4c);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x4c)" identifier = (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = uVar4 & 0xff;" (assignment_expression "uVar4 = uVar4 & 0xff" identifier = (binary_expression "uVar4 & 0xff" identifier & number_literal)) ;) }) (else_clause "else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }" else (compound_statement "{\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }" { (expression_statement "*(uint *)(param_1 + 0x4c) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x4c) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x4c)" * (cast_expression "(uint *)(param_1 + 0x4c)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) = identifier) ;) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) }))) (if_statement "if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }" if (parenthesized_expression "((int)uVar6 < 1)" ( (binary_expression "(int)uVar6 < 1" (cast_expression "(int)uVar6" ( (type_descriptor "int" primitive_type) ) identifier) < number_literal) )) (compound_statement "{\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }" { (expression_statement "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" identifier (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" ( number_literal , (string_literal ""%s at line %d of [%.10s]"" " string_content ") , (string_literal ""database corruption"" " string_content ") , number_literal , (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" " string_content ") ))) ;) (expression_statement "local_3c = 0xb;" (assignment_expression "local_3c = 0xb" identifier = number_literal) ;) (goto_statement "goto LAB_0008dd5f;" goto statement_identifier ;) })) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + uVar4" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(undefined4 *)(param_1 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x30) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x30)" * (cast_expression "(undefined4 *)(param_1 + 0x30)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x30)" ( (binary_expression "param_1 + 0x30" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_24 = local_24 - uVar4;" (assignment_expression "local_24 = local_24 - uVar4" identifier = (binary_expression "local_24 - uVar4" identifier - identifier)) ;) (expression_statement "FUN_0008ccb0();" (call_expression "FUN_0008ccb0()" identifier (argument_list "()" ( ))) ;) (expression_statement "__n = *(int *)(param_1 + 0x4c) * 8;" (assignment_expression "__n = *(int *)(param_1 + 0x4c) * 8" identifier = (binary_expression "*(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal)) ;) (expression_statement "memset(*(void **)(param_1 + 0x2c),0,__n);" (call_expression "memset(*(void **)(param_1 + 0x2c),0,__n)" identifier (argument_list "(*(void **)(param_1 + 0x2c),0,__n)" ( (pointer_expression "*(void **)(param_1 + 0x2c)" * (cast_expression "(void **)(param_1 + 0x2c)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) , number_literal , identifier ))) ;) (expression_statement "memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);" (call_expression "memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24)" identifier (argument_list "((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24)" ( (cast_expression "(void *)(__n + *(int *)(param_1 + 0x2c))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(__n + *(int *)(param_1 + 0x2c))" ( (binary_expression "__n + *(int *)(param_1 + 0x2c)" identifier + (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ))) , (cast_expression "(void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" ( (binary_expression "*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ))) , identifier ))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + local_24" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + identifier)) ;) (expression_statement "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);" (assignment_expression "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c)" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) = (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;" (assignment_expression "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" identifier = (binary_expression "*(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x2c)" * (cast_expression "(int *)(param_1 + 0x2c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x2c)" ( (binary_expression "param_1 + 0x2c" identifier + number_literal) )))) + (binary_expression "*(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) * number_literal))) ;) (expression_statement "*(int *)(param_1 + 0x58) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x58) = iVar5" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);" (assignment_expression "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c)" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) = (binary_expression "iVar5 + *(int *)(param_1 + 0x4c)" identifier + (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))))) ;) (expression_statement "*(undefined4 *)(param_1 + 0x40) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x40) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c = FUN_0008d3d0();" (assignment_expression "local_3c = FUN_0008d3d0()" identifier = (call_expression "FUN_0008d3d0()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (expression_statement "iVar5 = *(int *)(param_1 + 8);" (assignment_expression "iVar5 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 4) = iVar5;" (assignment_expression "*(int *)(param_1 + 4) = iVar5" (pointer_expression "*(int *)(param_1 + 4)" * (cast_expression "(int *)(param_1 + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 4)" ( (binary_expression "param_1 + 4" identifier + number_literal) )))) = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;" if (parenthesized_expression "(*(int *)(param_1 + 0x10) <= iVar5)" ( (binary_expression "*(int *)(param_1 + 0x10) <= iVar5" (pointer_expression "*(int *)(param_1 + 0x10)" * (cast_expression "(int *)(param_1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x10)" ( (binary_expression "param_1 + 0x10" identifier + number_literal) )))) <= identifier) )) (goto_statement "goto LAB_0008dda0;" goto statement_identifier ;)) (expression_statement "iVar8 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xc)" identifier = (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 8) = iVar5 + 1;" (assignment_expression "*(int *)(param_1 + 8) = iVar5 + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (expression_statement "bVar2 = *(byte *)(iVar8 + iVar5);" (assignment_expression "bVar2 = *(byte *)(iVar8 + iVar5)" identifier = (pointer_expression "*(byte *)(iVar8 + iVar5)" * (cast_expression "(byte *)(iVar8 + iVar5)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar5)" ( (binary_expression "iVar8 + iVar5" identifier + identifier) ))))) ;) })) (expression_statement "uVar6 = (uint)bVar2;" (assignment_expression "uVar6 = (uint)bVar2" identifier = (cast_expression "(uint)bVar2" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) (if_statement "if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }" if (parenthesized_expression "((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0))))" ( (binary_expression "(*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))" (parenthesized_expression "(*(int *)(param_1 + 0x48) == 0)" ( (binary_expression "*(int *)(param_1 + 0x48) == 0" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) == number_literal) )) || (parenthesized_expression "((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))" ( (parenthesized_expression "(iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0))" ( (comma_expression "iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)" (assignment_expression "iVar5 = *(int *)(param_1 + 0x38)" identifier = (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) ))))) , (binary_expression "iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)" (binary_expression "iVar5 != 0" identifier != number_literal) && (parenthesized_expression "(*(int *)(param_1 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) != 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) != number_literal) )))) )) ))) )) (compound_statement "{\n    uVar9 = 0x301e0;\n  }" { (expression_statement "uVar9 = 0x301e0;" (assignment_expression "uVar9 = 0x301e0" identifier = number_literal) ;) }) (else_clause "else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }" else (compound_statement "{\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }" { (expression_statement "*(uint *)(param_1 + 0x50) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x50) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x50)" * (cast_expression "(uint *)(param_1 + 0x50)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar3 = *(int *)(param_1 + 8);" (assignment_expression "iVar3 = *(int *)(param_1 + 8)" identifier = (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(int *)(param_1 + 8) = iVar3 + 1;" (assignment_expression "*(int *)(param_1 + 8) = iVar3 + 1" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "iVar3 + 1" identifier + number_literal)) ;) (expression_statement "*(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);" (assignment_expression "*(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3)" (pointer_expression "*(uint *)(param_1 + 0x54)" * (cast_expression "(uint *)(param_1 + 0x54)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x54)" ( (binary_expression "param_1 + 0x54" identifier + number_literal) )))) = (binary_expression "(uint)*(byte *)(iVar8 + iVar3)" (parenthesized_expression "(uint)" ( identifier )) * (cast_expression "(byte *)(iVar8 + iVar3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + iVar3)" ( (binary_expression "iVar8 + iVar3" identifier + identifier) ))))) ;) (if_statement "if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }" if (parenthesized_expression "((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0))" ( (binary_expression "(bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)" (parenthesized_expression "(bVar2 < 0x18)" ( (binary_expression "bVar2 < 0x18" identifier < number_literal) )) && (parenthesized_expression "((0x840200U >> (uVar6 & 0x1f) & 1) != 0)" ( (binary_expression "(0x840200U >> (uVar6 & 0x1f) & 1) != 0" (parenthesized_expression "(0x840200U >> (uVar6 & 0x1f) & 1)" ( (binary_expression "0x840200U >> (uVar6 & 0x1f) & 1" (binary_expression "0x840200U >> (uVar6 & 0x1f)" number_literal >> (parenthesized_expression "(uVar6 & 0x1f)" ( (binary_expression "uVar6 & 0x1f" identifier & number_literal) ))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }" { (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }" if (parenthesized_expression "(param_2 != (int *)0x0)" ( (binary_expression "param_2 != (int *)0x0" identifier != (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }" { (if_statement "if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }" if (parenthesized_expression "(((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8))" ( (binary_expression "((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)" (parenthesized_expression "((iVar5 != 0) && (bVar2 == 9))" ( (binary_expression "(iVar5 != 0) && (bVar2 == 9)" (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) && (parenthesized_expression "(bVar2 == 9)" ( (binary_expression "bVar2 == 9" identifier == number_literal) ))) )) && (parenthesized_expression "(0 < iVar8)" ( (binary_expression "0 < iVar8" number_literal < identifier) ))) )) (compound_statement "{\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x58);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x58)" identifier = (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar8 + iVar5;" (assignment_expression "iVar8 = iVar8 + iVar5" identifier = (binary_expression "iVar8 + iVar5" identifier + identifier)) ;) (do_statement "do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);" do (compound_statement "{\n            iVar5 = iVar5 + 1;\n          }" { (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 != iVar5)" ( (binary_expression "iVar8 != iVar5" identifier != identifier) )) ;) })) (expression_statement "local_3c = FUN_0008d660();" (assignment_expression "local_3c = FUN_0008d660()" identifier = (call_expression "FUN_0008d660()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }" if (parenthesized_expression "(local_3c == 0)" ( (binary_expression "local_3c == 0" identifier == number_literal) )) (compound_statement "{\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }" { (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" identifier = number_literal) ;) (expression_statement "*param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);" (assignment_expression "*param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*param_2" * identifier) = (binary_expression "*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (pointer_expression "*(int *)(param_1 + 0xc)" * (cast_expression "(int *)(param_1 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xc)" ( (binary_expression "param_1 + 0xc" identifier + number_literal) )))))) ;) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) = (binary_expression "*(int *)(param_1 + 8) + *param_3" (pointer_expression "*(int *)(param_1 + 8)" * (cast_expression "(int *)(param_1 + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 8)" ( (binary_expression "param_1 + 8" identifier + number_literal) )))) + (pointer_expression "*param_3" * identifier))) ;) })) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "iVar3 = *(int *)(param_1 + 0x5c);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x5c)" identifier = (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) ))))) ;) (expression_statement "iVar8 = iVar3 + iVar8 * 4;" (assignment_expression "iVar8 = iVar3 + iVar8 * 4" identifier = (binary_expression "iVar3 + iVar8 * 4" identifier + (binary_expression "iVar8 * 4" identifier * number_literal))) ;) (expression_statement "iVar7 = iVar3;" (assignment_expression "iVar7 = iVar3" identifier = identifier) ;) (if_statement "if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) != 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }" { (expression_statement "iVar7 = iVar8;" (assignment_expression "iVar7 = iVar8" identifier = identifier) ;) (expression_statement "iVar8 = iVar3;" (assignment_expression "iVar8 = iVar3" identifier = identifier) ;) })) (if_statement "if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }" if (parenthesized_expression "((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9))))" ( (binary_expression "(uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))" (parenthesized_expression "(uVar6 == 0x12)" ( (binary_expression "uVar6 == 0x12" identifier == number_literal) )) || (parenthesized_expression "((iVar5 != 0 && (uVar6 != 9)))" ( (parenthesized_expression "(iVar5 != 0 && (uVar6 != 9))" ( (binary_expression "iVar5 != 0 && (uVar6 != 9)" (binary_expression "iVar5 != 0" identifier != number_literal) && (parenthesized_expression "(uVar6 != 9)" ( (binary_expression "uVar6 != 9" identifier != number_literal) ))) )) ))) )) (compound_statement "{\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }" { (labeled_statement "LAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);" statement_identifier : (expression_statement "local_3c = FUN_0008d780(iVar8);" (assignment_expression "local_3c = FUN_0008d780(iVar8)" identifier = (call_expression "FUN_0008d780(iVar8)" identifier (argument_list "(iVar8)" ( identifier )))) ;)) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;" if (parenthesized_expression "(*(int *)(param_1 + 0x38) == 0)" ( (binary_expression "*(int *)(param_1 + 0x38) == 0" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }" { (labeled_statement "LAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) == 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) == 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0008df9a;" goto statement_identifier ;))) (expression_statement "iVar5 = *(int *)(param_1 + 0x50);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x50)" identifier = (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (if_statement "if (iVar5 != 0x17) goto LAB_0008dfe8;" if (parenthesized_expression "(iVar5 != 0x17)" ( (binary_expression "iVar5 != 0x17" identifier != number_literal) )) (goto_statement "goto LAB_0008dfe8;" goto statement_identifier ;)) }) (else_clause "else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;" else (if_statement "if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;" if (parenthesized_expression "(*(int *)(param_1 + 0x50) != 0x17)" ( (binary_expression "*(int *)(param_1 + 0x50) != 0x17" (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0008dfde;" goto statement_identifier ;)))) (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) (if_statement "if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }" if (parenthesized_expression "(0 < iVar5)" ( (binary_expression "0 < iVar5" number_literal < identifier) )) (compound_statement "{\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);" do (compound_statement "{\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          }" { (if_statement "if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }" if (parenthesized_expression "(*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0')" ( (binary_expression "*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 0x58) + iVar8)" * (cast_expression "(char *)(*(int *)(param_1 + 0x58) + iVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x58) + iVar8)" ( (binary_expression "*(int *)(param_1 + 0x58) + iVar8" (pointer_expression "*(int *)(param_1 + 0x58)" * (cast_expression "(int *)(param_1 + 0x58)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }" { (expression_statement "*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);" (assignment_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + iVar8 * 4)" ( (binary_expression "*(int *)(param_1 + 0x5c) + iVar8 * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) = (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" ( (binary_expression "*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + (binary_expression "(iVar5 + iVar8) * 4" (parenthesized_expression "(iVar5 + iVar8)" ( (binary_expression "iVar5 + iVar8" identifier + identifier) )) * number_literal)) ))))) ;) (if_statement "if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }" if (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0)" ( (binary_expression "*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" * (cast_expression "(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + iVar8 * 4)" ( (binary_expression "*(int *)(param_1 + 0x5c) + iVar8 * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + (binary_expression "iVar8 * 4" identifier * number_literal)) )))) == number_literal) )) (compound_statement "{\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }" { (expression_statement "uVar9 = 0x30212;" (assignment_expression "uVar9 = 0x30212" identifier = number_literal) ;) (goto_statement "goto LAB_0008dead;" goto statement_identifier ;) })) (expression_statement "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;" (assignment_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0" (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4)" * (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4)" ( (binary_expression "*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" * (cast_expression "(int *)(param_1 + 0x5c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x5c)" ( (binary_expression "param_1 + 0x5c" identifier + number_literal) )))) + (binary_expression "(*(int *)(param_1 + 0x4c) + iVar8) * 4" (parenthesized_expression "(*(int *)(param_1 + 0x4c) + iVar8)" ( (binary_expression "*(int *)(param_1 + 0x4c) + iVar8" (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) )))) + identifier) )) * number_literal)) )))) = number_literal) ;) (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" identifier = (pointer_expression "*(int *)(param_1 + 0x4c)" * (cast_expression "(int *)(param_1 + 0x4c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x4c)" ( (binary_expression "param_1 + 0x4c" identifier + number_literal) ))))) ;) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar8 < iVar5)" ( (binary_expression "iVar8 < iVar5" identifier < identifier) )) ;) })) }) (else_clause "else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }" else (compound_statement "{\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }" { (expression_statement "local_3c = FUN_0008d780(iVar7);" (assignment_expression "local_3c = FUN_0008d780(iVar7)" identifier = (call_expression "FUN_0008d780(iVar7)" identifier (argument_list "(iVar7)" ( identifier )))) ;) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = identifier) ;) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" if (parenthesized_expression "(local_3c != 0)" ( (binary_expression "local_3c != 0" identifier != number_literal) )) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;" if (parenthesized_expression "(*(int *)(param_1 + 0x50) != 9)" ( (binary_expression "*(int *)(param_1 + 0x50) != 9" (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_0008df25;" goto statement_identifier ;)) (if_statement "if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;" if (parenthesized_expression "(*(int *)(param_1 + 0x38) == 0)" ( (binary_expression "*(int *)(param_1 + 0x38) == 0" (pointer_expression "*(int *)(param_1 + 0x38)" * (cast_expression "(int *)(param_1 + 0x38)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) == number_literal) )) (goto_statement "goto LAB_0008dffb;" goto statement_identifier ;)) (labeled_statement "LAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }" statement_identifier : (if_statement "if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x3c) != 0)" ( (binary_expression "*(int *)(param_1 + 0x3c) != 0" (pointer_expression "*(int *)(param_1 + 0x3c)" * (cast_expression "(int *)(param_1 + 0x3c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x3c)" ( (binary_expression "param_1 + 0x3c" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }" { (expression_statement "iVar5 = *(int *)(param_1 + 0x50);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x50)" identifier = (pointer_expression "*(int *)(param_1 + 0x50)" * (cast_expression "(int *)(param_1 + 0x50)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) ))))) ;) (labeled_statement "LAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" statement_identifier : (if_statement "if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" if (parenthesized_expression "(iVar5 == 0x12)" ( (binary_expression "iVar5 == 0x12" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x50) = 9;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 9" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" identifier = number_literal) ;) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) }))) (if_statement "if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }" if (parenthesized_expression "(iVar5 == 9)" ( (binary_expression "iVar5 == 9" identifier == number_literal) )) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }" { (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0x12;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0x12" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" * (cast_expression "(undefined4 *)(param_1 + 0x50)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x50)" ( (binary_expression "param_1 + 0x50" identifier + number_literal) )))) = number_literal) ;) })) }))) }))) (labeled_statement "LAB_0008df9a:\n      local_3c = 100;" statement_identifier : (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" identifier = number_literal) ;)) (goto_statement "goto LAB_0008dd7a;" goto statement_identifier ;) })) (expression_statement "uVar9 = 0x301e6;" (assignment_expression "uVar9 = 0x301e6" identifier = number_literal) ;) }))) (labeled_statement "LAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" statement_identifier : (expression_statement "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" identifier (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" ( number_literal , (string_literal ""%s at line %d of [%.10s]"" " string_content ") , (string_literal ""database corruption"" " string_content ") , identifier , (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" " string_content ") ))) ;)) (expression_statement "*(undefined4 *)(param_1 + 0x40) = 0xb;" (assignment_expression "*(undefined4 *)(param_1 + 0x40) = 0xb" (pointer_expression "*(undefined4 *)(param_1 + 0x40)" * (cast_expression "(undefined4 *)(param_1 + 0x40)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) = number_literal) ;) (expression_statement "local_3c = 0xb;" (assignment_expression "local_3c = 0xb" identifier = number_literal) ;) (labeled_statement "LAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }" statement_identifier : (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }" if (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" ( (binary_expression "iVar1 == *(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_3c;\n  }" { (return_statement "return local_3c;" return identifier ;) }))) (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit (function_definition TYPE (ERROR IDENT) (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression 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 != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (binary_expression IDENT * LIT)) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT , (binary_expression IDENT << LIT) ))) ;) })) (expression_statement (assignment_expression IDENT = (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) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto 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) )))) <= (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == 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 (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == LIT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (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 = (binary_expression IDENT & LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , LIT , (string_literal " string_content ") ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + 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 IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) * LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_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) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + 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 = (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) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) <= IDENT) )) (goto_statement goto statement_identifier ;)) (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 (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 * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (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 IDENT + LIT) )))) == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = 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 (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (parenthesized_expression ( IDENT )) * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (binary_expression LIT >> (parenthesized_expression ( (binary_expression IDENT & LIT) ))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression 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 != (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 IDENT != LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (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 = (binary_expression IDENT + IDENT)) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (expression_statement (assignment_expression IDENT = (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) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (pointer_expression * IDENT))) ;) })) (goto_statement goto statement_identifier ;) })) (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 = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) || (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression IDENT != LIT) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) ))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto 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) )))) == LIT) )) (compound_statement { (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) )))) == LIT) )) (goto_statement goto statement_identifier ;))) (expression_statement (assignment_expression 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) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )))) != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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)) )))) = (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 (parenthesized_expression ( (binary_expression IDENT + IDENT) )) * LIT)) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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)) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (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 (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + IDENT) )) * LIT)) )))) = LIT) ;) (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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;) })) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto 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) )))) != LIT) )) (goto_statement goto 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) )))) == LIT) )) (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) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (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) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) }))) (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) )))) = LIT) ;) })) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , (string_literal " string_content ") , IDENT , (string_literal " string_content ") ))) ;)) (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 = 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 "int __regparm3 FUN_0008db60(int param_1,int *param_2,int *param_3,undefined4 *param_4)\n\n{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  void *__s;\n  int iVar8;\n  int in_GS_OFFSET;\n  undefined4 uVar9;\n  int local_3c;\n  size_t local_24;\n  \n  __s = *(void **)(param_1 + 0x5c);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }\n  local_3c = FUN_0008d3d0();\n  *(int *)(param_1 + 0x40) = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  FUN_00050030();\n  iVar5 = *(int *)(param_1 + 8);\n  iVar8 = *(int *)(param_1 + 0xc);\n  *(int *)(param_1 + 4) = iVar5;\n  *(int *)(param_1 + 8) = iVar5 + 1;\n  bVar2 = *(byte *)(iVar8 + iVar5);\n  while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }\n  uVar6 = (uint)bVar2;\n  if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }\nLAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  *(undefined4 *)(param_1 + 0x40) = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }\n                    \n  FUN_00116110();\n}" (primitive_type "int") (ERROR "__regparm3" (identifier "__regparm3")) (function_declarator "FUN_0008db60(int param_1,int *param_2,int *param_3,undefined4 *param_4)" (identifier "FUN_0008db60") (parameter_list "(int param_1,int *param_2,int *param_3,undefined4 *param_4)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "int *param_3" (primitive_type "int") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "undefined4 *param_4" (type_identifier "undefined4") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  size_t __n;\n  int iVar1;\n  byte bVar2;\n  int iVar3;\n  uint uVar4;\n  int iVar5;\n  uint uVar6;\n  int iVar7;\n  void *__s;\n  int iVar8;\n  int in_GS_OFFSET;\n  undefined4 uVar9;\n  int local_3c;\n  size_t local_24;\n  \n  __s = *(void **)(param_1 + 0x5c);\n  iVar1 = *(int *)(in_GS_OFFSET + 0x14);\n  if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }\n  local_3c = FUN_0008d3d0();\n  *(int *)(param_1 + 0x40) = local_3c;\n  if (local_3c != 0) goto LAB_0008dd7a;\n  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }\n  FUN_00050030();\n  iVar5 = *(int *)(param_1 + 8);\n  iVar8 = *(int *)(param_1 + 0xc);\n  *(int *)(param_1 + 4) = iVar5;\n  *(int *)(param_1 + 8) = iVar5 + 1;\n  bVar2 = *(byte *)(iVar8 + iVar5);\n  while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }\n  uVar6 = (uint)bVar2;\n  if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }\nLAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n  *(undefined4 *)(param_1 + 0x40) = 0xb;\n  local_3c = 0xb;\nLAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }\n                    \n  FUN_00116110();\n}" ({ "{") (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "byte bVar2;" (type_identifier "byte") (identifier "bVar2") (; ";")) (declaration "int iVar3;" (primitive_type "int") (identifier "iVar3") (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "void *__s;" (primitive_type "void") (pointer_declarator "*__s" (* "*") (identifier "__s")) (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int in_GS_OFFSET;" (primitive_type "int") (identifier "in_GS_OFFSET") (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "size_t local_24;" (primitive_type "size_t") (identifier "local_24") (; ";")) (expression_statement "__s = *(void **)(param_1 + 0x5c);" (assignment_expression "__s = *(void **)(param_1 + 0x5c)" (identifier "__s") (= "=") (pointer_expression "*(void **)(param_1 + 0x5c)" (* "*") (cast_expression "(void **)(param_1 + 0x5c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "iVar1 = *(int *)(in_GS_OFFSET + 0x14);" (assignment_expression "iVar1 = *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (= "=") (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")) () ")"))))) (; ";")) (if_statement "if (__s != (void *)0x0) {\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }" (if "if") (parenthesized_expression "(__s != (void *)0x0)" (( "(") (binary_expression "__s != (void *)0x0" (identifier "__s") (!= "!=") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    iVar5 = *(int *)(param_1 + 0x4c);\n    if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }\n    memset(__s,0,iVar5 << 3);\n  }" ({ "{") (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (if_statement "if (0 < iVar5) {\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }" (if "if") (parenthesized_expression "(0 < iVar5)" (( "(") (binary_expression "0 < iVar5" (number_literal "0") (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n      iVar8 = 0;\n      do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);\n    }" ({ "{") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      } while (iVar8 < iVar5 * 2);" (do "do") (compound_statement "{\n        iVar8 = iVar8 + 1;\n        FUN_00042f80();\n        iVar5 = *(int *)(param_1 + 0x4c);\n        __s = *(void **)(param_1 + 0x5c);\n      }" ({ "{") (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_00042f80();" (call_expression "FUN_00042f80()" (identifier "FUN_00042f80") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "__s = *(void **)(param_1 + 0x5c);" (assignment_expression "__s = *(void **)(param_1 + 0x5c)" (identifier "__s") (= "=") (pointer_expression "*(void **)(param_1 + 0x5c)" (* "*") (cast_expression "(void **)(param_1 + 0x5c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 < iVar5 * 2)" (( "(") (binary_expression "iVar8 < iVar5 * 2" (identifier "iVar8") (< "<") (binary_expression "iVar5 * 2" (identifier "iVar5") (* "*") (number_literal "2"))) () ")")) (; ";")) (} "}"))) (expression_statement "memset(__s,0,iVar5 << 3);" (call_expression "memset(__s,0,iVar5 << 3)" (identifier "memset") (argument_list "(__s,0,iVar5 << 3)" (( "(") (identifier "__s") (, ",") (number_literal "0") (, ",") (binary_expression "iVar5 << 3" (identifier "iVar5") (<< "<<") (number_literal "3")) () ")"))) (; ";")) (} "}"))) (expression_statement "local_3c = FUN_0008d3d0();" (assignment_expression "local_3c = FUN_0008d3d0()" (identifier "local_3c") (= "=") (call_expression "FUN_0008d3d0()" (identifier "FUN_0008d3d0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "local_3c")) (; ";")) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" (if "if") (parenthesized_expression "(local_3c != 0)" (( "(") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008dd7a;" (goto "goto") (statement_identifier "LAB_0008dd7a") (; ";"))) (if_statement "if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8))" (( "(") (binary_expression "*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) () ")")) (compound_statement "{\nLAB_0008dda0:\n    local_3c = 0x65;\n    goto LAB_0008dd7a;\n  }" ({ "{") (labeled_statement "LAB_0008dda0:\n    local_3c = 0x65;" (statement_identifier "LAB_0008dda0") (: ":") (expression_statement "local_3c = 0x65;" (assignment_expression "local_3c = 0x65" (identifier "local_3c") (= "=") (number_literal "0x65")) (; ";"))) (goto_statement "goto LAB_0008dd7a;" (goto "goto") (statement_identifier "LAB_0008dd7a") (; ";")) (} "}"))) (expression_statement "FUN_00050030();" (call_expression "FUN_00050030()" (identifier "FUN_00050030") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 8);" (assignment_expression "iVar5 = *(int *)(param_1 + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "iVar8 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xc)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = iVar5;" (assignment_expression "*(int *)(param_1 + 4) = iVar5" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(int *)(param_1 + 8) = iVar5 + 1;" (assignment_expression "*(int *)(param_1 + 8) = iVar5 + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar2 = *(byte *)(iVar8 + iVar5);" (assignment_expression "bVar2 = *(byte *)(iVar8 + iVar5)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(iVar8 + iVar5)" (* "*") (cast_expression "(byte *)(iVar8 + iVar5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + iVar5)" (( "(") (binary_expression "iVar8 + iVar5" (identifier "iVar8") (+ "+") (identifier "iVar5")) () ")"))))) (; ";")) (while_statement "while ((bVar2 & 0xfb) == 0x50) {\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }" (while "while") (parenthesized_expression "((bVar2 & 0xfb) == 0x50)" (( "(") (binary_expression "(bVar2 & 0xfb) == 0x50" (parenthesized_expression "(bVar2 & 0xfb)" (( "(") (binary_expression "bVar2 & 0xfb" (identifier "bVar2") (& "&") (number_literal "0xfb")) () ")")) (== "==") (number_literal "0x50")) () ")")) (compound_statement "{\n    if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }\n    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);\n    local_3c = FUN_0008d500();\n    if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }\n    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));\n    uVar6 = (uint)bVar2;\n    if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }\n    if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;\n    *(undefined4 *)(param_1 + 0x30) = 0;\n    local_24 = local_24 - uVar4;\n    FUN_0008ccb0();\n    __n = *(int *)(param_1 + 0x4c) * 8;\n    memset(*(void **)(param_1 + 0x2c),0,__n);\n    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);\n    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;\n    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n    *(int *)(param_1 + 0x58) = iVar5;\n    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n    *(undefined4 *)(param_1 + 0x40) = 0;\n    local_3c = FUN_0008d3d0();\n    *(int *)(param_1 + 0x40) = local_3c;\n    if (local_3c != 0) goto LAB_0008dd7a;\n    iVar5 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 4) = iVar5;\n    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;\n    iVar8 = *(int *)(param_1 + 0xc);\n    *(int *)(param_1 + 8) = iVar5 + 1;\n    bVar2 = *(byte *)(iVar8 + iVar5);\n  }" ({ "{") (if_statement "if (param_4 != (undefined4 *)0x0) {\n      *param_4 = 1;\n    }" (if "if") (parenthesized_expression "(param_4 != (undefined4 *)0x0)" (( "(") (binary_expression "param_4 != (undefined4 *)0x0" (identifier "param_4") (!= "!=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      *param_4 = 1;\n    }" ({ "{") (expression_statement "*param_4 = 1;" (assignment_expression "*param_4 = 1" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "*(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);" (assignment_expression "*(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50)" (pointer_expression "*(uint *)(param_1 + 0x38)" (* "*") (cast_expression "(uint *)(param_1 + 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (= "=") (call_expression "(uint)(bVar2 == 0x50)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(bVar2 == 0x50)" (( "(") (binary_expression "bVar2 == 0x50" (identifier "bVar2") (== "==") (number_literal "0x50")) () ")")))) (; ";")) (expression_statement "local_3c = FUN_0008d500();" (assignment_expression "local_3c = FUN_0008d500()" (identifier "local_3c") (= "=") (call_expression "FUN_0008d500()" (identifier "FUN_0008d500") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (local_3c != 0) {\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }" (if "if") (parenthesized_expression "(local_3c != 0)" (( "(") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;\n      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);\n      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;\n      *(int *)(param_1 + 0x58) = iVar5;\n      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);\n      goto LAB_0008dd7a;\n    }" ({ "{") (labeled_statement "LAB_0008dd5f:\n      *(int *)(param_1 + 0x40) = local_3c;" (statement_identifier "LAB_0008dd5f") (: ":") (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "local_3c")) (; ";"))) (expression_statement "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);" (assignment_expression "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c)" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;" (assignment_expression "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" (identifier "iVar5") (= "=") (binary_expression "*(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (binary_expression "*(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x58) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x58) = iVar5" (pointer_expression "*(int *)(param_1 + 0x58)" (* "*") (cast_expression "(int *)(param_1 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);" (assignment_expression "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c)" (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (binary_expression "iVar5 + *(int *)(param_1 + 0x4c)" (identifier "iVar5") (+ "+") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))))) (; ";")) (goto_statement "goto LAB_0008dd7a;" (goto "goto") (statement_identifier "LAB_0008dd7a") (; ";")) (} "}"))) (expression_statement "bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));" (assignment_expression "bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" (* "*") (cast_expression "(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" (( "(") (binary_expression "*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) () ")"))))) (; ";")) (expression_statement "uVar6 = (uint)bVar2;" (assignment_expression "uVar6 = (uint)bVar2" (identifier "uVar6") (= "=") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (; ";")) (if_statement "if ((char)bVar2 < '\0') {\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }\n    else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }" (if "if") (parenthesized_expression "((char)bVar2 < '\0')" (( "(") (binary_expression "(char)bVar2 < '\0'" (cast_expression "(char)bVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "bVar2")) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      uVar4 = FUN_00046230();\n      uVar6 = *(uint *)(param_1 + 0x4c);\n      uVar4 = uVar4 & 0xff;\n    }" ({ "{") (expression_statement "uVar4 = FUN_00046230();" (assignment_expression "uVar4 = FUN_00046230()" (identifier "uVar4") (= "=") (call_expression "FUN_00046230()" (identifier "FUN_00046230") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "uVar6 = *(uint *)(param_1 + 0x4c);" (assignment_expression "uVar6 = *(uint *)(param_1 + 0x4c)" (identifier "uVar6") (= "=") (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (expression_statement "uVar4 = uVar4 & 0xff;" (assignment_expression "uVar4 = uVar4 & 0xff" (identifier "uVar4") (= "=") (binary_expression "uVar4 & 0xff" (identifier "uVar4") (& "&") (number_literal "0xff"))) (; ";")) (} "}")) (else_clause "else {\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }" (else "else") (compound_statement "{\n      *(uint *)(param_1 + 0x4c) = uVar6;\n      uVar4 = 1;\n    }" ({ "{") (expression_statement "*(uint *)(param_1 + 0x4c) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x4c) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x4c)" (* "*") (cast_expression "(uint *)(param_1 + 0x4c)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (} "}")))) (if_statement "if ((int)uVar6 < 1) {\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }" (if "if") (parenthesized_expression "((int)uVar6 < 1)" (( "(") (binary_expression "(int)uVar6 < 1" (cast_expression "(int)uVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "uVar6")) (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");\n      local_3c = 0xb;\n      goto LAB_0008dd5f;\n    }" ({ "{") (expression_statement "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" (identifier "FUN_0006e260") (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,\n                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" (( "(") (number_literal "0xb") (, ",") (string_literal ""%s at line %d of [%.10s]"" (" """) (string_content "%s at line %d of [%.10s]") (" """)) (, ",") (string_literal ""database corruption"" (" """) (string_content "database corruption") (" """)) (, ",") (number_literal "0x3018b") (, ",") (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" (" """) (string_content "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1") (" """)) () ")"))) (; ";")) (expression_statement "local_3c = 0xb;" (assignment_expression "local_3c = 0xb" (identifier "local_3c") (= "=") (number_literal "0xb")) (; ";")) (goto_statement "goto LAB_0008dd5f;" (goto "goto") (statement_identifier "LAB_0008dd5f") (; ";")) (} "}"))) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + uVar4" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (identifier "uVar4"))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x30) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x30) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x30)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x30)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x30)" (( "(") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_24 = local_24 - uVar4;" (assignment_expression "local_24 = local_24 - uVar4" (identifier "local_24") (= "=") (binary_expression "local_24 - uVar4" (identifier "local_24") (- "-") (identifier "uVar4"))) (; ";")) (expression_statement "FUN_0008ccb0();" (call_expression "FUN_0008ccb0()" (identifier "FUN_0008ccb0") (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "__n = *(int *)(param_1 + 0x4c) * 8;" (assignment_expression "__n = *(int *)(param_1 + 0x4c) * 8" (identifier "__n") (= "=") (binary_expression "*(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (* "*") (number_literal "8"))) (; ";")) (expression_statement "memset(*(void **)(param_1 + 0x2c),0,__n);" (call_expression "memset(*(void **)(param_1 + 0x2c),0,__n)" (identifier "memset") (argument_list "(*(void **)(param_1 + 0x2c),0,__n)" (( "(") (pointer_expression "*(void **)(param_1 + 0x2c)" (* "*") (cast_expression "(void **)(param_1 + 0x2c)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (, ",") (number_literal "0") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);" (call_expression "memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24)" (identifier "memcpy") (argument_list "((void *)(__n + *(int *)(param_1 + 0x2c)),\n           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24)" (( "(") (cast_expression "(void *)(__n + *(int *)(param_1 + 0x2c))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(__n + *(int *)(param_1 + 0x2c))" (( "(") (binary_expression "__n + *(int *)(param_1 + 0x2c)" (identifier "__n") (+ "+") (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) () ")"))) (, ",") (cast_expression "(void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc))" (( "(") (binary_expression "*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) () ")"))) (, ",") (identifier "local_24") () ")"))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + local_24" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (identifier "local_24"))) (; ";")) (expression_statement "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);" (assignment_expression "*(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c)" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (= "=") (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")"))))) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;" (assignment_expression "iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" (identifier "iVar5") (= "=") (binary_expression "*(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x2c)" (* "*") (cast_expression "(int *)(param_1 + 0x2c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x2c)" (( "(") (binary_expression "param_1 + 0x2c" (identifier "param_1") (+ "+") (number_literal "0x2c")) () ")")))) (+ "+") (binary_expression "*(int *)(param_1 + 0x4c) * 8" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (* "*") (number_literal "8")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x58) = iVar5;" (assignment_expression "*(int *)(param_1 + 0x58) = iVar5" (pointer_expression "*(int *)(param_1 + 0x58)" (* "*") (cast_expression "(int *)(param_1 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (expression_statement "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);" (assignment_expression "*(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c)" (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (= "=") (binary_expression "iVar5 + *(int *)(param_1 + 0x4c)" (identifier "iVar5") (+ "+") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))))) (; ";")) (expression_statement "*(undefined4 *)(param_1 + 0x40) = 0;" (assignment_expression "*(undefined4 *)(param_1 + 0x40) = 0" (pointer_expression "*(undefined4 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_3c = FUN_0008d3d0();" (assignment_expression "local_3c = FUN_0008d3d0()" (identifier "local_3c") (= "=") (call_expression "FUN_0008d3d0()" (identifier "FUN_0008d3d0") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "local_3c")) (; ";")) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" (if "if") (parenthesized_expression "(local_3c != 0)" (( "(") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008dd7a;" (goto "goto") (statement_identifier "LAB_0008dd7a") (; ";"))) (expression_statement "iVar5 = *(int *)(param_1 + 8);" (assignment_expression "iVar5 = *(int *)(param_1 + 8)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 4) = iVar5;" (assignment_expression "*(int *)(param_1 + 4) = iVar5" (pointer_expression "*(int *)(param_1 + 4)" (* "*") (cast_expression "(int *)(param_1 + 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 4)" (( "(") (binary_expression "param_1 + 4" (identifier "param_1") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "iVar5")) (; ";")) (if_statement "if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x10) <= iVar5)" (( "(") (binary_expression "*(int *)(param_1 + 0x10) <= iVar5" (pointer_expression "*(int *)(param_1 + 0x10)" (* "*") (cast_expression "(int *)(param_1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x10)" (( "(") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10")) () ")")))) (<= "<=") (identifier "iVar5")) () ")")) (goto_statement "goto LAB_0008dda0;" (goto "goto") (statement_identifier "LAB_0008dda0") (; ";"))) (expression_statement "iVar8 = *(int *)(param_1 + 0xc);" (assignment_expression "iVar8 = *(int *)(param_1 + 0xc)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = iVar5 + 1;" (assignment_expression "*(int *)(param_1 + 8) = iVar5 + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar2 = *(byte *)(iVar8 + iVar5);" (assignment_expression "bVar2 = *(byte *)(iVar8 + iVar5)" (identifier "bVar2") (= "=") (pointer_expression "*(byte *)(iVar8 + iVar5)" (* "*") (cast_expression "(byte *)(iVar8 + iVar5)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + iVar5)" (( "(") (binary_expression "iVar8 + iVar5" (identifier "iVar8") (+ "+") (identifier "iVar5")) () ")"))))) (; ";")) (} "}"))) (expression_statement "uVar6 = (uint)bVar2;" (assignment_expression "uVar6 = (uint)bVar2" (identifier "uVar6") (= "=") (cast_expression "(uint)bVar2" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar2"))) (; ";")) (if_statement "if ((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {\n    uVar9 = 0x301e0;\n  }\n  else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0))))" (( "(") (binary_expression "(*(int *)(param_1 + 0x48) == 0) ||\n     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))" (parenthesized_expression "(*(int *)(param_1 + 0x48) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x48) == 0" (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))" (( "(") (parenthesized_expression "(iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0))" (( "(") (comma_expression "iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)" (assignment_expression "iVar5 = *(int *)(param_1 + 0x38)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")"))))) (, ",") (binary_expression "iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)" (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(*(int *)(param_1 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x3c) != 0" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")))) () ")")) () ")"))) () ")")) (compound_statement "{\n    uVar9 = 0x301e0;\n  }" ({ "{") (expression_statement "uVar9 = 0x301e0;" (assignment_expression "uVar9 = 0x301e0" (identifier "uVar9") (= "=") (number_literal "0x301e0")) (; ";")) (} "}")) (else_clause "else {\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }" (else "else") (compound_statement "{\n    *(uint *)(param_1 + 0x50) = uVar6;\n    iVar3 = *(int *)(param_1 + 8);\n    *(int *)(param_1 + 8) = iVar3 + 1;\n    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);\n    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }\n    uVar9 = 0x301e6;\n  }" ({ "{") (expression_statement "*(uint *)(param_1 + 0x50) = uVar6;" (assignment_expression "*(uint *)(param_1 + 0x50) = uVar6" (pointer_expression "*(uint *)(param_1 + 0x50)" (* "*") (cast_expression "(uint *)(param_1 + 0x50)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "iVar3 = *(int *)(param_1 + 8);" (assignment_expression "iVar3 = *(int *)(param_1 + 8)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = iVar3 + 1;" (assignment_expression "*(int *)(param_1 + 8) = iVar3 + 1" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "iVar3 + 1" (identifier "iVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);" (assignment_expression "*(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3)" (pointer_expression "*(uint *)(param_1 + 0x54)" (* "*") (cast_expression "(uint *)(param_1 + 0x54)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x54)" (( "(") (binary_expression "param_1 + 0x54" (identifier "param_1") (+ "+") (number_literal "0x54")) () ")")))) (= "=") (binary_expression "(uint)*(byte *)(iVar8 + iVar3)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (cast_expression "(byte *)(iVar8 + iVar3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + iVar3)" (( "(") (binary_expression "iVar8 + iVar3" (identifier "iVar8") (+ "+") (identifier "iVar3")) () ")"))))) (; ";")) (if_statement "if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }" (if "if") (parenthesized_expression "((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0))" (( "(") (binary_expression "(bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)" (parenthesized_expression "(bVar2 < 0x18)" (( "(") (binary_expression "bVar2 < 0x18" (identifier "bVar2") (< "<") (number_literal "0x18")) () ")")) (&& "&&") (parenthesized_expression "((0x840200U >> (uVar6 & 0x1f) & 1) != 0)" (( "(") (binary_expression "(0x840200U >> (uVar6 & 0x1f) & 1) != 0" (parenthesized_expression "(0x840200U >> (uVar6 & 0x1f) & 1)" (( "(") (binary_expression "0x840200U >> (uVar6 & 0x1f) & 1" (binary_expression "0x840200U >> (uVar6 & 0x1f)" (number_literal "0x840200U") (>> ">>") (parenthesized_expression "(uVar6 & 0x1f)" (( "(") (binary_expression "uVar6 & 0x1f" (identifier "uVar6") (& "&") (number_literal "0x1f")) () ")"))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      iVar8 = *(int *)(param_1 + 0x4c);\n      if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }\n      iVar3 = *(int *)(param_1 + 0x5c);\n      iVar8 = iVar3 + iVar8 * 4;\n      iVar7 = iVar3;\n      if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }\n      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }\nLAB_0008df9a:\n      local_3c = 100;\n      goto LAB_0008dd7a;\n    }" ({ "{") (expression_statement "iVar8 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar8 = *(int *)(param_1 + 0x4c)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (if_statement "if (param_2 != (int *)0x0) {\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }" (if "if") (parenthesized_expression "(param_2 != (int *)0x0)" (( "(") (binary_expression "param_2 != (int *)0x0" (identifier "param_2") (!= "!=") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }\n        local_3c = FUN_0008d660();\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }\n        goto LAB_0008dd7a;\n      }" ({ "{") (if_statement "if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }" (if "if") (parenthesized_expression "(((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8))" (( "(") (binary_expression "((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)" (parenthesized_expression "((iVar5 != 0) && (bVar2 == 9))" (( "(") (binary_expression "(iVar5 != 0) && (bVar2 == 9)" (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(bVar2 == 9)" (( "(") (binary_expression "bVar2 == 9" (identifier "bVar2") (== "==") (number_literal "9")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(0 < iVar8)" (( "(") (binary_expression "0 < iVar8" (number_literal "0") (< "<") (identifier "iVar8")) () ")"))) () ")")) (compound_statement "{\n          iVar5 = *(int *)(param_1 + 0x58);\n          iVar8 = iVar8 + iVar5;\n          do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);\n        }" ({ "{") (expression_statement "iVar5 = *(int *)(param_1 + 0x58);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x58)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x58)" (* "*") (cast_expression "(int *)(param_1 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "iVar8 = iVar8 + iVar5;" (assignment_expression "iVar8 = iVar8 + iVar5" (identifier "iVar8") (= "=") (binary_expression "iVar8 + iVar5" (identifier "iVar8") (+ "+") (identifier "iVar5"))) (; ";")) (do_statement "do {\n            iVar5 = iVar5 + 1;\n          } while (iVar8 != iVar5);" (do "do") (compound_statement "{\n            iVar5 = iVar5 + 1;\n          }" ({ "{") (expression_statement "iVar5 = iVar5 + 1;" (assignment_expression "iVar5 = iVar5 + 1" (identifier "iVar5") (= "=") (binary_expression "iVar5 + 1" (identifier "iVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 != iVar5)" (( "(") (binary_expression "iVar8 != iVar5" (identifier "iVar8") (!= "!=") (identifier "iVar5")) () ")")) (; ";")) (} "}"))) (expression_statement "local_3c = FUN_0008d660();" (assignment_expression "local_3c = FUN_0008d660()" (identifier "local_3c") (= "=") (call_expression "FUN_0008d660()" (identifier "FUN_0008d660") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "local_3c")) (; ";")) (if_statement "if (local_3c == 0) {\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }" (if "if") (parenthesized_expression "(local_3c == 0)" (( "(") (binary_expression "local_3c == 0" (identifier "local_3c") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_3c = 100;\n          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);\n          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;\n        }" ({ "{") (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" (identifier "local_3c") (= "=") (number_literal "100")) (; ";")) (expression_statement "*param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);" (assignment_expression "*param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*param_2" (* "*") (identifier "param_2")) (= "=") (binary_expression "*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (pointer_expression "*(int *)(param_1 + 0xc)" (* "*") (cast_expression "(int *)(param_1 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xc)" (( "(") (binary_expression "param_1 + 0xc" (identifier "param_1") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (expression_statement "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;" (assignment_expression "*(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (= "=") (binary_expression "*(int *)(param_1 + 8) + *param_3" (pointer_expression "*(int *)(param_1 + 8)" (* "*") (cast_expression "(int *)(param_1 + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 8)" (( "(") (binary_expression "param_1 + 8" (identifier "param_1") (+ "+") (number_literal "8")) () ")")))) (+ "+") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (} "}"))) (goto_statement "goto LAB_0008dd7a;" (goto "goto") (statement_identifier "LAB_0008dd7a") (; ";")) (} "}"))) (expression_statement "iVar3 = *(int *)(param_1 + 0x5c);" (assignment_expression "iVar3 = *(int *)(param_1 + 0x5c)" (identifier "iVar3") (= "=") (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")"))))) (; ";")) (expression_statement "iVar8 = iVar3 + iVar8 * 4;" (assignment_expression "iVar8 = iVar3 + iVar8 * 4" (identifier "iVar8") (= "=") (binary_expression "iVar3 + iVar8 * 4" (identifier "iVar3") (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4")))) (; ";")) (expression_statement "iVar7 = iVar3;" (assignment_expression "iVar7 = iVar3" (identifier "iVar7") (= "=") (identifier "iVar3")) (; ";")) (if_statement "if (*(int *)(param_1 + 0x3c) != 0) {\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x3c) != 0" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        iVar7 = iVar8;\n        iVar8 = iVar3;\n      }" ({ "{") (expression_statement "iVar7 = iVar8;" (assignment_expression "iVar7 = iVar8" (identifier "iVar7") (= "=") (identifier "iVar8")) (; ";")) (expression_statement "iVar8 = iVar3;" (assignment_expression "iVar8 = iVar3" (identifier "iVar8") (= "=") (identifier "iVar3")) (; ";")) (} "}"))) (if_statement "if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }\n      else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }" (if "if") (parenthesized_expression "((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9))))" (( "(") (binary_expression "(uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))" (parenthesized_expression "(uVar6 == 0x12)" (( "(") (binary_expression "uVar6 == 0x12" (identifier "uVar6") (== "==") (number_literal "0x12")) () ")")) (|| "||") (parenthesized_expression "((iVar5 != 0 && (uVar6 != 9)))" (( "(") (parenthesized_expression "(iVar5 != 0 && (uVar6 != 9))" (( "(") (binary_expression "iVar5 != 0 && (uVar6 != 9)" (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) (&& "&&") (parenthesized_expression "(uVar6 != 9)" (( "(") (binary_expression "uVar6 != 9" (identifier "uVar6") (!= "!=") (number_literal "9")) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\nLAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;\n        iVar5 = *(int *)(param_1 + 0x4c);\n        if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }\n      }" ({ "{") (labeled_statement "LAB_0008df25:\n        local_3c = FUN_0008d780(iVar8);" (statement_identifier "LAB_0008df25") (: ":") (expression_statement "local_3c = FUN_0008d780(iVar8);" (assignment_expression "local_3c = FUN_0008d780(iVar8)" (identifier "local_3c") (= "=") (call_expression "FUN_0008d780(iVar8)" (identifier "FUN_0008d780") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")")))) (; ";"))) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "local_3c")) (; ";")) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" (if "if") (parenthesized_expression "(local_3c != 0)" (( "(") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008dd7a;" (goto "goto") (statement_identifier "LAB_0008dd7a") (; ";"))) (if_statement "if (*(int *)(param_1 + 0x38) == 0) {\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }\n        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x38) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x38) == 0" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;\n          iVar5 = *(int *)(param_1 + 0x50);\n          if (iVar5 != 0x17) goto LAB_0008dfe8;\n        }" ({ "{") (labeled_statement "LAB_0008dffb:\n          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;" (statement_identifier "LAB_0008dffb") (: ":") (if_statement "if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x3c) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x3c) == 0" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008df9a;" (goto "goto") (statement_identifier "LAB_0008df9a") (; ";")))) (expression_statement "iVar5 = *(int *)(param_1 + 0x50);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x50)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x50)" (* "*") (cast_expression "(int *)(param_1 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (if_statement "if (iVar5 != 0x17) goto LAB_0008dfe8;" (if "if") (parenthesized_expression "(iVar5 != 0x17)" (( "(") (binary_expression "iVar5 != 0x17" (identifier "iVar5") (!= "!=") (number_literal "0x17")) () ")")) (goto_statement "goto LAB_0008dfe8;" (goto "goto") (statement_identifier "LAB_0008dfe8") (; ";"))) (} "}")) (else_clause "else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;" (else "else") (if_statement "if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x50) != 0x17)" (( "(") (binary_expression "*(int *)(param_1 + 0x50) != 0x17" (pointer_expression "*(int *)(param_1 + 0x50)" (* "*") (cast_expression "(int *)(param_1 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (!= "!=") (number_literal "0x17")) () ")")) (goto_statement "goto LAB_0008dfde;" (goto "goto") (statement_identifier "LAB_0008dfde") (; ";"))))) (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (if_statement "if (0 < iVar5) {\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }" (if "if") (parenthesized_expression "(0 < iVar5)" (( "(") (binary_expression "0 < iVar5" (number_literal "0") (< "<") (identifier "iVar5")) () ")")) (compound_statement "{\n          iVar8 = 0;\n          do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);\n        }" ({ "{") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          } while (iVar8 < iVar5);" (do "do") (compound_statement "{\n            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }\n            iVar8 = iVar8 + 1;\n          }" ({ "{") (if_statement "if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }" (if "if") (parenthesized_expression "(*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0')" (( "(") (binary_expression "*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0'" (pointer_expression "*(char *)(*(int *)(param_1 + 0x58) + iVar8)" (* "*") (cast_expression "(char *)(*(int *)(param_1 + 0x58) + iVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x58) + iVar8)" (( "(") (binary_expression "*(int *)(param_1 + 0x58) + iVar8" (pointer_expression "*(int *)(param_1 + 0x58)" (* "*") (cast_expression "(int *)(param_1 + 0x58)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (+ "+") (identifier "iVar8")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);\n              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }\n              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;\n              iVar5 = *(int *)(param_1 + 0x4c);\n            }" ({ "{") (expression_statement "*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);" (assignment_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =\n                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x5c) + iVar8 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x5c) + iVar8 * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")")))) (= "=") (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (+ "+") (binary_expression "(iVar5 + iVar8) * 4" (parenthesized_expression "(iVar5 + iVar8)" (( "(") (binary_expression "iVar5 + iVar8" (identifier "iVar5") (+ "+") (identifier "iVar8")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (if_statement "if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }" (if "if") (parenthesized_expression "(*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0)" (( "(") (binary_expression "*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0" (pointer_expression "*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" (* "*") (cast_expression "(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x5c) + iVar8 * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x5c) + iVar8 * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (+ "+") (binary_expression "iVar8 * 4" (identifier "iVar8") (* "*") (number_literal "4"))) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                uVar9 = 0x30212;\n                goto LAB_0008dead;\n              }" ({ "{") (expression_statement "uVar9 = 0x30212;" (assignment_expression "uVar9 = 0x30212" (identifier "uVar9") (= "=") (number_literal "0x30212")) (; ";")) (goto_statement "goto LAB_0008dead;" (goto "goto") (statement_identifier "LAB_0008dead") (; ";")) (} "}"))) (expression_statement "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0\n              ;" (assignment_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0" (pointer_expression "*(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4)" (* "*") (cast_expression "(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4)" (( "(") (binary_expression "*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4" (pointer_expression "*(int *)(param_1 + 0x5c)" (* "*") (cast_expression "(int *)(param_1 + 0x5c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x5c)" (( "(") (binary_expression "param_1 + 0x5c" (identifier "param_1") (+ "+") (number_literal "0x5c")) () ")")))) (+ "+") (binary_expression "(*(int *)(param_1 + 0x4c) + iVar8) * 4" (parenthesized_expression "(*(int *)(param_1 + 0x4c) + iVar8)" (( "(") (binary_expression "*(int *)(param_1 + 0x4c) + iVar8" (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")")))) (+ "+") (identifier "iVar8")) () ")")) (* "*") (number_literal "4"))) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar5 = *(int *)(param_1 + 0x4c);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x4c)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x4c)" (* "*") (cast_expression "(int *)(param_1 + 0x4c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x4c)" (( "(") (binary_expression "param_1 + 0x4c" (identifier "param_1") (+ "+") (number_literal "0x4c")) () ")"))))) (; ";")) (} "}"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar8 < iVar5)" (( "(") (binary_expression "iVar8 < iVar5" (identifier "iVar8") (< "<") (identifier "iVar5")) () ")")) (; ";")) (} "}"))) (} "}")) (else_clause "else {\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }" (else "else") (compound_statement "{\n        local_3c = FUN_0008d780(iVar7);\n        *(int *)(param_1 + 0x40) = local_3c;\n        if (local_3c != 0) goto LAB_0008dd7a;\n        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;\n        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;\nLAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }\n      }" ({ "{") (expression_statement "local_3c = FUN_0008d780(iVar7);" (assignment_expression "local_3c = FUN_0008d780(iVar7)" (identifier "local_3c") (= "=") (call_expression "FUN_0008d780(iVar7)" (identifier "FUN_0008d780") (argument_list "(iVar7)" (( "(") (identifier "iVar7") () ")")))) (; ";")) (expression_statement "*(int *)(param_1 + 0x40) = local_3c;" (assignment_expression "*(int *)(param_1 + 0x40) = local_3c" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (identifier "local_3c")) (; ";")) (if_statement "if (local_3c != 0) goto LAB_0008dd7a;" (if "if") (parenthesized_expression "(local_3c != 0)" (( "(") (binary_expression "local_3c != 0" (identifier "local_3c") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008dd7a;" (goto "goto") (statement_identifier "LAB_0008dd7a") (; ";"))) (if_statement "if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x50) != 9)" (( "(") (binary_expression "*(int *)(param_1 + 0x50) != 9" (pointer_expression "*(int *)(param_1 + 0x50)" (* "*") (cast_expression "(int *)(param_1 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (!= "!=") (number_literal "9")) () ")")) (goto_statement "goto LAB_0008df25;" (goto "goto") (statement_identifier "LAB_0008df25") (; ";"))) (if_statement "if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x38) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x38) == 0" (pointer_expression "*(int *)(param_1 + 0x38)" (* "*") (cast_expression "(int *)(param_1 + 0x38)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0008dffb;" (goto "goto") (statement_identifier "LAB_0008dffb") (; ";"))) (labeled_statement "LAB_0008dfde:\n        if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }" (statement_identifier "LAB_0008dfde") (: ":") (if_statement "if (*(int *)(param_1 + 0x3c) != 0) {\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x3c) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x3c) != 0" (pointer_expression "*(int *)(param_1 + 0x3c)" (* "*") (cast_expression "(int *)(param_1 + 0x3c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x3c)" (( "(") (binary_expression "param_1 + 0x3c" (identifier "param_1") (+ "+") (number_literal "0x3c")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          iVar5 = *(int *)(param_1 + 0x50);\nLAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }\n          if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }\n        }" ({ "{") (expression_statement "iVar5 = *(int *)(param_1 + 0x50);" (assignment_expression "iVar5 = *(int *)(param_1 + 0x50)" (identifier "iVar5") (= "=") (pointer_expression "*(int *)(param_1 + 0x50)" (* "*") (cast_expression "(int *)(param_1 + 0x50)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")"))))) (; ";")) (labeled_statement "LAB_0008dfe8:\n          if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" (statement_identifier "LAB_0008dfe8") (: ":") (if_statement "if (iVar5 == 0x12) {\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" (if "if") (parenthesized_expression "(iVar5 == 0x12)" (( "(") (binary_expression "iVar5 == 0x12" (identifier "iVar5") (== "==") (number_literal "0x12")) () ")")) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x50) = 9;\n            local_3c = 100;\n            goto LAB_0008dd7a;\n          }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x50) = 9;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 9" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "9")) (; ";")) (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" (identifier "local_3c") (= "=") (number_literal "100")) (; ";")) (goto_statement "goto LAB_0008dd7a;" (goto "goto") (statement_identifier "LAB_0008dd7a") (; ";")) (} "}")))) (if_statement "if (iVar5 == 9) {\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }" (if "if") (parenthesized_expression "(iVar5 == 9)" (( "(") (binary_expression "iVar5 == 9" (identifier "iVar5") (== "==") (number_literal "9")) () ")")) (compound_statement "{\n            *(undefined4 *)(param_1 + 0x50) = 0x12;\n          }" ({ "{") (expression_statement "*(undefined4 *)(param_1 + 0x50) = 0x12;" (assignment_expression "*(undefined4 *)(param_1 + 0x50) = 0x12" (pointer_expression "*(undefined4 *)(param_1 + 0x50)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x50)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x50)" (( "(") (binary_expression "param_1 + 0x50" (identifier "param_1") (+ "+") (number_literal "0x50")) () ")")))) (= "=") (number_literal "0x12")) (; ";")) (} "}"))) (} "}")))) (} "}")))) (labeled_statement "LAB_0008df9a:\n      local_3c = 100;" (statement_identifier "LAB_0008df9a") (: ":") (expression_statement "local_3c = 100;" (assignment_expression "local_3c = 100" (identifier "local_3c") (= "=") (number_literal "100")) (; ";"))) (goto_statement "goto LAB_0008dd7a;" (goto "goto") (statement_identifier "LAB_0008dd7a") (; ";")) (} "}"))) (expression_statement "uVar9 = 0x301e6;" (assignment_expression "uVar9 = 0x301e6" (identifier "uVar9") (= "=") (number_literal "0x301e6")) (; ";")) (} "}")))) (labeled_statement "LAB_0008dead:\n  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (statement_identifier "LAB_0008dead") (: ":") (expression_statement "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");" (call_expression "FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" (identifier "FUN_0006e260") (argument_list "(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,\n               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1")" (( "(") (number_literal "0xb") (, ",") (string_literal ""%s at line %d of [%.10s]"" (" """) (string_content "%s at line %d of [%.10s]") (" """)) (, ",") (string_literal ""database corruption"" (" """) (string_content "database corruption") (" """)) (, ",") (identifier "uVar9") (, ",") (string_literal ""bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1"" (" """) (string_content "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1") (" """)) () ")"))) (; ";"))) (expression_statement "*(undefined4 *)(param_1 + 0x40) = 0xb;" (assignment_expression "*(undefined4 *)(param_1 + 0x40) = 0xb" (pointer_expression "*(undefined4 *)(param_1 + 0x40)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x40)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (= "=") (number_literal "0xb")) (; ";")) (expression_statement "local_3c = 0xb;" (assignment_expression "local_3c = 0xb" (identifier "local_3c") (= "=") (number_literal "0xb")) (; ";")) (labeled_statement "LAB_0008dd7a:\n  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }" (statement_identifier "LAB_0008dd7a") (: ":") (if_statement "if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {\n    return local_3c;\n  }" (if "if") (parenthesized_expression "(iVar1 == *(int *)(in_GS_OFFSET + 0x14))" (( "(") (binary_expression "iVar1 == *(int *)(in_GS_OFFSET + 0x14)" (identifier "iVar1") (== "==") (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_3c;\n  }" ({ "{") (return_statement "return local_3c;" (return "return") (identifier "local_3c") (; ";")) (} "}")))) (expression_statement "FUN_00116110();" (call_expression "FUN_00116110()" (identifier "FUN_00116110") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 function_1(type_1 *p,type_2 **var_22,int *pnRec,int *var_11)

{
  int *piVar1;
  size_t var_21;
  type_3 var_10;
  type_3 *p_00;
  type_4 var_16;
  int var_3;
  type_2 *var_23;
  type_4 var_19;
  type_5 **apOut;
  type_5 **var_2;
  type_2 *var_24;
  int var_4;
  type_5 **apOut_00;
  int var_1;
  type_6 uVar10;
  type_7 *in_stack_ffffffb4;
  int *in_stack_ffffffb8;
  int var_8;
  type_2 *local_38;
  int var_13;
  int var_17;
  int var_27;
  type_6 uStack_14;
  
  uStack_14 = 0x8db6b;
  var_2 = p->apValue;
  var_27 = *(int *)(var_1 + 0x14);
  if (var_2 != (type_5 **)0x0) {
    var_3 = p->nCol;
    if (0 < var_3) {
      var_4 = 0;
      do {
        var_2 = var_2 + var_4;
        var_4 = var_4 + 1;
        var_5(*var_2);
        var_3 = p->nCol;
        var_2 = p->apValue;
      } while (var_4 < var_3 * 2);
    }
    var_6(var_2,0,var_3 << 3);
  }
  var_8 = var_7(in_stack_ffffffb4,(int)in_stack_ffffffb8);
  p->var_13 = var_8;
  if (var_8 != 0) goto LAB_0008dd7a;
  if ((p->in).nData <= (p->in).iNext) {
LAB_0008dda0:
    var_8 = 0x65;
    goto LAB_0008dd7a;
  }
  var_9(&p->in);
  var_3 = (p->in).iNext;
  var_24 = (p->in).aData;
  (p->in).iCurrent = var_3;
  (p->in).iNext = var_3 + 1;
  var_10 = var_24[var_3];
  if ((var_10 & 0xfb) == 0x50) {
    do {
      if (var_11 != (int *)0x0) {
        *var_11 = 1;
      }
      p->bPatchset = (type_4)(var_10 == 0x50);
      var_13 = var_12(in_stack_ffffffb4,in_stack_ffffffb8);
      var_8 = var_13;
      if (var_13 != 0) {
LAB_0008dd5f:
        var_2 = (type_5 **)(p->tblhdr).aBuf;
        p->var_13 = var_8;
        p->apValue = var_2;
        var_2 = var_2 + p->nCol * 2;
        p->abPK = (type_2 *)var_2;
        p->zTab = (char *)((int)var_2 + p->nCol);
        goto LAB_0008dd7a;
      }
      p_00 = (p->in).aData + (p->in).iNext;
      var_10 = *p_00;
      var_19 = (type_4)var_10;
      if ((char)var_10 < '\0') {
        var_10 = var_14(p_00,(type_8 *)&p->nCol);
        var_19 = p->nCol;
        var_16 = (type_4)var_10;
      }
      else {
        p->nCol = var_19;
        var_16 = 1;
      }
      if ((int)var_19 < 1) {
        var_15(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,
                    "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
        var_8 = 0xb;
        goto LAB_0008dd5f;
      }
      piVar1 = &(p->in).iNext;
      *piVar1 = *piVar1 + var_16;
      (p->tblhdr).nBuf = 0;
      var_17 = var_17 - var_16;
      var_18(&p->tblhdr,var_17 + var_19 * 8,&var_13);
      var_8 = var_13;
      if (var_13 != 0) goto LAB_0008dd5f;
      var_21 = p->nCol * 8;
      var_6((p->tblhdr).aBuf,0,var_21);
      var_20((p->tblhdr).aBuf + var_21,(p->in).aData + (p->in).iNext,var_17);
      var_2 = (type_5 **)(p->tblhdr).aBuf;
      var_3 = p->nCol;
      piVar1 = &(p->in).iNext;
      *piVar1 = *piVar1 + var_17;
      p->apValue = var_2;
      var_2 = var_2 + var_3 * 2;
      p->abPK = (type_2 *)var_2;
      p->zTab = (char *)((int)var_2 + var_3);
      p->var_13 = var_13;
      var_8 = var_13;
      if (var_13 != 0) goto LAB_0008dd7a;
      var_8 = var_7(in_stack_ffffffb4,(int)in_stack_ffffffb8);
      p->var_13 = var_8;
      if (var_8 != 0) goto LAB_0008dd7a;
      var_3 = (p->in).iNext;
      (p->in).iCurrent = var_3;
      if ((p->in).nData <= var_3) goto LAB_0008dda0;
      var_24 = (p->in).aData;
      (p->in).iNext = var_3 + 1;
      var_10 = var_24[var_3];
    } while ((var_10 & 0xfb) == 0x50);
  }
  var_19 = (type_4)var_10;
  if ((p->zTab == (char *)0x0) || ((var_3 = p->bPatchset, var_3 != 0 && (p->bInvert != 0)))) {
    uVar10 = 0x301e0;
  }
  else {
    p->op = var_19;
    var_4 = (p->in).iNext;
    (p->in).iNext = var_4 + 1;
    p->bIndirect = (type_4)var_24[var_4];
    if ((var_10 < 0x18) && ((0x840200U >> (var_19 & 0x1f) & 1) != 0)) {
      var_4 = p->nCol;
      if (var_22 != (type_2 **)0x0) {
        if (var_3 == 0) {
          if (var_10 == 0x17) {
            var_4 = var_4 * 2;
          }
        }
        else if (var_10 == 9) {
          if (var_4 < 1) {
            var_4 = 0;
          }
          else {
            var_23 = p->abPK;
            var_24 = var_23 + var_4;
            var_4 = 0;
            do {
              var_4 = (var_4 + 1) - (type_4)(*var_23 == '\0');
              var_23 = var_23 + 1;
            } while (var_24 != var_23);
          }
        }
        var_8 = var_25(&p->in,var_4,pnRec);
        p->var_13 = var_8;
        if (var_8 == 0) {
          var_8 = 100;
          *var_22 = (p->in).aData + (p->in).iNext;
          piVar1 = &(p->in).iNext;
          *piVar1 = *piVar1 + *pnRec;
        }
        goto LAB_0008dd7a;
      }
      var_2 = p->apValue;
      apOut = var_2;
      apOut_00 = var_2 + var_4;
      if (p->bInvert != 0) {
        apOut = var_2 + var_4;
        apOut_00 = var_2;
      }
      if (var_19 != 0x12) {
        local_38 = (type_2 *)0x0;
        if (var_3 != 0) {
          if (var_19 != 9) goto LAB_0008df25;
          local_38 = p->abPK;
        }
        var_8 = var_26(&p->in,var_4,local_38,apOut);
        p->var_13 = var_8;
        if (var_8 != 0) goto LAB_0008dd7a;
        if (p->op != 9) {
          var_4 = p->nCol;
          goto LAB_0008df25;
        }
        if (p->bPatchset == 0) goto LAB_0008dffb;
LAB_0008dfde:
        if (p->bInvert != 0) {
          var_3 = p->op;
          goto LAB_0008dfe8;
        }
        goto LAB_0008df9a;
      }
LAB_0008df25:
      var_8 = var_26(&p->in,var_4,(type_2 *)0x0,apOut_00);
      p->var_13 = var_8;
      if (var_8 != 0) goto LAB_0008dd7a;
      if (p->bPatchset == 0) {
LAB_0008dffb:
        if (p->bInvert != 0) {
          var_3 = p->op;
          if (var_3 == 0x17) goto LAB_0008df57;
LAB_0008dfe8:
          if (var_3 == 0x12) {
            p->op = 9;
            var_8 = 100;
            goto LAB_0008dd7a;
          }
          if (var_3 == 9) {
            p->op = 0x12;
          }
        }
      }
      else {
        if (p->op != 0x17) goto LAB_0008dfde;
LAB_0008df57:
        var_3 = p->nCol;
        if (0 < var_3) {
          var_4 = 0;
          do {
            if (p->abPK[var_4] != '\0') {
              p->apValue[var_4] = p->apValue[var_3 + var_4];
              if (p->apValue[var_4] == (type_5 *)0x0) {
                uVar10 = 0x30212;
                goto LAB_0008dead;
              }
              p->apValue[p->nCol + var_4] = (type_5 *)0x0;
              var_3 = p->nCol;
            }
            var_4 = var_4 + 1;
          } while (var_4 < var_3);
        }
      }
LAB_0008df9a:
      var_8 = 100;
      goto LAB_0008dd7a;
    }
    uVar10 = 0x301e6;
  }
LAB_0008dead:
  var_15(0xb,"%s at line %d of [%.10s]","database corruption",uVar10,
              "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
  p->var_13 = 0xb;
  var_8 = 0xb;
LAB_0008dd7a:
  if (var_27 != *(int *)(var_1 + 0x14)) {
                    /* WARNING: Subroutine does not return */
    var_28();
  }
  return var_8;
}


(translation_unit (function_definition type: (primitive_type) (ERROR (identifier)) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) 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: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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)) (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: (identifier) right: (number_literal))))))) (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))))))) (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: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (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: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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: (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)))))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (number_literal) (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_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: (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 (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (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: (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: (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: (identifier))) (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: (binary_expression left: (identifier) right: (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: (identifier) right: (identifier))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal))) body: (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: (pointer_expression argument: (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: (identifier) right: (number_literal))))) right: (call_expression function: (parenthesized_expression (identifier)) arguments: (argument_list (binary_expression left: (identifier) right: (number_literal)))))) (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 (labeled_statement label: (statement_identifier) (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: (identifier)))) (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: (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: (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: (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))))) (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: (identifier))) (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: (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)))))))) (goto_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)) 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: (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: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (binary_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (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: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (number_literal) (string_literal (string_content))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (goto_statement label: (statement_identifier)))) (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: (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: (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: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (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)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (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))))) (number_literal) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (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)))))))) (cast_expression type: (type_descriptor type: (primitive_type) 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: (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)))))))) (identifier)))) (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: (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: (identifier)))) (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: (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: (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: (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))))) (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: (identifier))) (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: (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)))))))) (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: (call_expression function: (identifier) arguments: (argument_list)))) (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: (identifier))) (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: (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: (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: (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: (identifier))) consequence: (goto_statement label: (statement_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: (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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (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))) right: (parenthesized_expression (parenthesized_expression (comma_expression left: (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)))))) right: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (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))))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (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: (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: (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: (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: (binary_expression left: (parenthesized_expression (identifier)) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (binary_expression left: (number_literal) right: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) 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: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_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: (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: (number_literal))))) right: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))))) consequence: (compound_statement (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: (binary_expression left: (identifier) right: (identifier)))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (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: (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: (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: (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: (pointer_expression argument: (identifier))))))) (goto_statement label: (statement_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: (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (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: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (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: (identifier) right: (number_literal)) right: (parenthesized_expression (binary_expression left: (identifier) 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 (identifier)))))) (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_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: (number_literal))) consequence: (compound_statement (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: (number_literal))) consequence: (goto_statement label: (statement_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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier)))) alternative: (else_clause (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: (number_literal))) consequence: (goto_statement label: (statement_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))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (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: (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: (identifier))))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (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: (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)))))) 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: (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: (parenthesized_expression (binary_expression left: (identifier) right: (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: (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)))))) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) 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: (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: (identifier))) right: (number_literal)))))) right: (number_literal))) (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: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))))) 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: (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: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_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: (number_literal))) consequence: (goto_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: (number_literal))) consequence: (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: (number_literal))) consequence: (compound_statement (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))))))) (labeled_statement label: (statement_identifier) (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: (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: (number_literal))) (goto_statement label: (statement_identifier))))) (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: (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: (identifier) right: (number_literal)))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (labeled_statement label: (statement_identifier) (expression_statement (call_expression function: (identifier) arguments: (argument_list (number_literal) (string_literal (string_content)) (string_literal (string_content)) (identifier) (string_literal (string_content)))))) (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: (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.bx replaced with injection: get_pc_thunk_bx */

int __regparm3 MASKED(int param_1,int *param_2,int *param_3,undefined4 *param_4)

{
  size_t __n;
  int iVar1;
  byte bVar2;
  int iVar3;
  uint uVar4;
  int iVar5;
  uint uVar6;
  int iVar7;
  void *__s;
  int iVar8;
  int in_GS_OFFSET;
  undefined4 uVar9;
  int local_3c;
  size_t local_24;
  
  __s = *(void **)(param_1 + 0x5c);
  iVar1 = *(int *)(in_GS_OFFSET + 0x14);
  if (__s != (void *)0x0) {
    iVar5 = *(int *)(param_1 + 0x4c);
    if (0 < iVar5) {
      iVar8 = 0;
      do {
        iVar8 = iVar8 + 1;
        FUN_00042f80();
        iVar5 = *(int *)(param_1 + 0x4c);
        __s = *(void **)(param_1 + 0x5c);
      } while (iVar8 < iVar5 * 2);
    }
    memset(__s,0,iVar5 << 3);
  }
  local_3c = FUN_0008d3d0();
  *(int *)(param_1 + 0x40) = local_3c;
  if (local_3c != 0) goto LAB_0008dd7a;
  if (*(int *)(param_1 + 0x10) <= *(int *)(param_1 + 8)) {
LAB_0008dda0:
    local_3c = 0x65;
    goto LAB_0008dd7a;
  }
  FUN_00050030();
  iVar5 = *(int *)(param_1 + 8);
  iVar8 = *(int *)(param_1 + 0xc);
  *(int *)(param_1 + 4) = iVar5;
  *(int *)(param_1 + 8) = iVar5 + 1;
  bVar2 = *(byte *)(iVar8 + iVar5);
  while ((bVar2 & 0xfb) == 0x50) {
    if (param_4 != (undefined4 *)0x0) {
      *param_4 = 1;
    }
    *(uint *)(param_1 + 0x38) = (uint)(bVar2 == 0x50);
    local_3c = FUN_0008d500();
    if (local_3c != 0) {
LAB_0008dd5f:
      *(int *)(param_1 + 0x40) = local_3c;
      *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);
      iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;
      *(int *)(param_1 + 0x58) = iVar5;
      *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);
      goto LAB_0008dd7a;
    }
    bVar2 = *(byte *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc));
    uVar6 = (uint)bVar2;
    if ((char)bVar2 < '\0') {
      uVar4 = FUN_00046230();
      uVar6 = *(uint *)(param_1 + 0x4c);
      uVar4 = uVar4 & 0xff;
    }
    else {
      *(uint *)(param_1 + 0x4c) = uVar6;
      uVar4 = 1;
    }
    if ((int)uVar6 < 1) {
      FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",0x3018b,
                   "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
      local_3c = 0xb;
      goto LAB_0008dd5f;
    }
    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + uVar4;
    *(undefined4 *)(param_1 + 0x30) = 0;
    local_24 = local_24 - uVar4;
    FUN_0008ccb0();
    __n = *(int *)(param_1 + 0x4c) * 8;
    memset(*(void **)(param_1 + 0x2c),0,__n);
    memcpy((void *)(__n + *(int *)(param_1 + 0x2c)),
           (void *)(*(int *)(param_1 + 8) + *(int *)(param_1 + 0xc)),local_24);
    *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + local_24;
    *(int *)(param_1 + 0x5c) = *(int *)(param_1 + 0x2c);
    iVar5 = *(int *)(param_1 + 0x2c) + *(int *)(param_1 + 0x4c) * 8;
    *(int *)(param_1 + 0x58) = iVar5;
    *(int *)(param_1 + 0x48) = iVar5 + *(int *)(param_1 + 0x4c);
    *(undefined4 *)(param_1 + 0x40) = 0;
    local_3c = FUN_0008d3d0();
    *(int *)(param_1 + 0x40) = local_3c;
    if (local_3c != 0) goto LAB_0008dd7a;
    iVar5 = *(int *)(param_1 + 8);
    *(int *)(param_1 + 4) = iVar5;
    if (*(int *)(param_1 + 0x10) <= iVar5) goto LAB_0008dda0;
    iVar8 = *(int *)(param_1 + 0xc);
    *(int *)(param_1 + 8) = iVar5 + 1;
    bVar2 = *(byte *)(iVar8 + iVar5);
  }
  uVar6 = (uint)bVar2;
  if ((*(int *)(param_1 + 0x48) == 0) ||
     ((iVar5 = *(int *)(param_1 + 0x38), iVar5 != 0 && (*(int *)(param_1 + 0x3c) != 0)))) {
    uVar9 = 0x301e0;
  }
  else {
    *(uint *)(param_1 + 0x50) = uVar6;
    iVar3 = *(int *)(param_1 + 8);
    *(int *)(param_1 + 8) = iVar3 + 1;
    *(uint *)(param_1 + 0x54) = (uint)*(byte *)(iVar8 + iVar3);
    if ((bVar2 < 0x18) && ((0x840200U >> (uVar6 & 0x1f) & 1) != 0)) {
      iVar8 = *(int *)(param_1 + 0x4c);
      if (param_2 != (int *)0x0) {
        if (((iVar5 != 0) && (bVar2 == 9)) && (0 < iVar8)) {
          iVar5 = *(int *)(param_1 + 0x58);
          iVar8 = iVar8 + iVar5;
          do {
            iVar5 = iVar5 + 1;
          } while (iVar8 != iVar5);
        }
        local_3c = FUN_0008d660();
        *(int *)(param_1 + 0x40) = local_3c;
        if (local_3c == 0) {
          local_3c = 100;
          *param_2 = *(int *)(param_1 + 8) + *(int *)(param_1 + 0xc);
          *(int *)(param_1 + 8) = *(int *)(param_1 + 8) + *param_3;
        }
        goto LAB_0008dd7a;
      }
      iVar3 = *(int *)(param_1 + 0x5c);
      iVar8 = iVar3 + iVar8 * 4;
      iVar7 = iVar3;
      if (*(int *)(param_1 + 0x3c) != 0) {
        iVar7 = iVar8;
        iVar8 = iVar3;
      }
      if ((uVar6 == 0x12) || ((iVar5 != 0 && (uVar6 != 9)))) {
LAB_0008df25:
        local_3c = FUN_0008d780(iVar8);
        *(int *)(param_1 + 0x40) = local_3c;
        if (local_3c != 0) goto LAB_0008dd7a;
        if (*(int *)(param_1 + 0x38) == 0) {
LAB_0008dffb:
          if (*(int *)(param_1 + 0x3c) == 0) goto LAB_0008df9a;
          iVar5 = *(int *)(param_1 + 0x50);
          if (iVar5 != 0x17) goto LAB_0008dfe8;
        }
        else if (*(int *)(param_1 + 0x50) != 0x17) goto LAB_0008dfde;
        iVar5 = *(int *)(param_1 + 0x4c);
        if (0 < iVar5) {
          iVar8 = 0;
          do {
            if (*(char *)(*(int *)(param_1 + 0x58) + iVar8) != '\0') {
              *(undefined4 *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) =
                   *(undefined4 *)(*(int *)(param_1 + 0x5c) + (iVar5 + iVar8) * 4);
              if (*(int *)(*(int *)(param_1 + 0x5c) + iVar8 * 4) == 0) {
                uVar9 = 0x30212;
                goto LAB_0008dead;
              }
              *(undefined4 *)(*(int *)(param_1 + 0x5c) + (*(int *)(param_1 + 0x4c) + iVar8) * 4) = 0
              ;
              iVar5 = *(int *)(param_1 + 0x4c);
            }
            iVar8 = iVar8 + 1;
          } while (iVar8 < iVar5);
        }
      }
      else {
        local_3c = FUN_0008d780(iVar7);
        *(int *)(param_1 + 0x40) = local_3c;
        if (local_3c != 0) goto LAB_0008dd7a;
        if (*(int *)(param_1 + 0x50) != 9) goto LAB_0008df25;
        if (*(int *)(param_1 + 0x38) == 0) goto LAB_0008dffb;
LAB_0008dfde:
        if (*(int *)(param_1 + 0x3c) != 0) {
          iVar5 = *(int *)(param_1 + 0x50);
LAB_0008dfe8:
          if (iVar5 == 0x12) {
            *(undefined4 *)(param_1 + 0x50) = 9;
            local_3c = 100;
            goto LAB_0008dd7a;
          }
          if (iVar5 == 9) {
            *(undefined4 *)(param_1 + 0x50) = 0x12;
          }
        }
      }
LAB_0008df9a:
      local_3c = 100;
      goto LAB_0008dd7a;
    }
    uVar9 = 0x301e6;
  }
LAB_0008dead:
  FUN_0006e260(0xb,"%s at line %d of [%.10s]","database corruption",uVar9,
               "bd49a8271d650fa89e446b42e513b595a717b9212c91dd384aab871fc1d0alt1");
  *(undefined4 *)(param_1 + 0x40) = 0xb;
  local_3c = 0xb;
LAB_0008dd7a:
  if (iVar1 == *(int *)(in_GS_OFFSET + 0x14)) {
    return local_3c;
  }
                    /* WARNING: Subroutine does not return */
  FUN_00116110();
}

