
void fts5WriteDlidxAppend(Fts5Index *p,Fts5SegWriter *pWriter,i64 iRowid)

{
  int *p_00;
  int iVar1;
  bool bVar2;
  byte bVar3;
  i64 iVar4;
  u64 *v;
  long lVar5;
  Fts5Buffer *pFVar6;
  Fts5DlidxWriter *pFVar7;
  long in_FS_OFFSET;
  long local_58;
  i64 iRowid_1;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (p->rc == 0) {
    p_00 = &p->rc;
    lVar5 = 0;
    do {
      pFVar7 = pWriter->aDlidx + lVar5;
      if ((pFVar7->buf).n < p->pConfig->pgsz) {
        pFVar6 = &pFVar7->buf;
        if (pFVar7->bPrevValid != 0) {
          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);
          pFVar7->bPrevValid = 1;
          pFVar7->iPrev = iRowid;
          break;
        }
        iVar4 = 0;
        bVar2 = true;
      }
      else {
        *(pFVar7->buf).p = '\x01';
        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +
                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);
        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,
                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));
        pFVar7 = pWriter->aDlidx + lVar5;
        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {
          pFVar6 = &pFVar7[1].buf;
          v = (u64 *)&iRowid_1;
          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);
          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);
          iVar4 = iRowid_1;
          pFVar7[1].pgno = pFVar7->pgno;
          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);
          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);
          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);
          pFVar7[1].iPrev = iVar4;
          pFVar7[1].bPrevValid = 1;
        }
        pFVar7->pgno = pFVar7->pgno + 1;
        pFVar6 = &pFVar7->buf;
        bVar2 = false;
        iVar4 = 1;
        (pFVar7->buf).n = 0;
        pFVar7->bPrevValid = 0;
      }
      if (lVar5 == 0) {
        iVar1 = (pWriter->writer).pgno;
      }
      else {
        iVar1 = pFVar7[-1].pgno;
      }
      local_58 = (long)iVar1;
      lVar5 = lVar5 + 1;
      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);
      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58);
      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid);
      pFVar7->iPrev = iRowid;
      pFVar7->bPrevValid = 1;
    } while (!bVar2 && p->rc == 0);
  }
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}



void FUN_001bfb60(long *param_1,int *param_2,long param_3)

{
  long lVar1;
  int iVar2;
  bool bVar3;
  byte bVar4;
  undefined8 uVar5;
  long lVar6;
  int *piVar7;
  int *piVar8;
  long in_FS_OFFSET;
  long local_58;
  undefined8 local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (*(int *)((long)param_1 + 0x34) == 0) {
    lVar1 = (long)param_1 + 0x34;
    lVar6 = 0;
    do {
      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);
      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {
        piVar7 = piVar8 + 4;
        if (piVar8[1] != 0) {
          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));
          piVar8[1] = 1;
          *(long *)(piVar8 + 2) = param_3;
          break;
        }
        uVar5 = 0;
        bVar3 = true;
      }
      else {
        **(undefined1 **)(piVar8 + 4) = 1;
        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +
                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);
        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);
        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);
        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {
          piVar7 = piVar8 + 0xc;
          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);
          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);
          uVar5 = local_48;
          piVar8[8] = *piVar8;
          FUN_0015be80(lVar1,piVar7,0);
          FUN_0015be80(lVar1,piVar7,(long)*piVar8);
          FUN_0015be80(lVar1,piVar7,uVar5);
          *(undefined8 *)(piVar8 + 10) = uVar5;
          piVar8[9] = 1;
        }
        *piVar8 = *piVar8 + 1;
        piVar7 = piVar8 + 4;
        bVar3 = false;
        uVar5 = 1;
        piVar8[6] = 0;
        piVar8[1] = 0;
      }
      if (lVar6 == 0) {
        iVar2 = param_2[2];
      }
      else {
        iVar2 = piVar8[-8];
      }
      local_58 = (long)iVar2;
      lVar6 = lVar6 + 1;
      FUN_0015be80(lVar1,piVar7,uVar5);
      FUN_0015be80(lVar1,piVar7,local_58);
      FUN_0015be80(lVar1,piVar7,param_3);
      *(long *)(piVar8 + 2) = param_3;
      piVar8[1] = 1;
    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);
  }
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV qword ptr [RSP + 0x8],RSI
MOV ESI,dword ptr [RDI + 0x34]
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x28],RAX
XOR EAX,EAX
LEA RAX,[RSP + 0x20]
MOV qword ptr [RSP + 0x18],RAX
TEST ESI,ESI
JNZ 0x001bfbf5
MOV R10,RDI
MOV RBP,RDX
LEA RBX,[RDI + 0x34]
XOR R12D,R12D
NOP dword ptr [RAX]
MOV RAX,qword ptr [RSP + 0x8]
MOV R13,R12
SHL R13,0x5
MOV R15,qword ptr [RAX + 0x58]
MOV RAX,qword ptr [R10]
ADD R15,R13
MOV EAX,dword ptr [RAX + 0x7c]
CMP dword ptr [R15 + 0x18],EAX
JGE 0x001bfc20
MOV EAX,dword ptr [R15 + 0x4]
LEA R14,[R15 + 0x10]
TEST EAX,EAX
JZ 0x001bfd30
MOV RDX,RBP
MOV RSI,R14
SUB RDX,qword ptr [R15 + 0x8]
MOV RDI,RBX
CALL 0x0015be80
MOV dword ptr [R15 + 0x4],0x1
MOV qword ptr [R15 + 0x8],RBP
MOV RAX,qword ptr [RSP + 0x28]
XOR RAX,qword ptr FS:[0x28]
JNZ 0x001bfdb4
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV R14,qword ptr [RSP + 0x8]
MOV RAX,qword ptr [R15 + 0x10]
MOV RDI,R10
MOV qword ptr [RSP],R10
MOV byte ptr [RAX],0x1
MOVSXD RSI,dword ptr [R14]
MOV RAX,0x1000000000
MOV ECX,dword ptr [R15 + 0x18]
MOV RDX,qword ptr [R15 + 0x10]
SHL RSI,0x25
ADD RSI,RAX
MOV RAX,R12
SHL RAX,0x1f
ADD RSI,RAX
MOVSXD RAX,dword ptr [R15]
ADD RSI,RAX
CALL 0x001bf990
LEA RDX,[R14 + 0x58]
LEA RSI,[R14 + 0x54]
MOV RDI,RBX
LEA ECX,[R12 + 0x2]
CALL 0x0015cb60
MOV R10,qword ptr [RSP]
MOV R15,qword ptr [R14 + 0x58]
MOV ECX,dword ptr [R10 + 0x34]
ADD R15,R13
TEST ECX,ECX
JNZ 0x001bfc98
MOV EDX,dword ptr [R15 + 0x38]
TEST EDX,EDX
JZ 0x001bfd40
ADD dword ptr [R15],0x1
LEA R14,[R15 + 0x10]
XOR R13D,R13D
MOV EDX,0x1
MOV dword ptr [R15 + 0x18],0x0
MOV dword ptr [R15 + 0x4],0x0
TEST R12,R12
JNZ 0x001bfd20
MOV RAX,qword ptr [RSP + 0x8]
MOVSXD RAX,dword ptr [RAX + 0x8]
MOV qword ptr [RSP + 0x10],RAX
MOV RSI,R14
MOV RDI,RBX
MOV qword ptr [RSP],R10
ADD R12,0x1
CALL 0x0015be80
MOV RDX,qword ptr [RSP + 0x10]
MOV RSI,R14
MOV RDI,RBX
CALL 0x0015be80
MOV RDX,RBP
MOV RSI,R14
MOV RDI,RBX
CALL 0x0015be80
MOV R10,qword ptr [RSP]
MOV qword ptr [R15 + 0x8],RBP
MOV dword ptr [R15 + 0x4],0x1
OR R13D,dword ptr [R10 + 0x34]
JZ 0x001bfba8
JMP 0x001bfbf5
MOVSXD RAX,dword ptr [R15 + -0x20]
MOV qword ptr [RSP + 0x10],RAX
JMP 0x001bfccb
XOR EDX,EDX
MOV R13D,0x1
JMP 0x001bfcb8
MOV R11,qword ptr [RSP + 0x18]
MOV RAX,qword ptr [R15 + 0x10]
LEA R13,[R15 + 0x30]
MOV RSI,R11
LEA RDI,[RAX + 0x1]
CALL 0x00110120
MOV RDX,qword ptr [R15 + 0x10]
MOVZX EAX,AL
LEA RDI,[RDX + RAX*0x1 + 0x1]
CALL 0x00110120
MOV EAX,dword ptr [R15]
XOR EDX,EDX
MOV RSI,R13
MOV RDI,RBX
MOV R14,qword ptr [RSP + 0x20]
MOV dword ptr [R15 + 0x20],EAX
CALL 0x0015be80
MOVSXD RDX,dword ptr [R15]
MOV RSI,R13
MOV RDI,RBX
CALL 0x0015be80
MOV RDX,R14
MOV RSI,R13
MOV RDI,RBX
CALL 0x0015be80
MOV qword ptr [R15 + 0x28],R14
MOV R10,qword ptr [RSP]
MOV dword ptr [R15 + 0x24],0x1
JMP 0x001bfc98
CALL 0x0010a140
(translation_unit "void FUN_001bfb60(long *param_1,int *param_2,long param_3)\n\n{\n  long lVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  undefined8 uVar5;\n  long lVar6;\n  int *piVar7;\n  int *piVar8;\n  long in_FS_OFFSET;\n  long local_58;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void FUN_001bfb60(long *param_1,int *param_2,long param_3)\n\n{\n  long lVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  undefined8 uVar5;\n  long lVar6;\n  int *piVar7;\n  int *piVar8;\n  long in_FS_OFFSET;\n  long local_58;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001bfb60(long *param_1,int *param_2,long param_3)" identifier (parameter_list "(long *param_1,int *param_2,long param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  undefined8 uVar5;\n  long lVar6;\n  int *piVar7;\n  int *piVar8;\n  long in_FS_OFFSET;\n  long local_58;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }" if (parenthesized_expression "(*(int *)((long)param_1 + 0x34) == 0)" ( (binary_expression "*(int *)((long)param_1 + 0x34) == 0" (pointer_expression "*(int *)((long)param_1 + 0x34)" * (cast_expression "(int *)((long)param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }" { (expression_statement "lVar1 = (long)param_1 + 0x34;" (assignment_expression "lVar1 = (long)param_1 + 0x34" identifier = (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal)) ;) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);" do (compound_statement "{\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    }" { (expression_statement "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);" (assignment_expression "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" identifier = (cast_expression "(int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" ( (binary_expression "*(long *)(param_2 + 0x16) + lVar6 * 0x20" (pointer_expression "*(long *)(param_2 + 0x16)" * (cast_expression "(long *)(param_2 + 0x16)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x16)" ( (binary_expression "param_2 + 0x16" identifier + number_literal) )))) + (binary_expression "lVar6 * 0x20" identifier * number_literal)) )))) ;) (if_statement "if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }" if (parenthesized_expression "(piVar8[6] < *(int *)(*param_1 + 0x7c))" ( (binary_expression "piVar8[6] < *(int *)(*param_1 + 0x7c)" (subscript_expression "piVar8[6]" identifier [ number_literal ]) < (pointer_expression "*(int *)(*param_1 + 0x7c)" * (cast_expression "(int *)(*param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x7c)" ( (binary_expression "*param_1 + 0x7c" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (compound_statement "{\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }" { (expression_statement "piVar7 = piVar8 + 4;" (assignment_expression "piVar7 = piVar8 + 4" identifier = (binary_expression "piVar8 + 4" identifier + number_literal)) ;) (if_statement "if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }" if (parenthesized_expression "(piVar8[1] != 0)" ( (binary_expression "piVar8[1] != 0" (subscript_expression "piVar8[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }" { (expression_statement "FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));" (call_expression "FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2))" identifier (argument_list "(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2))" ( identifier , identifier , (binary_expression "param_3 - *(long *)(piVar8 + 2)" identifier - (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) ))))) ))) ;) (expression_statement "piVar8[1] = 1;" (assignment_expression "piVar8[1] = 1" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(long *)(piVar8 + 2) = param_3;" (assignment_expression "*(long *)(piVar8 + 2) = param_3" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }" else (compound_statement "{\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }" { (expression_statement "**(undefined1 **)(piVar8 + 4) = 1;" (assignment_expression "**(undefined1 **)(piVar8 + 4) = 1" (pointer_expression "**(undefined1 **)(piVar8 + 4)" * (pointer_expression "*(undefined1 **)(piVar8 + 4)" * (cast_expression "(undefined1 **)(piVar8 + 4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);" (call_expression "FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6])" identifier (argument_list "(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6])" ( identifier , (binary_expression "((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8" (binary_expression "((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000" (binary_expression "((long)*param_2 << 0x25) + 0x1000000000" (parenthesized_expression "((long)*param_2 << 0x25)" ( (binary_expression "(long)*param_2 << 0x25" (cast_expression "(long)*param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*param_2" * identifier)) << number_literal) )) + number_literal) + (binary_expression "lVar6 * 0x80000000" identifier * number_literal)) + (cast_expression "(long)*piVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar8" * identifier))) , (pointer_expression "*(undefined8 *)(piVar8 + 4)" * (cast_expression "(undefined8 *)(piVar8 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) , (subscript_expression "piVar8[6]" identifier [ number_literal ]) ))) ;) (expression_statement "FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);" (call_expression "FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2)" identifier (argument_list "(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2)" ( identifier , (binary_expression "param_2 + 0x15" identifier + number_literal) , (binary_expression "param_2 + 0x16" identifier + number_literal) , (binary_expression "(int)lVar6 + 2" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ;) (expression_statement "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);" (assignment_expression "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" identifier = (cast_expression "(int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" ( (binary_expression "*(long *)(param_2 + 0x16) + lVar6 * 0x20" (pointer_expression "*(long *)(param_2 + 0x16)" * (cast_expression "(long *)(param_2 + 0x16)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x16)" ( (binary_expression "param_2 + 0x16" identifier + number_literal) )))) + (binary_expression "lVar6 * 0x20" identifier * number_literal)) )))) ;) (if_statement "if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }" if (parenthesized_expression "((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0))" ( (binary_expression "(*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)" (parenthesized_expression "(*(int *)((long)param_1 + 0x34) == 0)" ( (binary_expression "*(int *)((long)param_1 + 0x34) == 0" (pointer_expression "*(int *)((long)param_1 + 0x34)" * (cast_expression "(int *)((long)param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(piVar8[0xe] == 0)" ( (binary_expression "piVar8[0xe] == 0" (subscript_expression "piVar8[0xe]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }" { (expression_statement "piVar7 = piVar8 + 0xc;" (assignment_expression "piVar7 = piVar8 + 0xc" identifier = (binary_expression "piVar8 + 0xc" identifier + number_literal)) ;) (expression_statement "bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);" (assignment_expression "bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48)" identifier = (call_expression "FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48)" identifier (argument_list "(*(long *)(piVar8 + 4) + 1,&local_48)" ( (binary_expression "*(long *)(piVar8 + 4) + 1" (pointer_expression "*(long *)(piVar8 + 4)" * (cast_expression "(long *)(piVar8 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) + number_literal) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);" (call_expression "FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4)" identifier (argument_list "(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4)" ( (binary_expression "*(long *)(piVar8 + 4) + 1 + (ulong)bVar4" (binary_expression "*(long *)(piVar8 + 4) + 1" (pointer_expression "*(long *)(piVar8 + 4)" * (cast_expression "(long *)(piVar8 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) + number_literal) + (cast_expression "(ulong)bVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ))) ;) (expression_statement "uVar5 = local_48;" (assignment_expression "uVar5 = local_48" identifier = identifier) ;) (expression_statement "piVar8[8] = *piVar8;" (assignment_expression "piVar8[8] = *piVar8" (subscript_expression "piVar8[8]" identifier [ number_literal ]) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,0);" (call_expression "FUN_0015be80(lVar1,piVar7,0)" identifier (argument_list "(lVar1,piVar7,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,(long)*piVar8);" (call_expression "FUN_0015be80(lVar1,piVar7,(long)*piVar8)" identifier (argument_list "(lVar1,piVar7,(long)*piVar8)" ( identifier , identifier , (cast_expression "(long)*piVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar8" * identifier)) ))) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,uVar5);" (call_expression "FUN_0015be80(lVar1,piVar7,uVar5)" identifier (argument_list "(lVar1,piVar7,uVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(piVar8 + 10) = uVar5;" (assignment_expression "*(undefined8 *)(piVar8 + 10) = uVar5" (pointer_expression "*(undefined8 *)(piVar8 + 10)" * (cast_expression "(undefined8 *)(piVar8 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 10)" ( (binary_expression "piVar8 + 10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8[9] = 1;" (assignment_expression "piVar8[9] = 1" (subscript_expression "piVar8[9]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "*piVar8 = *piVar8 + 1;" (assignment_expression "*piVar8 = *piVar8 + 1" (pointer_expression "*piVar8" * identifier) = (binary_expression "*piVar8 + 1" (pointer_expression "*piVar8" * identifier) + number_literal)) ;) (expression_statement "piVar7 = piVar8 + 4;" (assignment_expression "piVar7 = piVar8 + 4" identifier = (binary_expression "piVar8 + 4" identifier + number_literal)) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "piVar8[6] = 0;" (assignment_expression "piVar8[6] = 0" (subscript_expression "piVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar8[1] = 0;" (assignment_expression "piVar8[1] = 0" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = number_literal) ;) }))) (if_statement "if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = param_2[2];\n      }" { (expression_statement "iVar2 = param_2[2];" (assignment_expression "iVar2 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        iVar2 = piVar8[-8];\n      }" else (compound_statement "{\n        iVar2 = piVar8[-8];\n      }" { (expression_statement "iVar2 = piVar8[-8];" (assignment_expression "iVar2 = piVar8[-8]" identifier = (subscript_expression "piVar8[-8]" identifier [ number_literal ])) ;) }))) (expression_statement "local_58 = (long)iVar2;" (assignment_expression "local_58 = (long)iVar2" identifier = (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,uVar5);" (call_expression "FUN_0015be80(lVar1,piVar7,uVar5)" identifier (argument_list "(lVar1,piVar7,uVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,local_58);" (call_expression "FUN_0015be80(lVar1,piVar7,local_58)" identifier (argument_list "(lVar1,piVar7,local_58)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,param_3);" (call_expression "FUN_0015be80(lVar1,piVar7,param_3)" identifier (argument_list "(lVar1,piVar7,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(long *)(piVar8 + 2) = param_3;" (assignment_expression "*(long *)(piVar8 + 2) = param_3" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8[1] = 1;" (assignment_expression "piVar8[1] = 1" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = number_literal) ;) }) while (parenthesized_expression "(!bVar3 && *(int *)((long)param_1 + 0x34) == 0)" ( (binary_expression "!bVar3 && *(int *)((long)param_1 + 0x34) == 0" (unary_expression "!bVar3" ! identifier) && (binary_expression "*(int *)((long)param_1 + 0x34) == 0" (pointer_expression "*(int *)((long)param_1 + 0x34)" * (cast_expression "(int *)((long)param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal)) )) ;) })) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void fts5WriteDlidxAppend(Fts5Index *p,Fts5SegWriter *pWriter,i64 iRowid)\n\n{\n  int *p_00;\n  int iVar1;\n  bool bVar2;\n  byte bVar3;\n  i64 iVar4;\n  u64 *v;\n  long lVar5;\n  Fts5Buffer *pFVar6;\n  Fts5DlidxWriter *pFVar7;\n  long in_FS_OFFSET;\n  long local_58;\n  i64 iRowid_1;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (p->rc == 0) {\n    p_00 = &p->rc;\n    lVar5 = 0;\n    do {\n      pFVar7 = pWriter->aDlidx + lVar5;\n      if ((pFVar7->buf).n < p->pConfig->pgsz) {\n        pFVar6 = &pFVar7->buf;\n        if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }\n        iVar4 = 0;\n        bVar2 = true;\n      }\n      else {\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }\n      if (lVar5 == 0) {\n        iVar1 = (pWriter->writer).pgno;\n      }\n      else {\n        iVar1 = pFVar7[-1].pgno;\n      }\n      local_58 = (long)iVar1;\n      lVar5 = lVar5 + 1;\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid);\n      pFVar7->iPrev = iRowid;\n      pFVar7->bPrevValid = 1;\n    } while (!bVar2 && p->rc == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void fts5WriteDlidxAppend(Fts5Index *p,Fts5SegWriter *pWriter,i64 iRowid)\n\n{\n  int *p_00;\n  int iVar1;\n  bool bVar2;\n  byte bVar3;\n  i64 iVar4;\n  u64 *v;\n  long lVar5;\n  Fts5Buffer *pFVar6;\n  Fts5DlidxWriter *pFVar7;\n  long in_FS_OFFSET;\n  long local_58;\n  i64 iRowid_1;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (p->rc == 0) {\n    p_00 = &p->rc;\n    lVar5 = 0;\n    do {\n      pFVar7 = pWriter->aDlidx + lVar5;\n      if ((pFVar7->buf).n < p->pConfig->pgsz) {\n        pFVar6 = &pFVar7->buf;\n        if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }\n        iVar4 = 0;\n        bVar2 = true;\n      }\n      else {\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }\n      if (lVar5 == 0) {\n        iVar1 = (pWriter->writer).pgno;\n      }\n      else {\n        iVar1 = pFVar7[-1].pgno;\n      }\n      local_58 = (long)iVar1;\n      lVar5 = lVar5 + 1;\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid);\n      pFVar7->iPrev = iRowid;\n      pFVar7->bPrevValid = 1;\n    } while (!bVar2 && p->rc == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "fts5WriteDlidxAppend(Fts5Index *p,Fts5SegWriter *pWriter,i64 iRowid)" identifier (parameter_list "(Fts5Index *p,Fts5SegWriter *pWriter,i64 iRowid)" ( (parameter_declaration "Fts5Index *p" type_identifier (pointer_declarator "*p" * identifier)) , (parameter_declaration "Fts5SegWriter *pWriter" type_identifier (pointer_declarator "*pWriter" * identifier)) , (parameter_declaration "i64 iRowid" type_identifier identifier) ))) (compound_statement "{\n  int *p_00;\n  int iVar1;\n  bool bVar2;\n  byte bVar3;\n  i64 iVar4;\n  u64 *v;\n  long lVar5;\n  Fts5Buffer *pFVar6;\n  Fts5DlidxWriter *pFVar7;\n  long in_FS_OFFSET;\n  long local_58;\n  i64 iRowid_1;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (p->rc == 0) {\n    p_00 = &p->rc;\n    lVar5 = 0;\n    do {\n      pFVar7 = pWriter->aDlidx + lVar5;\n      if ((pFVar7->buf).n < p->pConfig->pgsz) {\n        pFVar6 = &pFVar7->buf;\n        if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }\n        iVar4 = 0;\n        bVar2 = true;\n      }\n      else {\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }\n      if (lVar5 == 0) {\n        iVar1 = (pWriter->writer).pgno;\n      }\n      else {\n        iVar1 = pFVar7[-1].pgno;\n      }\n      local_58 = (long)iVar1;\n      lVar5 = lVar5 + 1;\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid);\n      pFVar7->iPrev = iRowid;\n      pFVar7->bPrevValid = 1;\n    } while (!bVar2 && p->rc == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "int *p_00;" primitive_type (pointer_declarator "*p_00" * identifier) ;) (declaration "int iVar1;" primitive_type identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "i64 iVar4;" type_identifier identifier ;) (declaration "u64 *v;" type_identifier (pointer_declarator "*v" * identifier) ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "Fts5Buffer *pFVar6;" type_identifier (pointer_declarator "*pFVar6" * identifier) ;) (declaration "Fts5DlidxWriter *pFVar7;" type_identifier (pointer_declarator "*pFVar7" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "i64 iRowid_1;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (p->rc == 0) {\n    p_00 = &p->rc;\n    lVar5 = 0;\n    do {\n      pFVar7 = pWriter->aDlidx + lVar5;\n      if ((pFVar7->buf).n < p->pConfig->pgsz) {\n        pFVar6 = &pFVar7->buf;\n        if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }\n        iVar4 = 0;\n        bVar2 = true;\n      }\n      else {\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }\n      if (lVar5 == 0) {\n        iVar1 = (pWriter->writer).pgno;\n      }\n      else {\n        iVar1 = pFVar7[-1].pgno;\n      }\n      local_58 = (long)iVar1;\n      lVar5 = lVar5 + 1;\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid);\n      pFVar7->iPrev = iRowid;\n      pFVar7->bPrevValid = 1;\n    } while (!bVar2 && p->rc == 0);\n  }" if (parenthesized_expression "(p->rc == 0)" ( (binary_expression "p->rc == 0" (field_expression "p->rc" identifier -> field_identifier) == number_literal) )) (compound_statement "{\n    p_00 = &p->rc;\n    lVar5 = 0;\n    do {\n      pFVar7 = pWriter->aDlidx + lVar5;\n      if ((pFVar7->buf).n < p->pConfig->pgsz) {\n        pFVar6 = &pFVar7->buf;\n        if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }\n        iVar4 = 0;\n        bVar2 = true;\n      }\n      else {\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }\n      if (lVar5 == 0) {\n        iVar1 = (pWriter->writer).pgno;\n      }\n      else {\n        iVar1 = pFVar7[-1].pgno;\n      }\n      local_58 = (long)iVar1;\n      lVar5 = lVar5 + 1;\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid);\n      pFVar7->iPrev = iRowid;\n      pFVar7->bPrevValid = 1;\n    } while (!bVar2 && p->rc == 0);\n  }" { (expression_statement "p_00 = &p->rc;" (assignment_expression "p_00 = &p->rc" identifier = (pointer_expression "&p->rc" & (field_expression "p->rc" identifier -> field_identifier))) ;) (expression_statement "lVar5 = 0;" (assignment_expression "lVar5 = 0" identifier = number_literal) ;) (do_statement "do {\n      pFVar7 = pWriter->aDlidx + lVar5;\n      if ((pFVar7->buf).n < p->pConfig->pgsz) {\n        pFVar6 = &pFVar7->buf;\n        if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }\n        iVar4 = 0;\n        bVar2 = true;\n      }\n      else {\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }\n      if (lVar5 == 0) {\n        iVar1 = (pWriter->writer).pgno;\n      }\n      else {\n        iVar1 = pFVar7[-1].pgno;\n      }\n      local_58 = (long)iVar1;\n      lVar5 = lVar5 + 1;\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid);\n      pFVar7->iPrev = iRowid;\n      pFVar7->bPrevValid = 1;\n    } while (!bVar2 && p->rc == 0);" do (compound_statement "{\n      pFVar7 = pWriter->aDlidx + lVar5;\n      if ((pFVar7->buf).n < p->pConfig->pgsz) {\n        pFVar6 = &pFVar7->buf;\n        if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }\n        iVar4 = 0;\n        bVar2 = true;\n      }\n      else {\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }\n      if (lVar5 == 0) {\n        iVar1 = (pWriter->writer).pgno;\n      }\n      else {\n        iVar1 = pFVar7[-1].pgno;\n      }\n      local_58 = (long)iVar1;\n      lVar5 = lVar5 + 1;\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58);\n      sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid);\n      pFVar7->iPrev = iRowid;\n      pFVar7->bPrevValid = 1;\n    }" { (expression_statement "pFVar7 = pWriter->aDlidx + lVar5;" (assignment_expression "pFVar7 = pWriter->aDlidx + lVar5" identifier = (binary_expression "pWriter->aDlidx + lVar5" (field_expression "pWriter->aDlidx" identifier -> field_identifier) + identifier)) ;) (if_statement "if ((pFVar7->buf).n < p->pConfig->pgsz) {\n        pFVar6 = &pFVar7->buf;\n        if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }\n        iVar4 = 0;\n        bVar2 = true;\n      }\n      else {\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }" if (parenthesized_expression "((pFVar7->buf).n < p->pConfig->pgsz)" ( (binary_expression "(pFVar7->buf).n < p->pConfig->pgsz" (field_expression "(pFVar7->buf).n" (parenthesized_expression "(pFVar7->buf)" ( (field_expression "pFVar7->buf" identifier -> field_identifier) )) . field_identifier) < (field_expression "p->pConfig->pgsz" (field_expression "p->pConfig" identifier -> field_identifier) -> field_identifier)) )) (compound_statement "{\n        pFVar6 = &pFVar7->buf;\n        if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }\n        iVar4 = 0;\n        bVar2 = true;\n      }" { (expression_statement "pFVar6 = &pFVar7->buf;" (assignment_expression "pFVar6 = &pFVar7->buf" identifier = (pointer_expression "&pFVar7->buf" & (field_expression "pFVar7->buf" identifier -> field_identifier))) ;) (if_statement "if (pFVar7->bPrevValid != 0) {\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }" if (parenthesized_expression "(pFVar7->bPrevValid != 0)" ( (binary_expression "pFVar7->bPrevValid != 0" (field_expression "pFVar7->bPrevValid" identifier -> field_identifier) != number_literal) )) (compound_statement "{\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);\n          pFVar7->bPrevValid = 1;\n          pFVar7->iPrev = iRowid;\n          break;\n        }" { (expression_statement "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev);" (call_expression "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid - pFVar7->iPrev)" identifier (argument_list "(p_00,pFVar6,iRowid - pFVar7->iPrev)" ( identifier , identifier , (binary_expression "iRowid - pFVar7->iPrev" identifier - (field_expression "pFVar7->iPrev" identifier -> field_identifier)) ))) ;) (expression_statement "pFVar7->bPrevValid = 1;" (assignment_expression "pFVar7->bPrevValid = 1" (field_expression "pFVar7->bPrevValid" identifier -> field_identifier) = number_literal) ;) (expression_statement "pFVar7->iPrev = iRowid;" (assignment_expression "pFVar7->iPrev = iRowid" (field_expression "pFVar7->iPrev" identifier -> field_identifier) = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) }) (else_clause "else {\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }" else (compound_statement "{\n        *(pFVar7->buf).p = '\x01';\n        fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);\n        fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));\n        pFVar7 = pWriter->aDlidx + lVar5;\n        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }\n        pFVar7->pgno = pFVar7->pgno + 1;\n        pFVar6 = &pFVar7->buf;\n        bVar2 = false;\n        iVar4 = 1;\n        (pFVar7->buf).n = 0;\n        pFVar7->bPrevValid = 0;\n      }" { (expression_statement "*(pFVar7->buf).p = '\x01';" (assignment_expression "*(pFVar7->buf).p = '\x01'" (pointer_expression "*(pFVar7->buf).p" * (field_expression "(pFVar7->buf).p" (parenthesized_expression "(pFVar7->buf)" ( (field_expression "pFVar7->buf" identifier -> field_identifier) )) . field_identifier)) = (char_literal "'\x01'" ' escape_sequence ')) ;) (expression_statement "fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);" (call_expression "fts5DataWrite(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n)" identifier (argument_list "(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n)" ( identifier , (binary_expression "((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000 +\n                        (long)pFVar7->pgno" (binary_expression "((long)pWriter->iSegid << 0x25) + 0x1000000000 + lVar5 * 0x80000000" (binary_expression "((long)pWriter->iSegid << 0x25) + 0x1000000000" (parenthesized_expression "((long)pWriter->iSegid << 0x25)" ( (binary_expression "(long)pWriter->iSegid << 0x25" (cast_expression "(long)pWriter->iSegid" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pWriter->iSegid" identifier -> field_identifier)) << number_literal) )) + number_literal) + (binary_expression "lVar5 * 0x80000000" identifier * number_literal)) + (cast_expression "(long)pFVar7->pgno" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pFVar7->pgno" identifier -> field_identifier))) , (field_expression "(pFVar7->buf).p" (parenthesized_expression "(pFVar7->buf)" ( (field_expression "pFVar7->buf" identifier -> field_identifier) )) . field_identifier) , (field_expression "(pFVar7->buf).n" (parenthesized_expression "(pFVar7->buf)" ( (field_expression "pFVar7->buf" identifier -> field_identifier) )) . field_identifier) ))) ;) (expression_statement "fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2));" (call_expression "fts5WriteDlidxGrow((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2))" identifier (argument_list "((Fts5Index *)p_00,(Fts5SegWriter *)&pWriter->nDlidx,(int)pWriter + 0x58,\n                           (Fts5SegWriter *)(ulong)((int)lVar5 + 2))" ( (cast_expression "(Fts5Index *)p_00" ( (type_descriptor "Fts5Index *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(Fts5SegWriter *)&pWriter->nDlidx" ( (type_descriptor "Fts5SegWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pWriter->nDlidx" & (field_expression "pWriter->nDlidx" identifier -> field_identifier))) , (binary_expression "(int)pWriter + 0x58" (cast_expression "(int)pWriter" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) , (cast_expression "(Fts5SegWriter *)(ulong)((int)lVar5 + 2)" ( (type_descriptor "Fts5SegWriter *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(ulong)((int)lVar5 + 2)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((int)lVar5 + 2)" ( (binary_expression "(int)lVar5 + 2" (cast_expression "(int)lVar5" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) ))) ;) (expression_statement "pFVar7 = pWriter->aDlidx + lVar5;" (assignment_expression "pFVar7 = pWriter->aDlidx + lVar5" identifier = (binary_expression "pWriter->aDlidx + lVar5" (field_expression "pWriter->aDlidx" identifier -> field_identifier) + identifier)) ;) (if_statement "if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }" if (parenthesized_expression "((p->rc == 0) && (pFVar7[1].buf.n == 0))" ( (binary_expression "(p->rc == 0) && (pFVar7[1].buf.n == 0)" (parenthesized_expression "(p->rc == 0)" ( (binary_expression "p->rc == 0" (field_expression "p->rc" identifier -> field_identifier) == number_literal) )) && (parenthesized_expression "(pFVar7[1].buf.n == 0)" ( (binary_expression "pFVar7[1].buf.n == 0" (field_expression "pFVar7[1].buf.n" (field_expression "pFVar7[1].buf" (subscript_expression "pFVar7[1]" identifier [ number_literal ]) . field_identifier) . field_identifier) == number_literal) ))) )) (compound_statement "{\n          pFVar6 = &pFVar7[1].buf;\n          v = (u64 *)&iRowid_1;\n          bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);\n          sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);\n          iVar4 = iRowid_1;\n          pFVar7[1].pgno = pFVar7->pgno;\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);\n          sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);\n          pFVar7[1].iPrev = iVar4;\n          pFVar7[1].bPrevValid = 1;\n        }" { (expression_statement "pFVar6 = &pFVar7[1].buf;" (assignment_expression "pFVar6 = &pFVar7[1].buf" identifier = (pointer_expression "&pFVar7[1].buf" & (field_expression "pFVar7[1].buf" (subscript_expression "pFVar7[1]" identifier [ number_literal ]) . field_identifier))) ;) (expression_statement "v = (u64 *)&iRowid_1;" (assignment_expression "v = (u64 *)&iRowid_1" identifier = (cast_expression "(u64 *)&iRowid_1" ( (type_descriptor "u64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&iRowid_1" & identifier))) ;) (expression_statement "bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1);" (assignment_expression "bVar3 = sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1)" identifier = (call_expression "sqlite3GetVarint((pFVar7->buf).p + 1,(u64 *)&iRowid_1)" identifier (argument_list "((pFVar7->buf).p + 1,(u64 *)&iRowid_1)" ( (binary_expression "(pFVar7->buf).p + 1" (field_expression "(pFVar7->buf).p" (parenthesized_expression "(pFVar7->buf)" ( (field_expression "pFVar7->buf" identifier -> field_identifier) )) . field_identifier) + number_literal) , (cast_expression "(u64 *)&iRowid_1" ( (type_descriptor "u64 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&iRowid_1" & identifier)) )))) ;) (expression_statement "sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v);" (call_expression "sqlite3GetVarint((pFVar7->buf).p + (ulong)bVar3 + 1,v)" identifier (argument_list "((pFVar7->buf).p + (ulong)bVar3 + 1,v)" ( (binary_expression "(pFVar7->buf).p + (ulong)bVar3 + 1" (binary_expression "(pFVar7->buf).p + (ulong)bVar3" (field_expression "(pFVar7->buf).p" (parenthesized_expression "(pFVar7->buf)" ( (field_expression "pFVar7->buf" identifier -> field_identifier) )) . field_identifier) + (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) + number_literal) , identifier ))) ;) (expression_statement "iVar4 = iRowid_1;" (assignment_expression "iVar4 = iRowid_1" identifier = identifier) ;) (expression_statement "pFVar7[1].pgno = pFVar7->pgno;" (assignment_expression "pFVar7[1].pgno = pFVar7->pgno" (field_expression "pFVar7[1].pgno" (subscript_expression "pFVar7[1]" identifier [ number_literal ]) . field_identifier) = (field_expression "pFVar7->pgno" identifier -> field_identifier)) ;) (expression_statement "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0);" (call_expression "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,0)" identifier (argument_list "(p_00,pFVar6,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno);" (call_expression "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,(long)pFVar7->pgno)" identifier (argument_list "(p_00,pFVar6,(long)pFVar7->pgno)" ( identifier , identifier , (cast_expression "(long)pFVar7->pgno" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "pFVar7->pgno" identifier -> field_identifier)) ))) ;) (expression_statement "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);" (call_expression "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4)" identifier (argument_list "(p_00,pFVar6,iVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "pFVar7[1].iPrev = iVar4;" (assignment_expression "pFVar7[1].iPrev = iVar4" (field_expression "pFVar7[1].iPrev" (subscript_expression "pFVar7[1]" identifier [ number_literal ]) . field_identifier) = identifier) ;) (expression_statement "pFVar7[1].bPrevValid = 1;" (assignment_expression "pFVar7[1].bPrevValid = 1" (field_expression "pFVar7[1].bPrevValid" (subscript_expression "pFVar7[1]" identifier [ number_literal ]) . field_identifier) = number_literal) ;) })) (expression_statement "pFVar7->pgno = pFVar7->pgno + 1;" (assignment_expression "pFVar7->pgno = pFVar7->pgno + 1" (field_expression "pFVar7->pgno" identifier -> field_identifier) = (binary_expression "pFVar7->pgno + 1" (field_expression "pFVar7->pgno" identifier -> field_identifier) + number_literal)) ;) (expression_statement "pFVar6 = &pFVar7->buf;" (assignment_expression "pFVar6 = &pFVar7->buf" identifier = (pointer_expression "&pFVar7->buf" & (field_expression "pFVar7->buf" identifier -> field_identifier))) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (expression_statement "(pFVar7->buf).n = 0;" (assignment_expression "(pFVar7->buf).n = 0" (field_expression "(pFVar7->buf).n" (parenthesized_expression "(pFVar7->buf)" ( (field_expression "pFVar7->buf" identifier -> field_identifier) )) . field_identifier) = number_literal) ;) (expression_statement "pFVar7->bPrevValid = 0;" (assignment_expression "pFVar7->bPrevValid = 0" (field_expression "pFVar7->bPrevValid" identifier -> field_identifier) = number_literal) ;) }))) (if_statement "if (lVar5 == 0) {\n        iVar1 = (pWriter->writer).pgno;\n      }\n      else {\n        iVar1 = pFVar7[-1].pgno;\n      }" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar1 = (pWriter->writer).pgno;\n      }" { (expression_statement "iVar1 = (pWriter->writer).pgno;" (assignment_expression "iVar1 = (pWriter->writer).pgno" identifier = (field_expression "(pWriter->writer).pgno" (parenthesized_expression "(pWriter->writer)" ( (field_expression "pWriter->writer" identifier -> field_identifier) )) . field_identifier)) ;) }) (else_clause "else {\n        iVar1 = pFVar7[-1].pgno;\n      }" else (compound_statement "{\n        iVar1 = pFVar7[-1].pgno;\n      }" { (expression_statement "iVar1 = pFVar7[-1].pgno;" (assignment_expression "iVar1 = pFVar7[-1].pgno" identifier = (field_expression "pFVar7[-1].pgno" (subscript_expression "pFVar7[-1]" identifier [ number_literal ]) . field_identifier)) ;) }))) (expression_statement "local_58 = (long)iVar1;" (assignment_expression "local_58 = (long)iVar1" identifier = (cast_expression "(long)iVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "lVar5 = lVar5 + 1;" (assignment_expression "lVar5 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) (expression_statement "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4);" (call_expression "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iVar4)" identifier (argument_list "(p_00,pFVar6,iVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58);" (call_expression "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,local_58)" identifier (argument_list "(p_00,pFVar6,local_58)" ( identifier , identifier , identifier ))) ;) (expression_statement "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid);" (call_expression "sqlite3Fts5BufferAppendVarint(p_00,pFVar6,iRowid)" identifier (argument_list "(p_00,pFVar6,iRowid)" ( identifier , identifier , identifier ))) ;) (expression_statement "pFVar7->iPrev = iRowid;" (assignment_expression "pFVar7->iPrev = iRowid" (field_expression "pFVar7->iPrev" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar7->bPrevValid = 1;" (assignment_expression "pFVar7->bPrevValid = 1" (field_expression "pFVar7->bPrevValid" identifier -> field_identifier) = number_literal) ;) }) while (parenthesized_expression "(!bVar2 && p->rc == 0)" ( (binary_expression "!bVar2 && p->rc == 0" (unary_expression "!bVar2" ! identifier) && (binary_expression "p->rc == 0" (field_expression "p->rc" identifier -> field_identifier) == number_literal)) )) ;) })) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_001bfb60(long *param_1,int *param_2,long param_3)\n\n{\n  long lVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  undefined8 uVar5;\n  long lVar6;\n  int *piVar7;\n  int *piVar8;\n  long in_FS_OFFSET;\n  long local_58;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void FUN_001bfb60(long *param_1,int *param_2,long param_3)\n\n{\n  long lVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  undefined8 uVar5;\n  long lVar6;\n  int *piVar7;\n  int *piVar8;\n  long in_FS_OFFSET;\n  long local_58;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_001bfb60(long *param_1,int *param_2,long param_3)" identifier (parameter_list "(long *param_1,int *param_2,long param_3)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  undefined8 uVar5;\n  long lVar6;\n  int *piVar7;\n  int *piVar8;\n  long in_FS_OFFSET;\n  long local_58;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar2;" primitive_type identifier ;) (declaration "bool bVar3;" primitive_type identifier ;) (declaration "byte bVar4;" type_identifier identifier ;) (declaration "undefined8 uVar5;" type_identifier identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "long local_58;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_48;" type_identifier identifier ;) (declaration "long local_40;" (sized_type_specifier "long" long) identifier ;) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (if_statement "if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }" if (parenthesized_expression "(*(int *)((long)param_1 + 0x34) == 0)" ( (binary_expression "*(int *)((long)param_1 + 0x34) == 0" (pointer_expression "*(int *)((long)param_1 + 0x34)" * (cast_expression "(int *)((long)param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }" { (expression_statement "lVar1 = (long)param_1 + 0x34;" (assignment_expression "lVar1 = (long)param_1 + 0x34" identifier = (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal)) ;) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" identifier = number_literal) ;) (do_statement "do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);" do (compound_statement "{\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    }" { (expression_statement "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);" (assignment_expression "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" identifier = (cast_expression "(int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" ( (binary_expression "*(long *)(param_2 + 0x16) + lVar6 * 0x20" (pointer_expression "*(long *)(param_2 + 0x16)" * (cast_expression "(long *)(param_2 + 0x16)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x16)" ( (binary_expression "param_2 + 0x16" identifier + number_literal) )))) + (binary_expression "lVar6 * 0x20" identifier * number_literal)) )))) ;) (if_statement "if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }" if (parenthesized_expression "(piVar8[6] < *(int *)(*param_1 + 0x7c))" ( (binary_expression "piVar8[6] < *(int *)(*param_1 + 0x7c)" (subscript_expression "piVar8[6]" identifier [ number_literal ]) < (pointer_expression "*(int *)(*param_1 + 0x7c)" * (cast_expression "(int *)(*param_1 + 0x7c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_1 + 0x7c)" ( (binary_expression "*param_1 + 0x7c" (pointer_expression "*param_1" * identifier) + number_literal) ))))) )) (compound_statement "{\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }" { (expression_statement "piVar7 = piVar8 + 4;" (assignment_expression "piVar7 = piVar8 + 4" identifier = (binary_expression "piVar8 + 4" identifier + number_literal)) ;) (if_statement "if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }" if (parenthesized_expression "(piVar8[1] != 0)" ( (binary_expression "piVar8[1] != 0" (subscript_expression "piVar8[1]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }" { (expression_statement "FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));" (call_expression "FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2))" identifier (argument_list "(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2))" ( identifier , identifier , (binary_expression "param_3 - *(long *)(piVar8 + 2)" identifier - (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) ))))) ))) ;) (expression_statement "piVar8[1] = 1;" (assignment_expression "piVar8[1] = 1" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(long *)(piVar8 + 2) = param_3;" (assignment_expression "*(long *)(piVar8 + 2) = param_3" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (break_statement "break;" break ;) })) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" identifier = number_literal) ;) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" identifier = true) ;) }) (else_clause "else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }" else (compound_statement "{\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }" { (expression_statement "**(undefined1 **)(piVar8 + 4) = 1;" (assignment_expression "**(undefined1 **)(piVar8 + 4) = 1" (pointer_expression "**(undefined1 **)(piVar8 + 4)" * (pointer_expression "*(undefined1 **)(piVar8 + 4)" * (cast_expression "(undefined1 **)(piVar8 + 4)" ( (type_descriptor "undefined1 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) ))))) = number_literal) ;) (expression_statement "FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);" (call_expression "FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6])" identifier (argument_list "(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6])" ( identifier , (binary_expression "((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8" (binary_expression "((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000" (binary_expression "((long)*param_2 << 0x25) + 0x1000000000" (parenthesized_expression "((long)*param_2 << 0x25)" ( (binary_expression "(long)*param_2 << 0x25" (cast_expression "(long)*param_2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*param_2" * identifier)) << number_literal) )) + number_literal) + (binary_expression "lVar6 * 0x80000000" identifier * number_literal)) + (cast_expression "(long)*piVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar8" * identifier))) , (pointer_expression "*(undefined8 *)(piVar8 + 4)" * (cast_expression "(undefined8 *)(piVar8 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) , (subscript_expression "piVar8[6]" identifier [ number_literal ]) ))) ;) (expression_statement "FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);" (call_expression "FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2)" identifier (argument_list "(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2)" ( identifier , (binary_expression "param_2 + 0x15" identifier + number_literal) , (binary_expression "param_2 + 0x16" identifier + number_literal) , (binary_expression "(int)lVar6 + 2" (cast_expression "(int)lVar6" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) ;) (expression_statement "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);" (assignment_expression "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" identifier = (cast_expression "(int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" ( (binary_expression "*(long *)(param_2 + 0x16) + lVar6 * 0x20" (pointer_expression "*(long *)(param_2 + 0x16)" * (cast_expression "(long *)(param_2 + 0x16)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 0x16)" ( (binary_expression "param_2 + 0x16" identifier + number_literal) )))) + (binary_expression "lVar6 * 0x20" identifier * number_literal)) )))) ;) (if_statement "if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }" if (parenthesized_expression "((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0))" ( (binary_expression "(*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)" (parenthesized_expression "(*(int *)((long)param_1 + 0x34) == 0)" ( (binary_expression "*(int *)((long)param_1 + 0x34) == 0" (pointer_expression "*(int *)((long)param_1 + 0x34)" * (cast_expression "(int *)((long)param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(piVar8[0xe] == 0)" ( (binary_expression "piVar8[0xe] == 0" (subscript_expression "piVar8[0xe]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }" { (expression_statement "piVar7 = piVar8 + 0xc;" (assignment_expression "piVar7 = piVar8 + 0xc" identifier = (binary_expression "piVar8 + 0xc" identifier + number_literal)) ;) (expression_statement "bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);" (assignment_expression "bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48)" identifier = (call_expression "FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48)" identifier (argument_list "(*(long *)(piVar8 + 4) + 1,&local_48)" ( (binary_expression "*(long *)(piVar8 + 4) + 1" (pointer_expression "*(long *)(piVar8 + 4)" * (cast_expression "(long *)(piVar8 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) + number_literal) , (pointer_expression "&local_48" & identifier) )))) ;) (expression_statement "FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);" (call_expression "FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4)" identifier (argument_list "(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4)" ( (binary_expression "*(long *)(piVar8 + 4) + 1 + (ulong)bVar4" (binary_expression "*(long *)(piVar8 + 4) + 1" (pointer_expression "*(long *)(piVar8 + 4)" * (cast_expression "(long *)(piVar8 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 4)" ( (binary_expression "piVar8 + 4" identifier + number_literal) )))) + number_literal) + (cast_expression "(ulong)bVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ))) ;) (expression_statement "uVar5 = local_48;" (assignment_expression "uVar5 = local_48" identifier = identifier) ;) (expression_statement "piVar8[8] = *piVar8;" (assignment_expression "piVar8[8] = *piVar8" (subscript_expression "piVar8[8]" identifier [ number_literal ]) = (pointer_expression "*piVar8" * identifier)) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,0);" (call_expression "FUN_0015be80(lVar1,piVar7,0)" identifier (argument_list "(lVar1,piVar7,0)" ( identifier , identifier , number_literal ))) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,(long)*piVar8);" (call_expression "FUN_0015be80(lVar1,piVar7,(long)*piVar8)" identifier (argument_list "(lVar1,piVar7,(long)*piVar8)" ( identifier , identifier , (cast_expression "(long)*piVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*piVar8" * identifier)) ))) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,uVar5);" (call_expression "FUN_0015be80(lVar1,piVar7,uVar5)" identifier (argument_list "(lVar1,piVar7,uVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(undefined8 *)(piVar8 + 10) = uVar5;" (assignment_expression "*(undefined8 *)(piVar8 + 10) = uVar5" (pointer_expression "*(undefined8 *)(piVar8 + 10)" * (cast_expression "(undefined8 *)(piVar8 + 10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 10)" ( (binary_expression "piVar8 + 10" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8[9] = 1;" (assignment_expression "piVar8[9] = 1" (subscript_expression "piVar8[9]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "*piVar8 = *piVar8 + 1;" (assignment_expression "*piVar8 = *piVar8 + 1" (pointer_expression "*piVar8" * identifier) = (binary_expression "*piVar8 + 1" (pointer_expression "*piVar8" * identifier) + number_literal)) ;) (expression_statement "piVar7 = piVar8 + 4;" (assignment_expression "piVar7 = piVar8 + 4" identifier = (binary_expression "piVar8 + 4" identifier + number_literal)) ;) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" identifier = false) ;) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" identifier = number_literal) ;) (expression_statement "piVar8[6] = 0;" (assignment_expression "piVar8[6] = 0" (subscript_expression "piVar8[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "piVar8[1] = 0;" (assignment_expression "piVar8[1] = 0" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = number_literal) ;) }))) (if_statement "if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }" if (parenthesized_expression "(lVar6 == 0)" ( (binary_expression "lVar6 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar2 = param_2[2];\n      }" { (expression_statement "iVar2 = param_2[2];" (assignment_expression "iVar2 = param_2[2]" identifier = (subscript_expression "param_2[2]" identifier [ number_literal ])) ;) }) (else_clause "else {\n        iVar2 = piVar8[-8];\n      }" else (compound_statement "{\n        iVar2 = piVar8[-8];\n      }" { (expression_statement "iVar2 = piVar8[-8];" (assignment_expression "iVar2 = piVar8[-8]" identifier = (subscript_expression "piVar8[-8]" identifier [ number_literal ])) ;) }))) (expression_statement "local_58 = (long)iVar2;" (assignment_expression "local_58 = (long)iVar2" identifier = (cast_expression "(long)iVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,uVar5);" (call_expression "FUN_0015be80(lVar1,piVar7,uVar5)" identifier (argument_list "(lVar1,piVar7,uVar5)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,local_58);" (call_expression "FUN_0015be80(lVar1,piVar7,local_58)" identifier (argument_list "(lVar1,piVar7,local_58)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_0015be80(lVar1,piVar7,param_3);" (call_expression "FUN_0015be80(lVar1,piVar7,param_3)" identifier (argument_list "(lVar1,piVar7,param_3)" ( identifier , identifier , identifier ))) ;) (expression_statement "*(long *)(piVar8 + 2) = param_3;" (assignment_expression "*(long *)(piVar8 + 2) = param_3" (pointer_expression "*(long *)(piVar8 + 2)" * (cast_expression "(long *)(piVar8 + 2)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar8 + 2)" ( (binary_expression "piVar8 + 2" identifier + number_literal) )))) = identifier) ;) (expression_statement "piVar8[1] = 1;" (assignment_expression "piVar8[1] = 1" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = number_literal) ;) }) while (parenthesized_expression "(!bVar3 && *(int *)((long)param_1 + 0x34) == 0)" ( (binary_expression "!bVar3 && *(int *)((long)param_1 + 0x34) == 0" (unary_expression "!bVar3" ! identifier) && (binary_expression "*(int *)((long)param_1 + 0x34) == 0" (pointer_expression "*(int *)((long)param_1 + 0x34)" * (cast_expression "(int *)((long)param_1 + 0x34)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x34)" ( (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal)) )) ;) })) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (binary_expression IDENT - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) = LIT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) << LIT) )) + LIT) + (binary_expression IDENT * LIT)) + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (binary_expression IDENT + LIT) , (binary_expression IDENT + LIT) , (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + (binary_expression IDENT * LIT)) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , (pointer_expression & IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression * IDENT)) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (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 (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }))) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) }) while (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT)) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_001bfb60(long *param_1,int *param_2,long param_3)\n\n{\n  long lVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  undefined8 uVar5;\n  long lVar6;\n  int *piVar7;\n  int *piVar8;\n  long in_FS_OFFSET;\n  long local_58;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_001bfb60(long *param_1,int *param_2,long param_3)" (identifier "FUN_001bfb60") (parameter_list "(long *param_1,int *param_2,long param_3)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) () ")"))) (compound_statement "{\n  long lVar1;\n  int iVar2;\n  bool bVar3;\n  byte bVar4;\n  undefined8 uVar5;\n  long lVar6;\n  int *piVar7;\n  int *piVar8;\n  long in_FS_OFFSET;\n  long local_58;\n  undefined8 local_48;\n  long local_40;\n  \n  local_40 = *(long *)(in_FS_OFFSET + 0x28);\n  if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }\n  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" ({ "{") (declaration "long lVar1;" (sized_type_specifier "long" (long "long")) (identifier "lVar1") (; ";")) (declaration "int iVar2;" (primitive_type "int") (identifier "iVar2") (; ";")) (declaration "bool bVar3;" (primitive_type "bool") (identifier "bVar3") (; ";")) (declaration "byte bVar4;" (type_identifier "byte") (identifier "bVar4") (; ";")) (declaration "undefined8 uVar5;" (type_identifier "undefined8") (identifier "uVar5") (; ";")) (declaration "long lVar6;" (sized_type_specifier "long" (long "long")) (identifier "lVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "long local_58;" (sized_type_specifier "long" (long "long")) (identifier "local_58") (; ";")) (declaration "undefined8 local_48;" (type_identifier "undefined8") (identifier "local_48") (; ";")) (declaration "long local_40;" (sized_type_specifier "long" (long "long")) (identifier "local_40") (; ";")) (expression_statement "local_40 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_40 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (if_statement "if (*(int *)((long)param_1 + 0x34) == 0) {\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }" (if "if") (parenthesized_expression "(*(int *)((long)param_1 + 0x34) == 0)" (( "(") (binary_expression "*(int *)((long)param_1 + 0x34) == 0" (pointer_expression "*(int *)((long)param_1 + 0x34)" (* "*") (cast_expression "(int *)((long)param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x34)" (( "(") (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    lVar1 = (long)param_1 + 0x34;\n    lVar6 = 0;\n    do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);\n  }" ({ "{") (expression_statement "lVar1 = (long)param_1 + 0x34;" (assignment_expression "lVar1 = (long)param_1 + 0x34" (identifier "lVar1") (= "=") (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x34"))) (; ";")) (expression_statement "lVar6 = 0;" (assignment_expression "lVar6 = 0" (identifier "lVar6") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);" (do "do") (compound_statement "{\n      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }\n      if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }\n      local_58 = (long)iVar2;\n      lVar6 = lVar6 + 1;\n      FUN_0015be80(lVar1,piVar7,uVar5);\n      FUN_0015be80(lVar1,piVar7,local_58);\n      FUN_0015be80(lVar1,piVar7,param_3);\n      *(long *)(piVar8 + 2) = param_3;\n      piVar8[1] = 1;\n    }" ({ "{") (expression_statement "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);" (assignment_expression "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" (identifier "piVar8") (= "=") (cast_expression "(int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" (( "(") (binary_expression "*(long *)(param_2 + 0x16) + lVar6 * 0x20" (pointer_expression "*(long *)(param_2 + 0x16)" (* "*") (cast_expression "(long *)(param_2 + 0x16)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x16)" (( "(") (binary_expression "param_2 + 0x16" (identifier "param_2") (+ "+") (number_literal "0x16")) () ")")))) (+ "+") (binary_expression "lVar6 * 0x20" (identifier "lVar6") (* "*") (number_literal "0x20"))) () ")")))) (; ";")) (if_statement "if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }\n      else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }" (if "if") (parenthesized_expression "(piVar8[6] < *(int *)(*param_1 + 0x7c))" (( "(") (binary_expression "piVar8[6] < *(int *)(*param_1 + 0x7c)" (subscript_expression "piVar8[6]" (identifier "piVar8") ([ "[") (number_literal "6") (] "]")) (< "<") (pointer_expression "*(int *)(*param_1 + 0x7c)" (* "*") (cast_expression "(int *)(*param_1 + 0x7c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_1 + 0x7c)" (( "(") (binary_expression "*param_1 + 0x7c" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (+ "+") (number_literal "0x7c")) () ")"))))) () ")")) (compound_statement "{\n        piVar7 = piVar8 + 4;\n        if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }\n        uVar5 = 0;\n        bVar3 = true;\n      }" ({ "{") (expression_statement "piVar7 = piVar8 + 4;" (assignment_expression "piVar7 = piVar8 + 4" (identifier "piVar7") (= "=") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (piVar8[1] != 0) {\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }" (if "if") (parenthesized_expression "(piVar8[1] != 0)" (( "(") (binary_expression "piVar8[1] != 0" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));\n          piVar8[1] = 1;\n          *(long *)(piVar8 + 2) = param_3;\n          break;\n        }" ({ "{") (expression_statement "FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));" (call_expression "FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2))" (identifier "FUN_0015be80") (argument_list "(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2))" (( "(") (identifier "lVar1") (, ",") (identifier "piVar7") (, ",") (binary_expression "param_3 - *(long *)(piVar8 + 2)" (identifier "param_3") (- "-") (pointer_expression "*(long *)(piVar8 + 2)" (* "*") (cast_expression "(long *)(piVar8 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")"))))) () ")"))) (; ";")) (expression_statement "piVar8[1] = 1;" (assignment_expression "piVar8[1] = 1" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (expression_statement "*(long *)(piVar8 + 2) = param_3;" (assignment_expression "*(long *)(piVar8 + 2) = param_3" (pointer_expression "*(long *)(piVar8 + 2)" (* "*") (cast_expression "(long *)(piVar8 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "uVar5 = 0;" (assignment_expression "uVar5 = 0" (identifier "uVar5") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar3 = true;" (assignment_expression "bVar3 = true" (identifier "bVar3") (= "=") (true "true")) (; ";")) (} "}")) (else_clause "else {\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }" (else "else") (compound_statement "{\n        **(undefined1 **)(piVar8 + 4) = 1;\n        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);\n        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);\n        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);\n        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }\n        *piVar8 = *piVar8 + 1;\n        piVar7 = piVar8 + 4;\n        bVar3 = false;\n        uVar5 = 1;\n        piVar8[6] = 0;\n        piVar8[1] = 0;\n      }" ({ "{") (expression_statement "**(undefined1 **)(piVar8 + 4) = 1;" (assignment_expression "**(undefined1 **)(piVar8 + 4) = 1" (pointer_expression "**(undefined1 **)(piVar8 + 4)" (* "*") (pointer_expression "*(undefined1 **)(piVar8 + 4)" (* "*") (cast_expression "(undefined1 **)(piVar8 + 4)" (( "(") (type_descriptor "undefined1 **" (type_identifier "undefined1") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")"))))) (= "=") (number_literal "1")) (; ";")) (expression_statement "FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);" (call_expression "FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6])" (identifier "FUN_001bf990") (argument_list "(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6])" (( "(") (identifier "param_1") (, ",") (binary_expression "((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +\n                             (long)*piVar8" (binary_expression "((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000" (binary_expression "((long)*param_2 << 0x25) + 0x1000000000" (parenthesized_expression "((long)*param_2 << 0x25)" (( "(") (binary_expression "(long)*param_2 << 0x25" (cast_expression "(long)*param_2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (<< "<<") (number_literal "0x25")) () ")")) (+ "+") (number_literal "0x1000000000")) (+ "+") (binary_expression "lVar6 * 0x80000000" (identifier "lVar6") (* "*") (number_literal "0x80000000"))) (+ "+") (cast_expression "(long)*piVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8")))) (, ",") (pointer_expression "*(undefined8 *)(piVar8 + 4)" (* "*") (cast_expression "(undefined8 *)(piVar8 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")")))) (, ",") (subscript_expression "piVar8[6]" (identifier "piVar8") ([ "[") (number_literal "6") (] "]")) () ")"))) (; ";")) (expression_statement "FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);" (call_expression "FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2)" (identifier "FUN_0015cb60") (argument_list "(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2)" (( "(") (identifier "lVar1") (, ",") (binary_expression "param_2 + 0x15" (identifier "param_2") (+ "+") (number_literal "0x15")) (, ",") (binary_expression "param_2 + 0x16" (identifier "param_2") (+ "+") (number_literal "0x16")) (, ",") (binary_expression "(int)lVar6 + 2" (cast_expression "(int)lVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "lVar6")) (+ "+") (number_literal "2")) () ")"))) (; ";")) (expression_statement "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);" (assignment_expression "piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" (identifier "piVar8") (= "=") (cast_expression "(int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 0x16) + lVar6 * 0x20)" (( "(") (binary_expression "*(long *)(param_2 + 0x16) + lVar6 * 0x20" (pointer_expression "*(long *)(param_2 + 0x16)" (* "*") (cast_expression "(long *)(param_2 + 0x16)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 0x16)" (( "(") (binary_expression "param_2 + 0x16" (identifier "param_2") (+ "+") (number_literal "0x16")) () ")")))) (+ "+") (binary_expression "lVar6 * 0x20" (identifier "lVar6") (* "*") (number_literal "0x20"))) () ")")))) (; ";")) (if_statement "if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }" (if "if") (parenthesized_expression "((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0))" (( "(") (binary_expression "(*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)" (parenthesized_expression "(*(int *)((long)param_1 + 0x34) == 0)" (( "(") (binary_expression "*(int *)((long)param_1 + 0x34) == 0" (pointer_expression "*(int *)((long)param_1 + 0x34)" (* "*") (cast_expression "(int *)((long)param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x34)" (( "(") (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(piVar8[0xe] == 0)" (( "(") (binary_expression "piVar8[0xe] == 0" (subscript_expression "piVar8[0xe]" (identifier "piVar8") ([ "[") (number_literal "0xe") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n          piVar7 = piVar8 + 0xc;\n          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);\n          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);\n          uVar5 = local_48;\n          piVar8[8] = *piVar8;\n          FUN_0015be80(lVar1,piVar7,0);\n          FUN_0015be80(lVar1,piVar7,(long)*piVar8);\n          FUN_0015be80(lVar1,piVar7,uVar5);\n          *(undefined8 *)(piVar8 + 10) = uVar5;\n          piVar8[9] = 1;\n        }" ({ "{") (expression_statement "piVar7 = piVar8 + 0xc;" (assignment_expression "piVar7 = piVar8 + 0xc" (identifier "piVar7") (= "=") (binary_expression "piVar8 + 0xc" (identifier "piVar8") (+ "+") (number_literal "0xc"))) (; ";")) (expression_statement "bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);" (assignment_expression "bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48)" (identifier "bVar4") (= "=") (call_expression "FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48)" (identifier "FUN_00110120") (argument_list "(*(long *)(piVar8 + 4) + 1,&local_48)" (( "(") (binary_expression "*(long *)(piVar8 + 4) + 1" (pointer_expression "*(long *)(piVar8 + 4)" (* "*") (cast_expression "(long *)(piVar8 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1")) (, ",") (pointer_expression "&local_48" (& "&") (identifier "local_48")) () ")")))) (; ";")) (expression_statement "FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);" (call_expression "FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4)" (identifier "FUN_00110120") (argument_list "(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4)" (( "(") (binary_expression "*(long *)(piVar8 + 4) + 1 + (ulong)bVar4" (binary_expression "*(long *)(piVar8 + 4) + 1" (pointer_expression "*(long *)(piVar8 + 4)" (* "*") (cast_expression "(long *)(piVar8 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 4)" (( "(") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "1")) (+ "+") (cast_expression "(ulong)bVar4" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar4"))) () ")"))) (; ";")) (expression_statement "uVar5 = local_48;" (assignment_expression "uVar5 = local_48" (identifier "uVar5") (= "=") (identifier "local_48")) (; ";")) (expression_statement "piVar8[8] = *piVar8;" (assignment_expression "piVar8[8] = *piVar8" (subscript_expression "piVar8[8]" (identifier "piVar8") ([ "[") (number_literal "8") (] "]")) (= "=") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) (; ";")) (expression_statement "FUN_0015be80(lVar1,piVar7,0);" (call_expression "FUN_0015be80(lVar1,piVar7,0)" (identifier "FUN_0015be80") (argument_list "(lVar1,piVar7,0)" (( "(") (identifier "lVar1") (, ",") (identifier "piVar7") (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "FUN_0015be80(lVar1,piVar7,(long)*piVar8);" (call_expression "FUN_0015be80(lVar1,piVar7,(long)*piVar8)" (identifier "FUN_0015be80") (argument_list "(lVar1,piVar7,(long)*piVar8)" (( "(") (identifier "lVar1") (, ",") (identifier "piVar7") (, ",") (cast_expression "(long)*piVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*piVar8" (* "*") (identifier "piVar8"))) () ")"))) (; ";")) (expression_statement "FUN_0015be80(lVar1,piVar7,uVar5);" (call_expression "FUN_0015be80(lVar1,piVar7,uVar5)" (identifier "FUN_0015be80") (argument_list "(lVar1,piVar7,uVar5)" (( "(") (identifier "lVar1") (, ",") (identifier "piVar7") (, ",") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "*(undefined8 *)(piVar8 + 10) = uVar5;" (assignment_expression "*(undefined8 *)(piVar8 + 10) = uVar5" (pointer_expression "*(undefined8 *)(piVar8 + 10)" (* "*") (cast_expression "(undefined8 *)(piVar8 + 10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 10)" (( "(") (binary_expression "piVar8 + 10" (identifier "piVar8") (+ "+") (number_literal "10")) () ")")))) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "piVar8[9] = 1;" (assignment_expression "piVar8[9] = 1" (subscript_expression "piVar8[9]" (identifier "piVar8") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "*piVar8 = *piVar8 + 1;" (assignment_expression "*piVar8 = *piVar8 + 1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (binary_expression "*piVar8 + 1" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar7 = piVar8 + 4;" (assignment_expression "piVar7 = piVar8 + 4" (identifier "piVar7") (= "=") (binary_expression "piVar8 + 4" (identifier "piVar8") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "bVar3 = false;" (assignment_expression "bVar3 = false" (identifier "bVar3") (= "=") (false "false")) (; ";")) (expression_statement "uVar5 = 1;" (assignment_expression "uVar5 = 1" (identifier "uVar5") (= "=") (number_literal "1")) (; ";")) (expression_statement "piVar8[6] = 0;" (assignment_expression "piVar8[6] = 0" (subscript_expression "piVar8[6]" (identifier "piVar8") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "piVar8[1] = 0;" (assignment_expression "piVar8[1] = 0" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}")))) (if_statement "if (lVar6 == 0) {\n        iVar2 = param_2[2];\n      }\n      else {\n        iVar2 = piVar8[-8];\n      }" (if "if") (parenthesized_expression "(lVar6 == 0)" (( "(") (binary_expression "lVar6 == 0" (identifier "lVar6") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar2 = param_2[2];\n      }" ({ "{") (expression_statement "iVar2 = param_2[2];" (assignment_expression "iVar2 = param_2[2]" (identifier "iVar2") (= "=") (subscript_expression "param_2[2]" (identifier "param_2") ([ "[") (number_literal "2") (] "]"))) (; ";")) (} "}")) (else_clause "else {\n        iVar2 = piVar8[-8];\n      }" (else "else") (compound_statement "{\n        iVar2 = piVar8[-8];\n      }" ({ "{") (expression_statement "iVar2 = piVar8[-8];" (assignment_expression "iVar2 = piVar8[-8]" (identifier "iVar2") (= "=") (subscript_expression "piVar8[-8]" (identifier "piVar8") ([ "[") (number_literal "-8") (] "]"))) (; ";")) (} "}")))) (expression_statement "local_58 = (long)iVar2;" (assignment_expression "local_58 = (long)iVar2" (identifier "local_58") (= "=") (cast_expression "(long)iVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar2"))) (; ";")) (expression_statement "lVar6 = lVar6 + 1;" (assignment_expression "lVar6 = lVar6 + 1" (identifier "lVar6") (= "=") (binary_expression "lVar6 + 1" (identifier "lVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_0015be80(lVar1,piVar7,uVar5);" (call_expression "FUN_0015be80(lVar1,piVar7,uVar5)" (identifier "FUN_0015be80") (argument_list "(lVar1,piVar7,uVar5)" (( "(") (identifier "lVar1") (, ",") (identifier "piVar7") (, ",") (identifier "uVar5") () ")"))) (; ";")) (expression_statement "FUN_0015be80(lVar1,piVar7,local_58);" (call_expression "FUN_0015be80(lVar1,piVar7,local_58)" (identifier "FUN_0015be80") (argument_list "(lVar1,piVar7,local_58)" (( "(") (identifier "lVar1") (, ",") (identifier "piVar7") (, ",") (identifier "local_58") () ")"))) (; ";")) (expression_statement "FUN_0015be80(lVar1,piVar7,param_3);" (call_expression "FUN_0015be80(lVar1,piVar7,param_3)" (identifier "FUN_0015be80") (argument_list "(lVar1,piVar7,param_3)" (( "(") (identifier "lVar1") (, ",") (identifier "piVar7") (, ",") (identifier "param_3") () ")"))) (; ";")) (expression_statement "*(long *)(piVar8 + 2) = param_3;" (assignment_expression "*(long *)(piVar8 + 2) = param_3" (pointer_expression "*(long *)(piVar8 + 2)" (* "*") (cast_expression "(long *)(piVar8 + 2)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar8 + 2)" (( "(") (binary_expression "piVar8 + 2" (identifier "piVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "piVar8[1] = 1;" (assignment_expression "piVar8[1] = 1" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(!bVar3 && *(int *)((long)param_1 + 0x34) == 0)" (( "(") (binary_expression "!bVar3 && *(int *)((long)param_1 + 0x34) == 0" (unary_expression "!bVar3" (! "!") (identifier "bVar3")) (&& "&&") (binary_expression "*(int *)((long)param_1 + 0x34) == 0" (pointer_expression "*(int *)((long)param_1 + 0x34)" (* "*") (cast_expression "(int *)((long)param_1 + 0x34)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x34)" (( "(") (binary_expression "(long)param_1 + 0x34" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x34")) () ")")))) (== "==") (number_literal "0"))) () ")")) (; ";")) (} "}"))) (if_statement "if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_40 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_40 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_40") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *p,type_2 *pWriter,type_3 var_4)

{
  int *p_00;
  int iVar1;
  bool bVar2;
  type_4 bVar3;
  type_3 iVar4;
  type_5 *v;
  long var_2;
  type_6 *pFVar6;
  type_7 *pFVar7;
  long var_1;
  long local_58;
  type_3 iRowid_1;
  long var_8;
  
  var_8 = *(long *)(var_1 + 0x28);
  if (p->rc == 0) {
    p_00 = &p->rc;
    var_2 = 0;
    do {
      pFVar7 = pWriter->aDlidx + var_2;
      if ((pFVar7->buf).n < p->pConfig->pgsz) {
        pFVar6 = &pFVar7->buf;
        if (pFVar7->bPrevValid != 0) {
          var_3(p_00,pFVar6,var_4 - pFVar7->iPrev);
          pFVar7->bPrevValid = 1;
          pFVar7->iPrev = var_4;
          break;
        }
        iVar4 = 0;
        bVar2 = true;
      }
      else {
        *(pFVar7->buf).p = '\x01';
        var_5(p,((long)pWriter->iSegid << 0x25) + 0x1000000000 + var_2 * 0x80000000 +
                        (long)pFVar7->pgno,(pFVar7->buf).p,(pFVar7->buf).n);
        var_6((type_1 *)p_00,(type_2 *)&pWriter->nDlidx,(int)pWriter + 0x58,
                           (type_2 *)(type_8)((int)var_2 + 2));
        pFVar7 = pWriter->aDlidx + var_2;
        if ((p->rc == 0) && (pFVar7[1].buf.n == 0)) {
          pFVar6 = &pFVar7[1].buf;
          v = (type_5 *)&iRowid_1;
          bVar3 = var_7((pFVar7->buf).p + 1,(type_5 *)&iRowid_1);
          var_7((pFVar7->buf).p + (type_8)bVar3 + 1,v);
          iVar4 = iRowid_1;
          pFVar7[1].pgno = pFVar7->pgno;
          var_3(p_00,pFVar6,0);
          var_3(p_00,pFVar6,(long)pFVar7->pgno);
          var_3(p_00,pFVar6,iVar4);
          pFVar7[1].iPrev = iVar4;
          pFVar7[1].bPrevValid = 1;
        }
        pFVar7->pgno = pFVar7->pgno + 1;
        pFVar6 = &pFVar7->buf;
        bVar2 = false;
        iVar4 = 1;
        (pFVar7->buf).n = 0;
        pFVar7->bPrevValid = 0;
      }
      if (var_2 == 0) {
        iVar1 = (pWriter->writer).pgno;
      }
      else {
        iVar1 = pFVar7[-1].pgno;
      }
      local_58 = (long)iVar1;
      var_2 = var_2 + 1;
      var_3(p_00,pFVar6,iVar4);
      var_3(p_00,pFVar6,local_58);
      var_3(p_00,pFVar6,var_4);
      pFVar7->iPrev = var_4;
      pFVar7->bPrevValid = 1;
    } while (!bVar2 && p->rc == 0);
  }
  if (var_8 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_9();
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (sized_type_specifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (sized_type_specifier) declarator: (identifier)))) body: (compound_statement (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (sized_type_specifier) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (break_statement))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (true)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) right: (number_literal))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (binary_expression left: (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier))) right: (number_literal))) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier)))) (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))))) (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (identifier) right: (number_literal)) (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (binary_expression left: (identifier) right: (number_literal))))))) (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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (pointer_expression argument: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (binary_expression left: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (pointer_expression argument: (identifier)))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (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: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal)))) condition: (parenthesized_expression (binary_expression left: (unary_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: (cast_expression type: (type_descriptor type: (sized_type_specifier)) value: (identifier)) right: (number_literal))))) right: (number_literal))))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (sized_type_specifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list))))) (return_statement))))

void MASKED(long *param_1,int *param_2,long param_3)

{
  long lVar1;
  int iVar2;
  bool bVar3;
  byte bVar4;
  undefined8 uVar5;
  long lVar6;
  int *piVar7;
  int *piVar8;
  long in_FS_OFFSET;
  long local_58;
  undefined8 local_48;
  long local_40;
  
  local_40 = *(long *)(in_FS_OFFSET + 0x28);
  if (*(int *)((long)param_1 + 0x34) == 0) {
    lVar1 = (long)param_1 + 0x34;
    lVar6 = 0;
    do {
      piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);
      if (piVar8[6] < *(int *)(*param_1 + 0x7c)) {
        piVar7 = piVar8 + 4;
        if (piVar8[1] != 0) {
          FUN_0015be80(lVar1,piVar7,param_3 - *(long *)(piVar8 + 2));
          piVar8[1] = 1;
          *(long *)(piVar8 + 2) = param_3;
          break;
        }
        uVar5 = 0;
        bVar3 = true;
      }
      else {
        **(undefined1 **)(piVar8 + 4) = 1;
        FUN_001bf990(param_1,((long)*param_2 << 0x25) + 0x1000000000 + lVar6 * 0x80000000 +
                             (long)*piVar8,*(undefined8 *)(piVar8 + 4),piVar8[6]);
        FUN_0015cb60(lVar1,param_2 + 0x15,param_2 + 0x16,(int)lVar6 + 2);
        piVar8 = (int *)(*(long *)(param_2 + 0x16) + lVar6 * 0x20);
        if ((*(int *)((long)param_1 + 0x34) == 0) && (piVar8[0xe] == 0)) {
          piVar7 = piVar8 + 0xc;
          bVar4 = FUN_00110120(*(long *)(piVar8 + 4) + 1,&local_48);
          FUN_00110120(*(long *)(piVar8 + 4) + 1 + (ulong)bVar4);
          uVar5 = local_48;
          piVar8[8] = *piVar8;
          FUN_0015be80(lVar1,piVar7,0);
          FUN_0015be80(lVar1,piVar7,(long)*piVar8);
          FUN_0015be80(lVar1,piVar7,uVar5);
          *(undefined8 *)(piVar8 + 10) = uVar5;
          piVar8[9] = 1;
        }
        *piVar8 = *piVar8 + 1;
        piVar7 = piVar8 + 4;
        bVar3 = false;
        uVar5 = 1;
        piVar8[6] = 0;
        piVar8[1] = 0;
      }
      if (lVar6 == 0) {
        iVar2 = param_2[2];
      }
      else {
        iVar2 = piVar8[-8];
      }
      local_58 = (long)iVar2;
      lVar6 = lVar6 + 1;
      FUN_0015be80(lVar1,piVar7,uVar5);
      FUN_0015be80(lVar1,piVar7,local_58);
      FUN_0015be80(lVar1,piVar7,param_3);
      *(long *)(piVar8 + 2) = param_3;
      piVar8[1] = 1;
    } while (!bVar3 && *(int *)((long)param_1 + 0x34) == 0);
  }
  if (local_40 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}

