
void fts3ColumnFilter(int iCol,int bZero,char **ppList,int *pnList)

{
  byte bVar1;
  undefined *puVar2;
  Fts5ExtensionApi *pFVar3;
  int iVar4;
  Fts5ExtensionApi *pFVar5;
  Fts5ExtensionApi *pFVar6;
  Fts5Context *pi;
  _func_int_Fts5Context_ptr *p_Var7;
  Fts5ExtensionApi *pFVar8;
  Fts5ExtensionApi *pFVar9;
  undefined4 uVar10;
  int iVar11;
  int iVar12;
  Fts5Context *pFVar13;
  int iVar14;
  int iCurrent;
  int iStack_1c;
  
  puVar2 = PTR___stack_chk_guard_0015ca30;
  uVar10 = 0xffffff80;
  pFVar13 = (Fts5Context *)&iCurrent;
  pFVar3 = (Fts5ExtensionApi *)*ppList;
  iVar11 = *pnList;
  iCurrent = 0;
  iStack_1c = *(int *)PTR___stack_chk_guard_0015ca30;
  pFVar9 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + iVar11);
  pFVar8 = (Fts5ExtensionApi *)pnList;
  iVar4 = iCol;
  iVar12 = bZero;
  pFVar6 = pFVar3;
  if (pFVar9 <= pFVar3) goto LAB_00025c50;
  do {
    iCol = (int)*(char *)&pFVar3->iVersion;
    pFVar5 = (Fts5ExtensionApi *)iCol;
    while (((uint)pFVar5 & 0xfe) != 0) {
      pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1);
      bVar1 = (byte)iCol;
      if (pFVar9 == pFVar3) {
        iVar14 = (int)pFVar9 - (int)pFVar6;
        pFVar5 = pFVar9;
        pi = pFVar13;
        if (iCurrent != iVar4) goto LAB_00025c18;
        goto LAB_00025c58;
      }
      iCol = (int)(char)*(byte *)&pFVar3->iVersion;
      pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10);
    }
LAB_00025c50:
    do {
      iVar14 = (int)pFVar3 - (int)pFVar6;
      pFVar5 = pFVar3;
      pi = pFVar13;
      if (iCurrent == iVar4) {
LAB_00025c58:
        iCol = (int)&pFVar6->iVersion + iVar14;
        pFVar5 = (Fts5ExtensionApi *)iCol;
joined_r0x00025c58:
        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;
        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {
          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);
          bZero = 0;
          (*(code *)PTR_memset_0015c9b8)();
          iCol = (int)pFVar5;
        }
        *ppList = (char *)pFVar6;
        *pnList = iVar14;
        if (iStack_1c != *(int *)puVar2) {
          (*(code *)PTR___stack_chk_fail_0015ca14)();
          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;
          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;
          pFVar8->xTokenize =
               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr
                *)0x0;
          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;
          pFVar8->iVersion = iCol;
          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;
          pFVar8->xColumnCount = p_Var7;
          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)
                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);
          if (iVar4 != 0) {
            return;
          }
          fts5CInstIterNext((CInstIter *)pFVar8);
          return;
        }
        return;
      }
LAB_00025c18:
      iVar11 = iVar11 - iVar14;
      if (iVar11 == 0) {
        iVar14 = 0;
        pFVar6 = pFVar5;
        goto joined_r0x00025c58;
      }
      bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);
      pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);
      pFVar8 = pFVar6;
      pFVar13 = pi;
      if ((char)bVar1 < '\0') {
        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);
        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);
        iCol = (int)pFVar6;
        bZero = (int)pi;
      }
      else {
        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);
        iCurrent = (uint)bVar1;
      }
      pFVar6 = pFVar5;
    } while (pFVar9 <= pFVar3);
  } while( true );
}



void FUN_00025b50(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)

{
  byte bVar1;
  undefined *puVar2;
  byte *pbVar3;
  byte *pbVar4;
  byte **ppbVar5;
  byte *pbVar6;
  byte *pbVar7;
  byte *pbVar8;
  undefined4 uVar9;
  int iVar10;
  byte *pbVar11;
  byte **ppbVar12;
  byte **ppbVar13;
  int iVar14;
  byte *local_20;
  int local_1c;
  
  puVar2 = PTR___stack_chk_guard_0015ca30;
  uVar9 = 0xffffff80;
  ppbVar13 = &local_20;
  pbVar3 = (byte *)*param_3;
  iVar10 = *(int *)param_4;
  local_20 = (byte *)0x0;
  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;
  pbVar8 = pbVar3 + iVar10;
  pbVar7 = param_4;
  pbVar11 = param_1;
  ppbVar12 = param_2;
  pbVar6 = pbVar3;
  if (pbVar8 <= pbVar3) goto LAB_00025c50;
  do {
    param_1 = (byte *)(int)(char)*pbVar3;
    pbVar4 = param_1;
    while (((uint)pbVar4 & 0xfe) != 0) {
      pbVar3 = pbVar3 + 1;
      bVar1 = (byte)param_1;
      if (pbVar8 == pbVar3) {
        iVar14 = (int)pbVar8 - (int)pbVar6;
        pbVar4 = pbVar8;
        ppbVar5 = ppbVar13;
        if (local_20 != pbVar11) goto LAB_00025c18;
        goto LAB_00025c58;
      }
      param_1 = (byte *)(int)(char)*pbVar3;
      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);
    }
LAB_00025c50:
    do {
      iVar14 = (int)pbVar3 - (int)pbVar6;
      pbVar4 = pbVar3;
      ppbVar5 = ppbVar13;
      if (local_20 == pbVar11) {
LAB_00025c58:
        param_1 = pbVar6 + iVar14;
        pbVar4 = param_1;
joined_r0x00025c58:
        pbVar3 = local_20;
        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {
          pbVar3 = pbVar8 + -(int)pbVar4;
          param_2 = (byte **)0x0;
          (*(code *)PTR_memset_0015c9b8)();
          param_1 = pbVar4;
        }
        *param_3 = pbVar6;
        *(int *)param_4 = iVar14;
        if (local_1c != *(int *)puVar2) {
          (*(code *)PTR___stack_chk_fail_0015ca14)();
          pbVar7[0xc] = 0;
          pbVar7[0xd] = 0;
          pbVar7[0xe] = 0;
          pbVar7[0xf] = 0;
          pbVar7[0x10] = 0;
          pbVar7[0x11] = 0;
          pbVar7[0x12] = 0;
          pbVar7[0x13] = 0;
          pbVar7[0x14] = 0;
          pbVar7[0x15] = 0;
          pbVar7[0x16] = 0;
          pbVar7[0x17] = 0;
          pbVar7[0x18] = 0;
          pbVar7[0x19] = 0;
          pbVar7[0x1a] = 0;
          pbVar7[0x1b] = 0;
          *(byte **)pbVar7 = param_1;
          *(byte ***)(pbVar7 + 4) = param_2;
          *(byte **)(pbVar7 + 8) = pbVar3;
          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);
          if (iVar10 != 0) {
            return;
          }
          FUN_0002422c(pbVar7);
          return;
        }
        return;
      }
LAB_00025c18:
      iVar10 = iVar10 - iVar14;
      if (iVar10 == 0) {
        iVar14 = 0;
        pbVar6 = pbVar4;
        goto joined_r0x00025c58;
      }
      pbVar6 = pbVar4 + 1;
      pbVar7 = pbVar6;
      ppbVar13 = ppbVar5;
      if ((char)pbVar4[1] < '\0') {
        iVar14 = FUN_000219b4();
        pbVar3 = pbVar7 + iVar14;
        param_1 = pbVar6;
        param_2 = ppbVar5;
      }
      else {
        pbVar3 = pbVar4 + 2;
        local_20 = (byte *)(uint)pbVar4[1];
      }
      pbVar6 = pbVar4;
    } while (pbVar8 <= pbVar3);
  } while( true );
}


lui gp,0x14
addiu gp,gp,-0x15a0
addu gp,gp,t9
addiu sp,sp,-0x38
lw t9,-0x7f44(gp)
li t1,-0x80
addiu t6,sp,0x18
sw s0,0x20(sp)
addiu t9,t9,0x19b4
sw s3,0x2c(sp)
or t4,a0,zero
sw s2,0x28(sp)
or t5,a1,zero
sw s1,0x24(sp)
or s2,a2,zero
sw gp,0x10(sp)
or s1,a3,zero
sw ra,0x34(sp)
sw s4,0x30(sp)
lw s0,-0x7b80(gp)
lw v0,0x0(a2)
or a2,zero,zero
lw t3,0x0(a3)
sw zero,0x18(sp)
lw v1,0x0(s0)
or s3,v0,zero
addu t0,v0,t3
sw v1,0x1c(sp)
sltu v1,v0,t0
beq v1,zero,0x00025c50
_or t2,v0,zero
lb a0,0x0(v0)
andi v1,a0,0xfe
bne v1,zero,0x00025c00
_addiu v0,v0,0x1
addiu v0,v0,-0x1
b 0x00025c50
_or t2,v0,zero
lb a0,0x0(v0)
or v1,a0,v1
andi v1,v1,0xfe
beq v1,zero,0x00025c50
_or t2,v0,zero
addiu v0,v0,0x1
and v1,a0,t1
bne t0,v0,0x00025be8
_seb v1,v1
or t2,t0,zero
beq a2,t4,0x00025c58
_subu s4,t2,s3
subu t3,t3,s4
beq t3,zero,0x00025ccc
_nop
lbu a2,0x1(t2)
seb v0,a2
bltz v0,0x00025cac
_addiu a3,t2,0x1
li v0,0x1
sw a2,0x18(sp)
or s3,t2,zero
addu v0,a3,v0
sltu v1,v0,t0
bne v1,zero,0x00025bcc
_or t2,v0,zero
bne a2,t4,0x00025c18
_subu s4,t2,s3
beq t5,zero,0x00025c78
_addu a0,s3,s4
beq a0,t0,0x00025c78
_lw t9,-0x7bf8(gp)
subu a2,t0,a0
jalr t9
_or a1,zero,zero
lw gp,0x10(sp)
lw v1,0x1c(sp)
sw s3,0x0(s2)
sw s4,0x0(s1)
lw v0,0x0(s0)
bne v1,v0,0x00025ce0
_lw ra,0x34(sp)
lw s4,0x30(sp)
lw s3,0x2c(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
jr ra
_addiu sp,sp,0x38
or a1,t6,zero
bal 0x000219b4
_or a0,a3,zero
lw gp,0x10(sp)
addu v0,a3,v0
lw a2,0x18(sp)
b 0x00025c44
_or s3,t2,zero
or s4,zero,zero
beq t5,zero,0x00025c78
_or s3,t2,zero
b 0x00025c60
_addu a0,s3,s4
lw t9,-0x7b9c(gp)
jalr t9
_nop
(translation_unit "void FUN_00025b50(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte **ppbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  undefined4 uVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte **ppbVar12;\n  byte **ppbVar13;\n  int iVar14;\n  byte *local_20;\n  int local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar9 = 0xffffff80;\n  ppbVar13 = &local_20;\n  pbVar3 = (byte *)*param_3;\n  iVar10 = *(int *)param_4;\n  local_20 = (byte *)0x0;\n  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pbVar8 = pbVar3 + iVar10;\n  pbVar7 = param_4;\n  pbVar11 = param_1;\n  ppbVar12 = param_2;\n  pbVar6 = pbVar3;\n  if (pbVar8 <= pbVar3) goto LAB_00025c50;\n  do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );\n}\n\n" (function_definition "void FUN_00025b50(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte **ppbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  undefined4 uVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte **ppbVar12;\n  byte **ppbVar13;\n  int iVar14;\n  byte *local_20;\n  int local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar9 = 0xffffff80;\n  ppbVar13 = &local_20;\n  pbVar3 = (byte *)*param_3;\n  iVar10 = *(int *)param_4;\n  local_20 = (byte *)0x0;\n  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pbVar8 = pbVar3 + iVar10;\n  pbVar7 = param_4;\n  pbVar11 = param_1;\n  ppbVar12 = param_2;\n  pbVar6 = pbVar3;\n  if (pbVar8 <= pbVar3) goto LAB_00025c50;\n  do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );\n}" primitive_type (function_declarator "FUN_00025b50(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)" identifier (parameter_list "(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte **param_2" type_identifier (pointer_declarator "**param_2" * (pointer_declarator "*param_2" * identifier))) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "byte *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte **ppbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  undefined4 uVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte **ppbVar12;\n  byte **ppbVar13;\n  int iVar14;\n  byte *local_20;\n  int local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar9 = 0xffffff80;\n  ppbVar13 = &local_20;\n  pbVar3 = (byte *)*param_3;\n  iVar10 = *(int *)param_4;\n  local_20 = (byte *)0x0;\n  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pbVar8 = pbVar3 + iVar10;\n  pbVar7 = param_4;\n  pbVar11 = param_1;\n  ppbVar12 = param_2;\n  pbVar6 = pbVar3;\n  if (pbVar8 <= pbVar3) goto LAB_00025c50;\n  do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte **ppbVar5;" type_identifier (pointer_declarator "**ppbVar5" * (pointer_declarator "*ppbVar5" * identifier)) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte **ppbVar12;" type_identifier (pointer_declarator "**ppbVar12" * (pointer_declarator "*ppbVar12" * identifier)) ;) (declaration "byte **ppbVar13;" type_identifier (pointer_declarator "**ppbVar13" * (pointer_declarator "*ppbVar13" * identifier)) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0015ca30;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0015ca30" identifier = identifier) ;) (expression_statement "uVar9 = 0xffffff80;" (assignment_expression "uVar9 = 0xffffff80" identifier = number_literal) ;) (expression_statement "ppbVar13 = &local_20;" (assignment_expression "ppbVar13 = &local_20" identifier = (pointer_expression "&local_20" & identifier)) ;) (expression_statement "pbVar3 = (byte *)*param_3;" (assignment_expression "pbVar3 = (byte *)*param_3" identifier = (cast_expression "(byte *)*param_3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "iVar10 = *(int *)param_4;" (assignment_expression "iVar10 = *(int *)param_4" identifier = (pointer_expression "*(int *)param_4" * (cast_expression "(int *)param_4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_20 = (byte *)0x0;" (assignment_expression "local_20 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0015ca30;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0015ca30" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ca30" * (cast_expression "(int *)PTR___stack_chk_guard_0015ca30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pbVar8 = pbVar3 + iVar10;" (assignment_expression "pbVar8 = pbVar3 + iVar10" identifier = (binary_expression "pbVar3 + iVar10" identifier + identifier)) ;) (expression_statement "pbVar7 = param_4;" (assignment_expression "pbVar7 = param_4" identifier = identifier) ;) (expression_statement "pbVar11 = param_1;" (assignment_expression "pbVar11 = param_1" identifier = identifier) ;) (expression_statement "ppbVar12 = param_2;" (assignment_expression "ppbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar6 = pbVar3;" (assignment_expression "pbVar6 = pbVar3" identifier = identifier) ;) (if_statement "if (pbVar8 <= pbVar3) goto LAB_00025c50;" if (parenthesized_expression "(pbVar8 <= pbVar3)" ( (binary_expression "pbVar8 <= pbVar3" identifier <= identifier) )) (goto_statement "goto LAB_00025c50;" goto statement_identifier ;)) (do_statement "do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );" do (compound_statement "{\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  }" { (expression_statement "param_1 = (byte *)(int)(char)*pbVar3;" (assignment_expression "param_1 = (byte *)(int)(char)*pbVar3" identifier = (cast_expression "(byte *)(int)(char)*pbVar3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar3" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar3" * identifier))))) ;) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" identifier = identifier) ;) (while_statement "while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }" while (parenthesized_expression "(((uint)pbVar4 & 0xfe) != 0)" ( (binary_expression "((uint)pbVar4 & 0xfe) != 0" (parenthesized_expression "((uint)pbVar4 & 0xfe)" ( (binary_expression "(uint)pbVar4 & 0xfe" (cast_expression "(uint)pbVar4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }" { (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = (byte)param_1;" (assignment_expression "bVar1 = (byte)param_1" identifier = (cast_expression "(byte)param_1" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }" if (parenthesized_expression "(pbVar8 == pbVar3)" ( (binary_expression "pbVar8 == pbVar3" identifier == identifier) )) (compound_statement "{\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }" { (expression_statement "iVar14 = (int)pbVar8 - (int)pbVar6;" (assignment_expression "iVar14 = (int)pbVar8 - (int)pbVar6" identifier = (binary_expression "(int)pbVar8 - (int)pbVar6" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar4 = pbVar8;" (assignment_expression "pbVar4 = pbVar8" identifier = identifier) ;) (expression_statement "ppbVar5 = ppbVar13;" (assignment_expression "ppbVar5 = ppbVar13" identifier = identifier) ;) (if_statement "if (local_20 != pbVar11) goto LAB_00025c18;" if (parenthesized_expression "(local_20 != pbVar11)" ( (binary_expression "local_20 != pbVar11" identifier != identifier) )) (goto_statement "goto LAB_00025c18;" goto statement_identifier ;)) (goto_statement "goto LAB_00025c58;" goto statement_identifier ;) })) (expression_statement "param_1 = (byte *)(int)(char)*pbVar3;" (assignment_expression "param_1 = (byte *)(int)(char)*pbVar3" identifier = (cast_expression "(byte *)(int)(char)*pbVar3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar3" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar3" * identifier))))) ;) (expression_statement "pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);" (assignment_expression "pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9)" identifier = (cast_expression "(byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(*pbVar3 | bVar1 & (byte)uVar9)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(*pbVar3 | bVar1 & (byte)uVar9)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(*pbVar3 | bVar1 & (byte)uVar9)" ( (binary_expression "*pbVar3 | bVar1 & (byte)uVar9" (pointer_expression "*pbVar3" * identifier) | (binary_expression "bVar1 & (byte)uVar9" identifier & (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier))) )))))) ;) })) (labeled_statement "LAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);" statement_identifier : (do_statement "do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);" do (compound_statement "{\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    }" { (expression_statement "iVar14 = (int)pbVar3 - (int)pbVar6;" (assignment_expression "iVar14 = (int)pbVar3 - (int)pbVar6" identifier = (binary_expression "(int)pbVar3 - (int)pbVar6" (cast_expression "(int)pbVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar4 = pbVar3;" (assignment_expression "pbVar4 = pbVar3" identifier = identifier) ;) (expression_statement "ppbVar5 = ppbVar13;" (assignment_expression "ppbVar5 = ppbVar13" identifier = identifier) ;) (if_statement "if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }" if (parenthesized_expression "(local_20 == pbVar11)" ( (binary_expression "local_20 == pbVar11" identifier == identifier) )) (compound_statement "{\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }" { (labeled_statement "LAB_00025c58:\n        param_1 = pbVar6 + iVar14;" statement_identifier : (expression_statement "param_1 = pbVar6 + iVar14;" (assignment_expression "param_1 = pbVar6 + iVar14" identifier = (binary_expression "pbVar6 + iVar14" identifier + identifier)) ;)) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" identifier = identifier) ;) (labeled_statement "joined_r0x00025c58:\n        pbVar3 = local_20;" statement_identifier : (expression_statement "pbVar3 = local_20;" (assignment_expression "pbVar3 = local_20" identifier = identifier) ;)) (if_statement "if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }" if (parenthesized_expression "((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8))" ( (binary_expression "(ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)" (parenthesized_expression "(ppbVar12 != (byte **)0x0)" ( (binary_expression "ppbVar12 != (byte **)0x0" identifier != (cast_expression "(byte **)0x0" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) && (parenthesized_expression "(param_1 = pbVar4, pbVar4 != pbVar8)" ( (comma_expression "param_1 = pbVar4, pbVar4 != pbVar8" (assignment_expression "param_1 = pbVar4" identifier = identifier) , (binary_expression "pbVar4 != pbVar8" identifier != identifier)) ))) )) (compound_statement "{\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }" { (expression_statement "pbVar3 = pbVar8 + -(int)pbVar4;" (assignment_expression "pbVar3 = pbVar8 + -(int)pbVar4" identifier = (binary_expression "pbVar8 + -(int)pbVar4" identifier + (unary_expression "-(int)pbVar4" - (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "param_2 = (byte **)0x0;" (assignment_expression "param_2 = (byte **)0x0" identifier = (cast_expression "(byte **)0x0" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "(*(code *)PTR_memset_0015c9b8)();" (call_expression "(*(code *)PTR_memset_0015c9b8)()" (parenthesized_expression "(*(code *)PTR_memset_0015c9b8)" ( (pointer_expression "*(code *)PTR_memset_0015c9b8" * (cast_expression "(code *)PTR_memset_0015c9b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_1 = pbVar4;" (assignment_expression "param_1 = pbVar4" identifier = identifier) ;) })) (expression_statement "*param_3 = pbVar6;" (assignment_expression "*param_3 = pbVar6" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*(int *)param_4 = iVar14;" (assignment_expression "*(int *)param_4 = iVar14" (pointer_expression "*(int *)param_4" * (cast_expression "(int *)param_4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }" if (parenthesized_expression "(local_1c != *(int *)puVar2)" ( (binary_expression "local_1c != *(int *)puVar2" identifier != (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0015ca14)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ca14)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ca14)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ca14" * (cast_expression "(code *)PTR___stack_chk_fail_0015ca14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pbVar7[0xc] = 0;" (assignment_expression "pbVar7[0xc] = 0" (subscript_expression "pbVar7[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0xd] = 0;" (assignment_expression "pbVar7[0xd] = 0" (subscript_expression "pbVar7[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0xe] = 0;" (assignment_expression "pbVar7[0xe] = 0" (subscript_expression "pbVar7[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0xf] = 0;" (assignment_expression "pbVar7[0xf] = 0" (subscript_expression "pbVar7[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x10] = 0;" (assignment_expression "pbVar7[0x10] = 0" (subscript_expression "pbVar7[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x11] = 0;" (assignment_expression "pbVar7[0x11] = 0" (subscript_expression "pbVar7[0x11]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x12] = 0;" (assignment_expression "pbVar7[0x12] = 0" (subscript_expression "pbVar7[0x12]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x13] = 0;" (assignment_expression "pbVar7[0x13] = 0" (subscript_expression "pbVar7[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x14] = 0;" (assignment_expression "pbVar7[0x14] = 0" (subscript_expression "pbVar7[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x15] = 0;" (assignment_expression "pbVar7[0x15] = 0" (subscript_expression "pbVar7[0x15]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x16] = 0;" (assignment_expression "pbVar7[0x16] = 0" (subscript_expression "pbVar7[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x17] = 0;" (assignment_expression "pbVar7[0x17] = 0" (subscript_expression "pbVar7[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x18] = 0;" (assignment_expression "pbVar7[0x18] = 0" (subscript_expression "pbVar7[0x18]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x19] = 0;" (assignment_expression "pbVar7[0x19] = 0" (subscript_expression "pbVar7[0x19]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x1a] = 0;" (assignment_expression "pbVar7[0x1a] = 0" (subscript_expression "pbVar7[0x1a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x1b] = 0;" (assignment_expression "pbVar7[0x1b] = 0" (subscript_expression "pbVar7[0x1b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)pbVar7 = param_1;" (assignment_expression "*(byte **)pbVar7 = param_1" (pointer_expression "*(byte **)pbVar7" * (cast_expression "(byte **)pbVar7" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "*(byte ***)(pbVar7 + 4) = param_2;" (assignment_expression "*(byte ***)(pbVar7 + 4) = param_2" (pointer_expression "*(byte ***)(pbVar7 + 4)" * (cast_expression "(byte ***)(pbVar7 + 4)" ( (type_descriptor "byte ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(pbVar7 + 4)" ( (binary_expression "pbVar7 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(pbVar7 + 8) = pbVar3;" (assignment_expression "*(byte **)(pbVar7 + 8) = pbVar3" (pointer_expression "*(byte **)(pbVar7 + 8)" * (cast_expression "(byte **)(pbVar7 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar7 + 8)" ( (binary_expression "pbVar7 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);" (assignment_expression "iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10)" identifier = (call_expression "(**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10)" (parenthesized_expression "(**(code **)(param_1 + 0x20))" ( (pointer_expression "**(code **)(param_1 + 0x20)" * (pointer_expression "*(code **)(param_1 + 0x20)" * (cast_expression "(code **)(param_1 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) )) (argument_list "(param_2,pbVar7 + 0x10)" ( identifier , (binary_expression "pbVar7 + 0x10" identifier + number_literal) )))) ;) (if_statement "if (iVar10 != 0) {\n            return;\n          }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0002422c(pbVar7);" (call_expression "FUN_0002422c(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) (labeled_statement "LAB_00025c18:\n      iVar10 = iVar10 - iVar14;" statement_identifier : (expression_statement "iVar10 = iVar10 - iVar14;" (assignment_expression "iVar10 = iVar10 - iVar14" identifier = (binary_expression "iVar10 - iVar14" identifier - identifier)) ;)) (if_statement "if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pbVar6 = pbVar4;" (assignment_expression "pbVar6 = pbVar4" identifier = identifier) ;) (goto_statement "goto joined_r0x00025c58;" goto statement_identifier ;) })) (expression_statement "pbVar6 = pbVar4 + 1;" (assignment_expression "pbVar6 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (expression_statement "ppbVar13 = ppbVar5;" (assignment_expression "ppbVar13 = ppbVar5" identifier = identifier) ;) (if_statement "if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }" if (parenthesized_expression "((char)pbVar4[1] < '\0')" ( (binary_expression "(char)pbVar4[1] < '\0'" (cast_expression "(char)pbVar4[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }" { (expression_statement "iVar14 = FUN_000219b4();" (assignment_expression "iVar14 = FUN_000219b4()" identifier = (call_expression "FUN_000219b4()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar3 = pbVar7 + iVar14;" (assignment_expression "pbVar3 = pbVar7 + iVar14" identifier = (binary_expression "pbVar7 + iVar14" identifier + identifier)) ;) (expression_statement "param_1 = pbVar6;" (assignment_expression "param_1 = pbVar6" identifier = identifier) ;) (expression_statement "param_2 = ppbVar5;" (assignment_expression "param_2 = ppbVar5" identifier = identifier) ;) }) (else_clause "else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }" else (compound_statement "{\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }" { (expression_statement "pbVar3 = pbVar4 + 2;" (assignment_expression "pbVar3 = pbVar4 + 2" identifier = (binary_expression "pbVar4 + 2" identifier + number_literal)) ;) (expression_statement "local_20 = (byte *)(uint)pbVar4[1];" (assignment_expression "local_20 = (byte *)(uint)pbVar4[1]" identifier = (cast_expression "(byte *)(uint)pbVar4[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)pbVar4[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ])))) ;) }))) (expression_statement "pbVar6 = pbVar4;" (assignment_expression "pbVar6 = pbVar4" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar8 <= pbVar3)" ( (binary_expression "pbVar8 <= pbVar3" identifier <= identifier) )) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void fts3ColumnFilter(int iCol,int bZero,char **ppList,int *pnList)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  Fts5ExtensionApi *pFVar3;\n  int iVar4;\n  Fts5ExtensionApi *pFVar5;\n  Fts5ExtensionApi *pFVar6;\n  Fts5Context *pi;\n  _func_int_Fts5Context_ptr *p_Var7;\n  Fts5ExtensionApi *pFVar8;\n  Fts5ExtensionApi *pFVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  Fts5Context *pFVar13;\n  int iVar14;\n  int iCurrent;\n  int iStack_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar10 = 0xffffff80;\n  pFVar13 = (Fts5Context *)&iCurrent;\n  pFVar3 = (Fts5ExtensionApi *)*ppList;\n  iVar11 = *pnList;\n  iCurrent = 0;\n  iStack_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pFVar9 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + iVar11);\n  pFVar8 = (Fts5ExtensionApi *)pnList;\n  iVar4 = iCol;\n  iVar12 = bZero;\n  pFVar6 = pFVar3;\n  if (pFVar9 <= pFVar3) goto LAB_00025c50;\n  do {\n    iCol = (int)*(char *)&pFVar3->iVersion;\n    pFVar5 = (Fts5ExtensionApi *)iCol;\n    while (((uint)pFVar5 & 0xfe) != 0) {\n      pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1);\n      bVar1 = (byte)iCol;\n      if (pFVar9 == pFVar3) {\n        iVar14 = (int)pFVar9 - (int)pFVar6;\n        pFVar5 = pFVar9;\n        pi = pFVar13;\n        if (iCurrent != iVar4) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      iCol = (int)(char)*(byte *)&pFVar3->iVersion;\n      pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pFVar3 - (int)pFVar6;\n      pFVar5 = pFVar3;\n      pi = pFVar13;\n      if (iCurrent == iVar4) {\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar11 = iVar11 - iVar14;\n      if (iVar11 == 0) {\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }\n      bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);\n      pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);\n      pFVar8 = pFVar6;\n      pFVar13 = pi;\n      if ((char)bVar1 < '\0') {\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }\n      else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }\n      pFVar6 = pFVar5;\n    } while (pFVar9 <= pFVar3);\n  } while( true );\n}\n\n" (function_definition "void fts3ColumnFilter(int iCol,int bZero,char **ppList,int *pnList)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  Fts5ExtensionApi *pFVar3;\n  int iVar4;\n  Fts5ExtensionApi *pFVar5;\n  Fts5ExtensionApi *pFVar6;\n  Fts5Context *pi;\n  _func_int_Fts5Context_ptr *p_Var7;\n  Fts5ExtensionApi *pFVar8;\n  Fts5ExtensionApi *pFVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  Fts5Context *pFVar13;\n  int iVar14;\n  int iCurrent;\n  int iStack_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar10 = 0xffffff80;\n  pFVar13 = (Fts5Context *)&iCurrent;\n  pFVar3 = (Fts5ExtensionApi *)*ppList;\n  iVar11 = *pnList;\n  iCurrent = 0;\n  iStack_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pFVar9 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + iVar11);\n  pFVar8 = (Fts5ExtensionApi *)pnList;\n  iVar4 = iCol;\n  iVar12 = bZero;\n  pFVar6 = pFVar3;\n  if (pFVar9 <= pFVar3) goto LAB_00025c50;\n  do {\n    iCol = (int)*(char *)&pFVar3->iVersion;\n    pFVar5 = (Fts5ExtensionApi *)iCol;\n    while (((uint)pFVar5 & 0xfe) != 0) {\n      pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1);\n      bVar1 = (byte)iCol;\n      if (pFVar9 == pFVar3) {\n        iVar14 = (int)pFVar9 - (int)pFVar6;\n        pFVar5 = pFVar9;\n        pi = pFVar13;\n        if (iCurrent != iVar4) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      iCol = (int)(char)*(byte *)&pFVar3->iVersion;\n      pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pFVar3 - (int)pFVar6;\n      pFVar5 = pFVar3;\n      pi = pFVar13;\n      if (iCurrent == iVar4) {\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar11 = iVar11 - iVar14;\n      if (iVar11 == 0) {\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }\n      bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);\n      pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);\n      pFVar8 = pFVar6;\n      pFVar13 = pi;\n      if ((char)bVar1 < '\0') {\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }\n      else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }\n      pFVar6 = pFVar5;\n    } while (pFVar9 <= pFVar3);\n  } while( true );\n}" primitive_type (function_declarator "fts3ColumnFilter(int iCol,int bZero,char **ppList,int *pnList)" identifier (parameter_list "(int iCol,int bZero,char **ppList,int *pnList)" ( (parameter_declaration "int iCol" primitive_type identifier) , (parameter_declaration "int bZero" primitive_type identifier) , (parameter_declaration "char **ppList" primitive_type (pointer_declarator "**ppList" * (pointer_declarator "*ppList" * identifier))) , (parameter_declaration "int *pnList" primitive_type (pointer_declarator "*pnList" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  Fts5ExtensionApi *pFVar3;\n  int iVar4;\n  Fts5ExtensionApi *pFVar5;\n  Fts5ExtensionApi *pFVar6;\n  Fts5Context *pi;\n  _func_int_Fts5Context_ptr *p_Var7;\n  Fts5ExtensionApi *pFVar8;\n  Fts5ExtensionApi *pFVar9;\n  undefined4 uVar10;\n  int iVar11;\n  int iVar12;\n  Fts5Context *pFVar13;\n  int iVar14;\n  int iCurrent;\n  int iStack_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar10 = 0xffffff80;\n  pFVar13 = (Fts5Context *)&iCurrent;\n  pFVar3 = (Fts5ExtensionApi *)*ppList;\n  iVar11 = *pnList;\n  iCurrent = 0;\n  iStack_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pFVar9 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + iVar11);\n  pFVar8 = (Fts5ExtensionApi *)pnList;\n  iVar4 = iCol;\n  iVar12 = bZero;\n  pFVar6 = pFVar3;\n  if (pFVar9 <= pFVar3) goto LAB_00025c50;\n  do {\n    iCol = (int)*(char *)&pFVar3->iVersion;\n    pFVar5 = (Fts5ExtensionApi *)iCol;\n    while (((uint)pFVar5 & 0xfe) != 0) {\n      pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1);\n      bVar1 = (byte)iCol;\n      if (pFVar9 == pFVar3) {\n        iVar14 = (int)pFVar9 - (int)pFVar6;\n        pFVar5 = pFVar9;\n        pi = pFVar13;\n        if (iCurrent != iVar4) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      iCol = (int)(char)*(byte *)&pFVar3->iVersion;\n      pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pFVar3 - (int)pFVar6;\n      pFVar5 = pFVar3;\n      pi = pFVar13;\n      if (iCurrent == iVar4) {\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar11 = iVar11 - iVar14;\n      if (iVar11 == 0) {\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }\n      bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);\n      pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);\n      pFVar8 = pFVar6;\n      pFVar13 = pi;\n      if ((char)bVar1 < '\0') {\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }\n      else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }\n      pFVar6 = pFVar5;\n    } while (pFVar9 <= pFVar3);\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "Fts5ExtensionApi *pFVar3;" type_identifier (pointer_declarator "*pFVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "Fts5ExtensionApi *pFVar5;" type_identifier (pointer_declarator "*pFVar5" * identifier) ;) (declaration "Fts5ExtensionApi *pFVar6;" type_identifier (pointer_declarator "*pFVar6" * identifier) ;) (declaration "Fts5Context *pi;" type_identifier (pointer_declarator "*pi" * identifier) ;) (declaration "_func_int_Fts5Context_ptr *p_Var7;" type_identifier (pointer_declarator "*p_Var7" * identifier) ;) (declaration "Fts5ExtensionApi *pFVar8;" type_identifier (pointer_declarator "*pFVar8" * identifier) ;) (declaration "Fts5ExtensionApi *pFVar9;" type_identifier (pointer_declarator "*pFVar9" * identifier) ;) (declaration "undefined4 uVar10;" type_identifier identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "Fts5Context *pFVar13;" type_identifier (pointer_declarator "*pFVar13" * identifier) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "int iCurrent;" primitive_type identifier ;) (declaration "int iStack_1c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0015ca30;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0015ca30" identifier = identifier) ;) (expression_statement "uVar10 = 0xffffff80;" (assignment_expression "uVar10 = 0xffffff80" identifier = number_literal) ;) (expression_statement "pFVar13 = (Fts5Context *)&iCurrent;" (assignment_expression "pFVar13 = (Fts5Context *)&iCurrent" identifier = (cast_expression "(Fts5Context *)&iCurrent" ( (type_descriptor "Fts5Context *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&iCurrent" & identifier))) ;) (expression_statement "pFVar3 = (Fts5ExtensionApi *)*ppList;" (assignment_expression "pFVar3 = (Fts5ExtensionApi *)*ppList" identifier = (cast_expression "(Fts5ExtensionApi *)*ppList" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*ppList" * identifier))) ;) (expression_statement "iVar11 = *pnList;" (assignment_expression "iVar11 = *pnList" identifier = (pointer_expression "*pnList" * identifier)) ;) (expression_statement "iCurrent = 0;" (assignment_expression "iCurrent = 0" identifier = number_literal) ;) (expression_statement "iStack_1c = *(int *)PTR___stack_chk_guard_0015ca30;" (assignment_expression "iStack_1c = *(int *)PTR___stack_chk_guard_0015ca30" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ca30" * (cast_expression "(int *)PTR___stack_chk_guard_0015ca30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pFVar9 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + iVar11);" (assignment_expression "pFVar9 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + iVar11)" identifier = (cast_expression "(Fts5ExtensionApi *)((int)&pFVar3->iVersion + iVar11)" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar3->iVersion + iVar11)" ( (binary_expression "(int)&pFVar3->iVersion + iVar11" (cast_expression "(int)&pFVar3->iVersion" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar3->iVersion" & (field_expression "pFVar3->iVersion" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "pFVar8 = (Fts5ExtensionApi *)pnList;" (assignment_expression "pFVar8 = (Fts5ExtensionApi *)pnList" identifier = (cast_expression "(Fts5ExtensionApi *)pnList" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "iVar4 = iCol;" (assignment_expression "iVar4 = iCol" identifier = identifier) ;) (expression_statement "iVar12 = bZero;" (assignment_expression "iVar12 = bZero" identifier = identifier) ;) (expression_statement "pFVar6 = pFVar3;" (assignment_expression "pFVar6 = pFVar3" identifier = identifier) ;) (if_statement "if (pFVar9 <= pFVar3) goto LAB_00025c50;" if (parenthesized_expression "(pFVar9 <= pFVar3)" ( (binary_expression "pFVar9 <= pFVar3" identifier <= identifier) )) (goto_statement "goto LAB_00025c50;" goto statement_identifier ;)) (do_statement "do {\n    iCol = (int)*(char *)&pFVar3->iVersion;\n    pFVar5 = (Fts5ExtensionApi *)iCol;\n    while (((uint)pFVar5 & 0xfe) != 0) {\n      pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1);\n      bVar1 = (byte)iCol;\n      if (pFVar9 == pFVar3) {\n        iVar14 = (int)pFVar9 - (int)pFVar6;\n        pFVar5 = pFVar9;\n        pi = pFVar13;\n        if (iCurrent != iVar4) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      iCol = (int)(char)*(byte *)&pFVar3->iVersion;\n      pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pFVar3 - (int)pFVar6;\n      pFVar5 = pFVar3;\n      pi = pFVar13;\n      if (iCurrent == iVar4) {\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar11 = iVar11 - iVar14;\n      if (iVar11 == 0) {\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }\n      bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);\n      pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);\n      pFVar8 = pFVar6;\n      pFVar13 = pi;\n      if ((char)bVar1 < '\0') {\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }\n      else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }\n      pFVar6 = pFVar5;\n    } while (pFVar9 <= pFVar3);\n  } while( true );" do (compound_statement "{\n    iCol = (int)*(char *)&pFVar3->iVersion;\n    pFVar5 = (Fts5ExtensionApi *)iCol;\n    while (((uint)pFVar5 & 0xfe) != 0) {\n      pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1);\n      bVar1 = (byte)iCol;\n      if (pFVar9 == pFVar3) {\n        iVar14 = (int)pFVar9 - (int)pFVar6;\n        pFVar5 = pFVar9;\n        pi = pFVar13;\n        if (iCurrent != iVar4) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      iCol = (int)(char)*(byte *)&pFVar3->iVersion;\n      pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pFVar3 - (int)pFVar6;\n      pFVar5 = pFVar3;\n      pi = pFVar13;\n      if (iCurrent == iVar4) {\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar11 = iVar11 - iVar14;\n      if (iVar11 == 0) {\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }\n      bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);\n      pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);\n      pFVar8 = pFVar6;\n      pFVar13 = pi;\n      if ((char)bVar1 < '\0') {\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }\n      else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }\n      pFVar6 = pFVar5;\n    } while (pFVar9 <= pFVar3);\n  }" { (expression_statement "iCol = (int)*(char *)&pFVar3->iVersion;" (assignment_expression "iCol = (int)*(char *)&pFVar3->iVersion" identifier = (cast_expression "(int)*(char *)&pFVar3->iVersion" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*(char *)&pFVar3->iVersion" * (cast_expression "(char *)&pFVar3->iVersion" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFVar3->iVersion" & (field_expression "pFVar3->iVersion" identifier -> field_identifier)))))) ;) (expression_statement "pFVar5 = (Fts5ExtensionApi *)iCol;" (assignment_expression "pFVar5 = (Fts5ExtensionApi *)iCol" identifier = (cast_expression "(Fts5ExtensionApi *)iCol" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (while_statement "while (((uint)pFVar5 & 0xfe) != 0) {\n      pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1);\n      bVar1 = (byte)iCol;\n      if (pFVar9 == pFVar3) {\n        iVar14 = (int)pFVar9 - (int)pFVar6;\n        pFVar5 = pFVar9;\n        pi = pFVar13;\n        if (iCurrent != iVar4) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      iCol = (int)(char)*(byte *)&pFVar3->iVersion;\n      pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10);\n    }" while (parenthesized_expression "(((uint)pFVar5 & 0xfe) != 0)" ( (binary_expression "((uint)pFVar5 & 0xfe) != 0" (parenthesized_expression "((uint)pFVar5 & 0xfe)" ( (binary_expression "(uint)pFVar5 & 0xfe" (cast_expression "(uint)pFVar5" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1);\n      bVar1 = (byte)iCol;\n      if (pFVar9 == pFVar3) {\n        iVar14 = (int)pFVar9 - (int)pFVar6;\n        pFVar5 = pFVar9;\n        pi = pFVar13;\n        if (iCurrent != iVar4) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      iCol = (int)(char)*(byte *)&pFVar3->iVersion;\n      pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10);\n    }" { (expression_statement "pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1);" (assignment_expression "pFVar3 = (Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1)" identifier = (cast_expression "(Fts5ExtensionApi *)((int)&pFVar3->iVersion + 1)" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar3->iVersion + 1)" ( (binary_expression "(int)&pFVar3->iVersion + 1" (cast_expression "(int)&pFVar3->iVersion" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar3->iVersion" & (field_expression "pFVar3->iVersion" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "bVar1 = (byte)iCol;" (assignment_expression "bVar1 = (byte)iCol" identifier = (cast_expression "(byte)iCol" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (pFVar9 == pFVar3) {\n        iVar14 = (int)pFVar9 - (int)pFVar6;\n        pFVar5 = pFVar9;\n        pi = pFVar13;\n        if (iCurrent != iVar4) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }" if (parenthesized_expression "(pFVar9 == pFVar3)" ( (binary_expression "pFVar9 == pFVar3" identifier == identifier) )) (compound_statement "{\n        iVar14 = (int)pFVar9 - (int)pFVar6;\n        pFVar5 = pFVar9;\n        pi = pFVar13;\n        if (iCurrent != iVar4) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }" { (expression_statement "iVar14 = (int)pFVar9 - (int)pFVar6;" (assignment_expression "iVar14 = (int)pFVar9 - (int)pFVar6" identifier = (binary_expression "(int)pFVar9 - (int)pFVar6" (cast_expression "(int)pFVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pFVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pFVar5 = pFVar9;" (assignment_expression "pFVar5 = pFVar9" identifier = identifier) ;) (expression_statement "pi = pFVar13;" (assignment_expression "pi = pFVar13" identifier = identifier) ;) (if_statement "if (iCurrent != iVar4) goto LAB_00025c18;" if (parenthesized_expression "(iCurrent != iVar4)" ( (binary_expression "iCurrent != iVar4" identifier != identifier) )) (goto_statement "goto LAB_00025c18;" goto statement_identifier ;)) (goto_statement "goto LAB_00025c58;" goto statement_identifier ;) })) (expression_statement "iCol = (int)(char)*(byte *)&pFVar3->iVersion;" (assignment_expression "iCol = (int)(char)*(byte *)&pFVar3->iVersion" identifier = (cast_expression "(int)(char)*(byte *)&pFVar3->iVersion" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*(byte *)&pFVar3->iVersion" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)&pFVar3->iVersion" * (cast_expression "(byte *)&pFVar3->iVersion" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFVar3->iVersion" & (field_expression "pFVar3->iVersion" identifier -> field_identifier))))))) ;) (expression_statement "pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10);" (assignment_expression "pFVar5 = (Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10)" identifier = (cast_expression "(Fts5ExtensionApi *)(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10)" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10)" ( (binary_expression "*(byte *)&pFVar3->iVersion | bVar1 & (byte)uVar10" (pointer_expression "*(byte *)&pFVar3->iVersion" * (cast_expression "(byte *)&pFVar3->iVersion" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFVar3->iVersion" & (field_expression "pFVar3->iVersion" identifier -> field_identifier)))) | (binary_expression "bVar1 & (byte)uVar10" identifier & (cast_expression "(byte)uVar10" ( (type_descriptor "byte" type_identifier) ) identifier))) )))))) ;) })) (labeled_statement "LAB_00025c50:\n    do {\n      iVar14 = (int)pFVar3 - (int)pFVar6;\n      pFVar5 = pFVar3;\n      pi = pFVar13;\n      if (iCurrent == iVar4) {\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar11 = iVar11 - iVar14;\n      if (iVar11 == 0) {\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }\n      bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);\n      pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);\n      pFVar8 = pFVar6;\n      pFVar13 = pi;\n      if ((char)bVar1 < '\0') {\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }\n      else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }\n      pFVar6 = pFVar5;\n    } while (pFVar9 <= pFVar3);" statement_identifier : (do_statement "do {\n      iVar14 = (int)pFVar3 - (int)pFVar6;\n      pFVar5 = pFVar3;\n      pi = pFVar13;\n      if (iCurrent == iVar4) {\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar11 = iVar11 - iVar14;\n      if (iVar11 == 0) {\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }\n      bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);\n      pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);\n      pFVar8 = pFVar6;\n      pFVar13 = pi;\n      if ((char)bVar1 < '\0') {\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }\n      else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }\n      pFVar6 = pFVar5;\n    } while (pFVar9 <= pFVar3);" do (compound_statement "{\n      iVar14 = (int)pFVar3 - (int)pFVar6;\n      pFVar5 = pFVar3;\n      pi = pFVar13;\n      if (iCurrent == iVar4) {\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar11 = iVar11 - iVar14;\n      if (iVar11 == 0) {\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }\n      bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);\n      pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);\n      pFVar8 = pFVar6;\n      pFVar13 = pi;\n      if ((char)bVar1 < '\0') {\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }\n      else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }\n      pFVar6 = pFVar5;\n    }" { (expression_statement "iVar14 = (int)pFVar3 - (int)pFVar6;" (assignment_expression "iVar14 = (int)pFVar3 - (int)pFVar6" identifier = (binary_expression "(int)pFVar3 - (int)pFVar6" (cast_expression "(int)pFVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pFVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pFVar5 = pFVar3;" (assignment_expression "pFVar5 = pFVar3" identifier = identifier) ;) (expression_statement "pi = pFVar13;" (assignment_expression "pi = pFVar13" identifier = identifier) ;) (if_statement "if (iCurrent == iVar4) {\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }" if (parenthesized_expression "(iCurrent == iVar4)" ( (binary_expression "iCurrent == iVar4" identifier == identifier) )) (compound_statement "{\nLAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;\n        pFVar5 = (Fts5ExtensionApi *)iCol;\njoined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;\n        if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }\n        *ppList = (char *)pFVar6;\n        *pnList = iVar14;\n        if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }\n        return;\n      }" { (labeled_statement "LAB_00025c58:\n        iCol = (int)&pFVar6->iVersion + iVar14;" statement_identifier : (expression_statement "iCol = (int)&pFVar6->iVersion + iVar14;" (assignment_expression "iCol = (int)&pFVar6->iVersion + iVar14" identifier = (binary_expression "(int)&pFVar6->iVersion + iVar14" (cast_expression "(int)&pFVar6->iVersion" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar6->iVersion" & (field_expression "pFVar6->iVersion" identifier -> field_identifier))) + identifier)) ;)) (expression_statement "pFVar5 = (Fts5ExtensionApi *)iCol;" (assignment_expression "pFVar5 = (Fts5ExtensionApi *)iCol" identifier = (cast_expression "(Fts5ExtensionApi *)iCol" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (labeled_statement "joined_r0x00025c58:\n        p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;" statement_identifier : (expression_statement "p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent;" (assignment_expression "p_Var7 = (_func_int_Fts5Context_ptr *)iCurrent" identifier = (cast_expression "(_func_int_Fts5Context_ptr *)iCurrent" ( (type_descriptor "_func_int_Fts5Context_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;)) (if_statement "if ((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)) {\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }" if (parenthesized_expression "((iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9))" ( (binary_expression "(iVar12 != 0) && (iCol = (int)pFVar5, pFVar5 != pFVar9)" (parenthesized_expression "(iVar12 != 0)" ( (binary_expression "iVar12 != 0" identifier != number_literal) )) && (parenthesized_expression "(iCol = (int)pFVar5, pFVar5 != pFVar9)" ( (comma_expression "iCol = (int)pFVar5, pFVar5 != pFVar9" (assignment_expression "iCol = (int)pFVar5" identifier = (cast_expression "(int)pFVar5" ( (type_descriptor "int" primitive_type) ) identifier)) , (binary_expression "pFVar5 != pFVar9" identifier != identifier)) ))) )) (compound_statement "{\n          p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);\n          bZero = 0;\n          (*(code *)PTR_memset_0015c9b8)();\n          iCol = (int)pFVar5;\n        }" { (expression_statement "p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5);" (assignment_expression "p_Var7 = (_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5)" identifier = (cast_expression "(_func_int_Fts5Context_ptr *)((int)pFVar9 - (int)pFVar5)" ( (type_descriptor "_func_int_Fts5Context_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)pFVar9 - (int)pFVar5)" ( (binary_expression "(int)pFVar9 - (int)pFVar5" (cast_expression "(int)pFVar9" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pFVar5" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (expression_statement "bZero = 0;" (assignment_expression "bZero = 0" identifier = number_literal) ;) (expression_statement "(*(code *)PTR_memset_0015c9b8)();" (call_expression "(*(code *)PTR_memset_0015c9b8)()" (parenthesized_expression "(*(code *)PTR_memset_0015c9b8)" ( (pointer_expression "*(code *)PTR_memset_0015c9b8" * (cast_expression "(code *)PTR_memset_0015c9b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "iCol = (int)pFVar5;" (assignment_expression "iCol = (int)pFVar5" identifier = (cast_expression "(int)pFVar5" ( (type_descriptor "int" primitive_type) ) identifier)) ;) })) (expression_statement "*ppList = (char *)pFVar6;" (assignment_expression "*ppList = (char *)pFVar6" (pointer_expression "*ppList" * identifier) = (cast_expression "(char *)pFVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "*pnList = iVar14;" (assignment_expression "*pnList = iVar14" (pointer_expression "*pnList" * identifier) = identifier) ;) (if_statement "if (iStack_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }" if (parenthesized_expression "(iStack_1c != *(int *)puVar2)" ( (binary_expression "iStack_1c != *(int *)puVar2" identifier != (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;\n          pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;\n          pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;\n          pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;\n          pFVar8->iVersion = iCol;\n          pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;\n          pFVar8->xColumnCount = p_Var7;\n          iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);\n          if (iVar4 != 0) {\n            return;\n          }\n          fts5CInstIterNext((CInstIter *)pFVar8);\n          return;\n        }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0015ca14)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ca14)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ca14)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ca14" * (cast_expression "(code *)PTR___stack_chk_fail_0015ca14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0;" (assignment_expression "pFVar8->xRowCount = (_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0" (field_expression "pFVar8->xRowCount" identifier -> field_identifier) = (cast_expression "(_func_int_Fts5Context_ptr_sqlite3_int64_ptr *)0x0" ( (type_descriptor "_func_int_Fts5Context_ptr_sqlite3_int64_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0;" (assignment_expression "pFVar8->xColumnTotalSize = (_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0" (field_expression "pFVar8->xColumnTotalSize" identifier -> field_identifier) = (cast_expression "(_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *)0x0" ( (type_descriptor "_func_int_Fts5Context_ptr_int_sqlite3_int64_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0;" (assignment_expression "pFVar8->xTokenize =\n               (_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0" (field_expression "pFVar8->xTokenize" identifier -> field_identifier) = (cast_expression "(_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *)0x0" ( (type_descriptor "_func_int_Fts5Context_ptr_char_ptr_int_void_ptr__func_int_void_ptr_int_char_ptr_int_int_int_ptr\n                *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0;" (assignment_expression "pFVar8->xPhraseCount = (_func_int_Fts5Context_ptr *)0x0" (field_expression "pFVar8->xPhraseCount" identifier -> field_identifier) = (cast_expression "(_func_int_Fts5Context_ptr *)0x0" ( (type_descriptor "_func_int_Fts5Context_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pFVar8->iVersion = iCol;" (assignment_expression "pFVar8->iVersion = iCol" (field_expression "pFVar8->iVersion" identifier -> field_identifier) = identifier) ;) (expression_statement "pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero;" (assignment_expression "pFVar8->xUserData = (_func_void_ptr_Fts5Context_ptr *)bZero" (field_expression "pFVar8->xUserData" identifier -> field_identifier) = (cast_expression "(_func_void_ptr_Fts5Context_ptr *)bZero" ( (type_descriptor "_func_void_ptr_Fts5Context_ptr *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pFVar8->xColumnCount = p_Var7;" (assignment_expression "pFVar8->xColumnCount = p_Var7" (field_expression "pFVar8->xColumnCount" identifier -> field_identifier) = identifier) ;) (expression_statement "iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize);" (assignment_expression "iVar4 = (*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize)" identifier = (call_expression "(*((Fts5ExtensionApi *)iCol)->xInstCount)\n                            ((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize)" (parenthesized_expression "(*((Fts5ExtensionApi *)iCol)->xInstCount)" ( (pointer_expression "*((Fts5ExtensionApi *)iCol)->xInstCount" * (field_expression "((Fts5ExtensionApi *)iCol)->xInstCount" (parenthesized_expression "((Fts5ExtensionApi *)iCol)" ( (cast_expression "(Fts5ExtensionApi *)iCol" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) )) -> field_identifier)) )) (argument_list "((Fts5Context *)bZero,(int *)&pFVar8->xColumnTotalSize)" ( (cast_expression "(Fts5Context *)bZero" ( (type_descriptor "Fts5Context *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int *)&pFVar8->xColumnTotalSize" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pFVar8->xColumnTotalSize" & (field_expression "pFVar8->xColumnTotalSize" identifier -> field_identifier))) )))) ;) (if_statement "if (iVar4 != 0) {\n            return;\n          }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "fts5CInstIterNext((CInstIter *)pFVar8);" (call_expression "fts5CInstIterNext((CInstIter *)pFVar8)" identifier (argument_list "((CInstIter *)pFVar8)" ( (cast_expression "(CInstIter *)pFVar8" ( (type_descriptor "CInstIter *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) (labeled_statement "LAB_00025c18:\n      iVar11 = iVar11 - iVar14;" statement_identifier : (expression_statement "iVar11 = iVar11 - iVar14;" (assignment_expression "iVar11 = iVar11 - iVar14" identifier = (binary_expression "iVar11 - iVar14" identifier - identifier)) ;)) (if_statement "if (iVar11 == 0) {\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }" if (parenthesized_expression "(iVar11 == 0)" ( (binary_expression "iVar11 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar14 = 0;\n        pFVar6 = pFVar5;\n        goto joined_r0x00025c58;\n      }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pFVar6 = pFVar5;" (assignment_expression "pFVar6 = pFVar5" identifier = identifier) ;) (goto_statement "goto joined_r0x00025c58;" goto statement_identifier ;) })) (expression_statement "bVar1 = *(byte *)((int)&pFVar5->iVersion + 1);" (assignment_expression "bVar1 = *(byte *)((int)&pFVar5->iVersion + 1)" identifier = (pointer_expression "*(byte *)((int)&pFVar5->iVersion + 1)" * (cast_expression "(byte *)((int)&pFVar5->iVersion + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar5->iVersion + 1)" ( (binary_expression "(int)&pFVar5->iVersion + 1" (cast_expression "(int)&pFVar5->iVersion" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar5->iVersion" & (field_expression "pFVar5->iVersion" identifier -> field_identifier))) + number_literal) ))))) ;) (expression_statement "pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1);" (assignment_expression "pFVar6 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1)" identifier = (cast_expression "(Fts5ExtensionApi *)((int)&pFVar5->iVersion + 1)" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar5->iVersion + 1)" ( (binary_expression "(int)&pFVar5->iVersion + 1" (cast_expression "(int)&pFVar5->iVersion" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar5->iVersion" & (field_expression "pFVar5->iVersion" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "pFVar8 = pFVar6;" (assignment_expression "pFVar8 = pFVar6" identifier = identifier) ;) (expression_statement "pFVar13 = pi;" (assignment_expression "pFVar13 = pi" identifier = identifier) ;) (if_statement "if ((char)bVar1 < '\0') {\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }\n      else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }" if (parenthesized_expression "((char)bVar1 < '\0')" ( (binary_expression "(char)bVar1 < '\0'" (cast_expression "(char)bVar1" ( (type_descriptor "char" primitive_type) ) identifier) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);\n        iCol = (int)pFVar6;\n        bZero = (int)pi;\n      }" { (expression_statement "iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi);" (assignment_expression "iVar14 = sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi)" identifier = (call_expression "sqlite3Fts3GetVarint32((char *)pFVar6,(int *)pi)" identifier (argument_list "((char *)pFVar6,(int *)pi)" ( (cast_expression "(char *)pFVar6" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(int *)pi" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (expression_statement "pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14);" (assignment_expression "pFVar3 = (Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14)" identifier = (cast_expression "(Fts5ExtensionApi *)((int)&pFVar8->iVersion + iVar14)" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar8->iVersion + iVar14)" ( (binary_expression "(int)&pFVar8->iVersion + iVar14" (cast_expression "(int)&pFVar8->iVersion" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar8->iVersion" & (field_expression "pFVar8->iVersion" identifier -> field_identifier))) + identifier) )))) ;) (expression_statement "iCol = (int)pFVar6;" (assignment_expression "iCol = (int)pFVar6" identifier = (cast_expression "(int)pFVar6" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "bZero = (int)pi;" (assignment_expression "bZero = (int)pi" identifier = (cast_expression "(int)pi" ( (type_descriptor "int" primitive_type) ) identifier)) ;) }) (else_clause "else {\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }" else (compound_statement "{\n        pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);\n        iCurrent = (uint)bVar1;\n      }" { (expression_statement "pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2);" (assignment_expression "pFVar3 = (Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2)" identifier = (cast_expression "(Fts5ExtensionApi *)((int)&pFVar5->iVersion + 2)" ( (type_descriptor "Fts5ExtensionApi *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)&pFVar5->iVersion + 2)" ( (binary_expression "(int)&pFVar5->iVersion + 2" (cast_expression "(int)&pFVar5->iVersion" ( (type_descriptor "int" primitive_type) ) (pointer_expression "&pFVar5->iVersion" & (field_expression "pFVar5->iVersion" identifier -> field_identifier))) + number_literal) )))) ;) (expression_statement "iCurrent = (uint)bVar1;" (assignment_expression "iCurrent = (uint)bVar1" identifier = (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier)) ;) }))) (expression_statement "pFVar6 = pFVar5;" (assignment_expression "pFVar6 = pFVar5" identifier = identifier) ;) }) while (parenthesized_expression "(pFVar9 <= pFVar3)" ( (binary_expression "pFVar9 <= pFVar3" identifier <= identifier) )) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "void FUN_00025b50(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte **ppbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  undefined4 uVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte **ppbVar12;\n  byte **ppbVar13;\n  int iVar14;\n  byte *local_20;\n  int local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar9 = 0xffffff80;\n  ppbVar13 = &local_20;\n  pbVar3 = (byte *)*param_3;\n  iVar10 = *(int *)param_4;\n  local_20 = (byte *)0x0;\n  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pbVar8 = pbVar3 + iVar10;\n  pbVar7 = param_4;\n  pbVar11 = param_1;\n  ppbVar12 = param_2;\n  pbVar6 = pbVar3;\n  if (pbVar8 <= pbVar3) goto LAB_00025c50;\n  do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );\n}\n\n" (function_definition "void FUN_00025b50(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte **ppbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  undefined4 uVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte **ppbVar12;\n  byte **ppbVar13;\n  int iVar14;\n  byte *local_20;\n  int local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar9 = 0xffffff80;\n  ppbVar13 = &local_20;\n  pbVar3 = (byte *)*param_3;\n  iVar10 = *(int *)param_4;\n  local_20 = (byte *)0x0;\n  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pbVar8 = pbVar3 + iVar10;\n  pbVar7 = param_4;\n  pbVar11 = param_1;\n  ppbVar12 = param_2;\n  pbVar6 = pbVar3;\n  if (pbVar8 <= pbVar3) goto LAB_00025c50;\n  do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );\n}" primitive_type (function_declarator "FUN_00025b50(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)" identifier (parameter_list "(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)" ( (parameter_declaration "byte *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "byte **param_2" type_identifier (pointer_declarator "**param_2" * (pointer_declarator "*param_2" * identifier))) , (parameter_declaration "undefined4 *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "byte *param_4" type_identifier (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte **ppbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  undefined4 uVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte **ppbVar12;\n  byte **ppbVar13;\n  int iVar14;\n  byte *local_20;\n  int local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar9 = 0xffffff80;\n  ppbVar13 = &local_20;\n  pbVar3 = (byte *)*param_3;\n  iVar10 = *(int *)param_4;\n  local_20 = (byte *)0x0;\n  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pbVar8 = pbVar3 + iVar10;\n  pbVar7 = param_4;\n  pbVar11 = param_1;\n  ppbVar12 = param_2;\n  pbVar6 = pbVar3;\n  if (pbVar8 <= pbVar3) goto LAB_00025c50;\n  do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "undefined *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "byte **ppbVar5;" type_identifier (pointer_declarator "**ppbVar5" * (pointer_declarator "*ppbVar5" * identifier)) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "undefined4 uVar9;" type_identifier identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "byte *pbVar11;" type_identifier (pointer_declarator "*pbVar11" * identifier) ;) (declaration "byte **ppbVar12;" type_identifier (pointer_declarator "**ppbVar12" * (pointer_declarator "*ppbVar12" * identifier)) ;) (declaration "byte **ppbVar13;" type_identifier (pointer_declarator "**ppbVar13" * (pointer_declarator "*ppbVar13" * identifier)) ;) (declaration "int iVar14;" primitive_type identifier ;) (declaration "byte *local_20;" type_identifier (pointer_declarator "*local_20" * identifier) ;) (declaration "int local_1c;" primitive_type identifier ;) (expression_statement "puVar2 = PTR___stack_chk_guard_0015ca30;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0015ca30" identifier = identifier) ;) (expression_statement "uVar9 = 0xffffff80;" (assignment_expression "uVar9 = 0xffffff80" identifier = number_literal) ;) (expression_statement "ppbVar13 = &local_20;" (assignment_expression "ppbVar13 = &local_20" identifier = (pointer_expression "&local_20" & identifier)) ;) (expression_statement "pbVar3 = (byte *)*param_3;" (assignment_expression "pbVar3 = (byte *)*param_3" identifier = (cast_expression "(byte *)*param_3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_3" * identifier))) ;) (expression_statement "iVar10 = *(int *)param_4;" (assignment_expression "iVar10 = *(int *)param_4" identifier = (pointer_expression "*(int *)param_4" * (cast_expression "(int *)param_4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "local_20 = (byte *)0x0;" (assignment_expression "local_20 = (byte *)0x0" identifier = (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0015ca30;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0015ca30" identifier = (pointer_expression "*(int *)PTR___stack_chk_guard_0015ca30" * (cast_expression "(int *)PTR___stack_chk_guard_0015ca30" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) ;) (expression_statement "pbVar8 = pbVar3 + iVar10;" (assignment_expression "pbVar8 = pbVar3 + iVar10" identifier = (binary_expression "pbVar3 + iVar10" identifier + identifier)) ;) (expression_statement "pbVar7 = param_4;" (assignment_expression "pbVar7 = param_4" identifier = identifier) ;) (expression_statement "pbVar11 = param_1;" (assignment_expression "pbVar11 = param_1" identifier = identifier) ;) (expression_statement "ppbVar12 = param_2;" (assignment_expression "ppbVar12 = param_2" identifier = identifier) ;) (expression_statement "pbVar6 = pbVar3;" (assignment_expression "pbVar6 = pbVar3" identifier = identifier) ;) (if_statement "if (pbVar8 <= pbVar3) goto LAB_00025c50;" if (parenthesized_expression "(pbVar8 <= pbVar3)" ( (binary_expression "pbVar8 <= pbVar3" identifier <= identifier) )) (goto_statement "goto LAB_00025c50;" goto statement_identifier ;)) (do_statement "do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );" do (compound_statement "{\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  }" { (expression_statement "param_1 = (byte *)(int)(char)*pbVar3;" (assignment_expression "param_1 = (byte *)(int)(char)*pbVar3" identifier = (cast_expression "(byte *)(int)(char)*pbVar3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar3" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar3" * identifier))))) ;) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" identifier = identifier) ;) (while_statement "while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }" while (parenthesized_expression "(((uint)pbVar4 & 0xfe) != 0)" ( (binary_expression "((uint)pbVar4 & 0xfe) != 0" (parenthesized_expression "((uint)pbVar4 & 0xfe)" ( (binary_expression "(uint)pbVar4 & 0xfe" (cast_expression "(uint)pbVar4" ( (type_descriptor "uint" type_identifier) ) identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }" { (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" identifier = (binary_expression "pbVar3 + 1" identifier + number_literal)) ;) (expression_statement "bVar1 = (byte)param_1;" (assignment_expression "bVar1 = (byte)param_1" identifier = (cast_expression "(byte)param_1" ( (type_descriptor "byte" type_identifier) ) identifier)) ;) (if_statement "if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }" if (parenthesized_expression "(pbVar8 == pbVar3)" ( (binary_expression "pbVar8 == pbVar3" identifier == identifier) )) (compound_statement "{\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }" { (expression_statement "iVar14 = (int)pbVar8 - (int)pbVar6;" (assignment_expression "iVar14 = (int)pbVar8 - (int)pbVar6" identifier = (binary_expression "(int)pbVar8 - (int)pbVar6" (cast_expression "(int)pbVar8" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar4 = pbVar8;" (assignment_expression "pbVar4 = pbVar8" identifier = identifier) ;) (expression_statement "ppbVar5 = ppbVar13;" (assignment_expression "ppbVar5 = ppbVar13" identifier = identifier) ;) (if_statement "if (local_20 != pbVar11) goto LAB_00025c18;" if (parenthesized_expression "(local_20 != pbVar11)" ( (binary_expression "local_20 != pbVar11" identifier != identifier) )) (goto_statement "goto LAB_00025c18;" goto statement_identifier ;)) (goto_statement "goto LAB_00025c58;" goto statement_identifier ;) })) (expression_statement "param_1 = (byte *)(int)(char)*pbVar3;" (assignment_expression "param_1 = (byte *)(int)(char)*pbVar3" identifier = (cast_expression "(byte *)(int)(char)*pbVar3" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)*pbVar3" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)*pbVar3" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*pbVar3" * identifier))))) ;) (expression_statement "pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);" (assignment_expression "pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9)" identifier = (cast_expression "(byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(int)(char)(*pbVar3 | bVar1 & (byte)uVar9)" ( (type_descriptor "int" primitive_type) ) (cast_expression "(char)(*pbVar3 | bVar1 & (byte)uVar9)" ( (type_descriptor "char" primitive_type) ) (parenthesized_expression "(*pbVar3 | bVar1 & (byte)uVar9)" ( (binary_expression "*pbVar3 | bVar1 & (byte)uVar9" (pointer_expression "*pbVar3" * identifier) | (binary_expression "bVar1 & (byte)uVar9" identifier & (cast_expression "(byte)uVar9" ( (type_descriptor "byte" type_identifier) ) identifier))) )))))) ;) })) (labeled_statement "LAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);" statement_identifier : (do_statement "do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);" do (compound_statement "{\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    }" { (expression_statement "iVar14 = (int)pbVar3 - (int)pbVar6;" (assignment_expression "iVar14 = (int)pbVar3 - (int)pbVar6" identifier = (binary_expression "(int)pbVar3 - (int)pbVar6" (cast_expression "(int)pbVar3" ( (type_descriptor "int" primitive_type) ) identifier) - (cast_expression "(int)pbVar6" ( (type_descriptor "int" primitive_type) ) identifier))) ;) (expression_statement "pbVar4 = pbVar3;" (assignment_expression "pbVar4 = pbVar3" identifier = identifier) ;) (expression_statement "ppbVar5 = ppbVar13;" (assignment_expression "ppbVar5 = ppbVar13" identifier = identifier) ;) (if_statement "if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }" if (parenthesized_expression "(local_20 == pbVar11)" ( (binary_expression "local_20 == pbVar11" identifier == identifier) )) (compound_statement "{\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }" { (labeled_statement "LAB_00025c58:\n        param_1 = pbVar6 + iVar14;" statement_identifier : (expression_statement "param_1 = pbVar6 + iVar14;" (assignment_expression "param_1 = pbVar6 + iVar14" identifier = (binary_expression "pbVar6 + iVar14" identifier + identifier)) ;)) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" identifier = identifier) ;) (labeled_statement "joined_r0x00025c58:\n        pbVar3 = local_20;" statement_identifier : (expression_statement "pbVar3 = local_20;" (assignment_expression "pbVar3 = local_20" identifier = identifier) ;)) (if_statement "if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }" if (parenthesized_expression "((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8))" ( (binary_expression "(ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)" (parenthesized_expression "(ppbVar12 != (byte **)0x0)" ( (binary_expression "ppbVar12 != (byte **)0x0" identifier != (cast_expression "(byte **)0x0" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) && (parenthesized_expression "(param_1 = pbVar4, pbVar4 != pbVar8)" ( (comma_expression "param_1 = pbVar4, pbVar4 != pbVar8" (assignment_expression "param_1 = pbVar4" identifier = identifier) , (binary_expression "pbVar4 != pbVar8" identifier != identifier)) ))) )) (compound_statement "{\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }" { (expression_statement "pbVar3 = pbVar8 + -(int)pbVar4;" (assignment_expression "pbVar3 = pbVar8 + -(int)pbVar4" identifier = (binary_expression "pbVar8 + -(int)pbVar4" identifier + (unary_expression "-(int)pbVar4" - (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier)))) ;) (expression_statement "param_2 = (byte **)0x0;" (assignment_expression "param_2 = (byte **)0x0" identifier = (cast_expression "(byte **)0x0" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (expression_statement "(*(code *)PTR_memset_0015c9b8)();" (call_expression "(*(code *)PTR_memset_0015c9b8)()" (parenthesized_expression "(*(code *)PTR_memset_0015c9b8)" ( (pointer_expression "*(code *)PTR_memset_0015c9b8" * (cast_expression "(code *)PTR_memset_0015c9b8" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "param_1 = pbVar4;" (assignment_expression "param_1 = pbVar4" identifier = identifier) ;) })) (expression_statement "*param_3 = pbVar6;" (assignment_expression "*param_3 = pbVar6" (pointer_expression "*param_3" * identifier) = identifier) ;) (expression_statement "*(int *)param_4 = iVar14;" (assignment_expression "*(int *)param_4 = iVar14" (pointer_expression "*(int *)param_4" * (cast_expression "(int *)param_4" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (if_statement "if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }" if (parenthesized_expression "(local_1c != *(int *)puVar2)" ( (binary_expression "local_1c != *(int *)puVar2" identifier != (pointer_expression "*(int *)puVar2" * (cast_expression "(int *)puVar2" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }" { (expression_statement "(*(code *)PTR___stack_chk_fail_0015ca14)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ca14)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ca14)" ( (pointer_expression "*(code *)PTR___stack_chk_fail_0015ca14" * (cast_expression "(code *)PTR___stack_chk_fail_0015ca14" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "()" ( ))) ;) (expression_statement "pbVar7[0xc] = 0;" (assignment_expression "pbVar7[0xc] = 0" (subscript_expression "pbVar7[0xc]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0xd] = 0;" (assignment_expression "pbVar7[0xd] = 0" (subscript_expression "pbVar7[0xd]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0xe] = 0;" (assignment_expression "pbVar7[0xe] = 0" (subscript_expression "pbVar7[0xe]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0xf] = 0;" (assignment_expression "pbVar7[0xf] = 0" (subscript_expression "pbVar7[0xf]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x10] = 0;" (assignment_expression "pbVar7[0x10] = 0" (subscript_expression "pbVar7[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x11] = 0;" (assignment_expression "pbVar7[0x11] = 0" (subscript_expression "pbVar7[0x11]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x12] = 0;" (assignment_expression "pbVar7[0x12] = 0" (subscript_expression "pbVar7[0x12]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x13] = 0;" (assignment_expression "pbVar7[0x13] = 0" (subscript_expression "pbVar7[0x13]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x14] = 0;" (assignment_expression "pbVar7[0x14] = 0" (subscript_expression "pbVar7[0x14]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x15] = 0;" (assignment_expression "pbVar7[0x15] = 0" (subscript_expression "pbVar7[0x15]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x16] = 0;" (assignment_expression "pbVar7[0x16] = 0" (subscript_expression "pbVar7[0x16]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x17] = 0;" (assignment_expression "pbVar7[0x17] = 0" (subscript_expression "pbVar7[0x17]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x18] = 0;" (assignment_expression "pbVar7[0x18] = 0" (subscript_expression "pbVar7[0x18]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x19] = 0;" (assignment_expression "pbVar7[0x19] = 0" (subscript_expression "pbVar7[0x19]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x1a] = 0;" (assignment_expression "pbVar7[0x1a] = 0" (subscript_expression "pbVar7[0x1a]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "pbVar7[0x1b] = 0;" (assignment_expression "pbVar7[0x1b] = 0" (subscript_expression "pbVar7[0x1b]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(byte **)pbVar7 = param_1;" (assignment_expression "*(byte **)pbVar7 = param_1" (pointer_expression "*(byte **)pbVar7" * (cast_expression "(byte **)pbVar7" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier)) = identifier) ;) (expression_statement "*(byte ***)(pbVar7 + 4) = param_2;" (assignment_expression "*(byte ***)(pbVar7 + 4) = param_2" (pointer_expression "*(byte ***)(pbVar7 + 4)" * (cast_expression "(byte ***)(pbVar7 + 4)" ( (type_descriptor "byte ***" type_identifier (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(pbVar7 + 4)" ( (binary_expression "pbVar7 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(byte **)(pbVar7 + 8) = pbVar3;" (assignment_expression "*(byte **)(pbVar7 + 8) = pbVar3" (pointer_expression "*(byte **)(pbVar7 + 8)" * (cast_expression "(byte **)(pbVar7 + 8)" ( (type_descriptor "byte **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pbVar7 + 8)" ( (binary_expression "pbVar7 + 8" identifier + number_literal) )))) = identifier) ;) (expression_statement "iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);" (assignment_expression "iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10)" identifier = (call_expression "(**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10)" (parenthesized_expression "(**(code **)(param_1 + 0x20))" ( (pointer_expression "**(code **)(param_1 + 0x20)" * (pointer_expression "*(code **)(param_1 + 0x20)" * (cast_expression "(code **)(param_1 + 0x20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x20)" ( (binary_expression "param_1 + 0x20" identifier + number_literal) ))))) )) (argument_list "(param_2,pbVar7 + 0x10)" ( identifier , (binary_expression "pbVar7 + 0x10" identifier + number_literal) )))) ;) (if_statement "if (iVar10 != 0) {\n            return;\n          }" if (parenthesized_expression "(iVar10 != 0)" ( (binary_expression "iVar10 != 0" identifier != number_literal) )) (compound_statement "{\n            return;\n          }" { (return_statement "return;" return ;) })) (expression_statement "FUN_0002422c(pbVar7);" (call_expression "FUN_0002422c(pbVar7)" identifier (argument_list "(pbVar7)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })) (labeled_statement "LAB_00025c18:\n      iVar10 = iVar10 - iVar14;" statement_identifier : (expression_statement "iVar10 = iVar10 - iVar14;" (assignment_expression "iVar10 = iVar10 - iVar14" identifier = (binary_expression "iVar10 - iVar14" identifier - identifier)) ;)) (if_statement "if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }" if (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) (compound_statement "{\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }" { (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" identifier = number_literal) ;) (expression_statement "pbVar6 = pbVar4;" (assignment_expression "pbVar6 = pbVar4" identifier = identifier) ;) (goto_statement "goto joined_r0x00025c58;" goto statement_identifier ;) })) (expression_statement "pbVar6 = pbVar4 + 1;" (assignment_expression "pbVar6 = pbVar4 + 1" identifier = (binary_expression "pbVar4 + 1" identifier + number_literal)) ;) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" identifier = identifier) ;) (expression_statement "ppbVar13 = ppbVar5;" (assignment_expression "ppbVar13 = ppbVar5" identifier = identifier) ;) (if_statement "if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }" if (parenthesized_expression "((char)pbVar4[1] < '\0')" ( (binary_expression "(char)pbVar4[1] < '\0'" (cast_expression "(char)pbVar4[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ])) < (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }" { (expression_statement "iVar14 = FUN_000219b4();" (assignment_expression "iVar14 = FUN_000219b4()" identifier = (call_expression "FUN_000219b4()" identifier (argument_list "()" ( )))) ;) (expression_statement "pbVar3 = pbVar7 + iVar14;" (assignment_expression "pbVar3 = pbVar7 + iVar14" identifier = (binary_expression "pbVar7 + iVar14" identifier + identifier)) ;) (expression_statement "param_1 = pbVar6;" (assignment_expression "param_1 = pbVar6" identifier = identifier) ;) (expression_statement "param_2 = ppbVar5;" (assignment_expression "param_2 = ppbVar5" identifier = identifier) ;) }) (else_clause "else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }" else (compound_statement "{\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }" { (expression_statement "pbVar3 = pbVar4 + 2;" (assignment_expression "pbVar3 = pbVar4 + 2" identifier = (binary_expression "pbVar4 + 2" identifier + number_literal)) ;) (expression_statement "local_20 = (byte *)(uint)pbVar4[1];" (assignment_expression "local_20 = (byte *)(uint)pbVar4[1]" identifier = (cast_expression "(byte *)(uint)pbVar4[1]" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (cast_expression "(uint)pbVar4[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "pbVar4[1]" identifier [ number_literal ])))) ;) }))) (expression_statement "pbVar6 = pbVar4;" (assignment_expression "pbVar6 = pbVar4" identifier = identifier) ;) }) while (parenthesized_expression "(pbVar8 <= pbVar3)" ( (binary_expression "pbVar8 <= pbVar3" identifier <= identifier) )) ;)) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * (pointer_declarator * IDENT))) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) & LIT) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) | (binary_expression IDENT & (cast_expression ( (type_descriptor TYPE) ) IDENT))) )))))) ;) })) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) - (cast_expression ( (type_descriptor TYPE) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT != IDENT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (unary_expression - (cast_expression ( (type_descriptor TYPE) ) IDENT)))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) IDENT)) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression IDENT + LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return ;) })) (return_statement return ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])))) ;) }))) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;)) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "void FUN_00025b50(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)\n\n{\n  byte bVar1;\n  undefined *puVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte **ppbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  undefined4 uVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte **ppbVar12;\n  byte **ppbVar13;\n  int iVar14;\n  byte *local_20;\n  int local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar9 = 0xffffff80;\n  ppbVar13 = &local_20;\n  pbVar3 = (byte *)*param_3;\n  iVar10 = *(int *)param_4;\n  local_20 = (byte *)0x0;\n  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pbVar8 = pbVar3 + iVar10;\n  pbVar7 = param_4;\n  pbVar11 = param_1;\n  ppbVar12 = param_2;\n  pbVar6 = pbVar3;\n  if (pbVar8 <= pbVar3) goto LAB_00025c50;\n  do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );\n}" (primitive_type "void") (function_declarator "FUN_00025b50(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)" (identifier "FUN_00025b50") (parameter_list "(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)" (( "(") (parameter_declaration "byte *param_1" (type_identifier "byte") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "byte **param_2" (type_identifier "byte") (pointer_declarator "**param_2" (* "*") (pointer_declarator "*param_2" (* "*") (identifier "param_2")))) (, ",") (parameter_declaration "undefined4 *param_3" (type_identifier "undefined4") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "byte *param_4" (type_identifier "byte") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  undefined *puVar2;\n  byte *pbVar3;\n  byte *pbVar4;\n  byte **ppbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  undefined4 uVar9;\n  int iVar10;\n  byte *pbVar11;\n  byte **ppbVar12;\n  byte **ppbVar13;\n  int iVar14;\n  byte *local_20;\n  int local_1c;\n  \n  puVar2 = PTR___stack_chk_guard_0015ca30;\n  uVar9 = 0xffffff80;\n  ppbVar13 = &local_20;\n  pbVar3 = (byte *)*param_3;\n  iVar10 = *(int *)param_4;\n  local_20 = (byte *)0x0;\n  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;\n  pbVar8 = pbVar3 + iVar10;\n  pbVar7 = param_4;\n  pbVar11 = param_1;\n  ppbVar12 = param_2;\n  pbVar6 = pbVar3;\n  if (pbVar8 <= pbVar3) goto LAB_00025c50;\n  do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "undefined *puVar2;" (type_identifier "undefined") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "byte *pbVar3;" (type_identifier "byte") (pointer_declarator "*pbVar3" (* "*") (identifier "pbVar3")) (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "byte **ppbVar5;" (type_identifier "byte") (pointer_declarator "**ppbVar5" (* "*") (pointer_declarator "*ppbVar5" (* "*") (identifier "ppbVar5"))) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "undefined4 uVar9;" (type_identifier "undefined4") (identifier "uVar9") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "byte *pbVar11;" (type_identifier "byte") (pointer_declarator "*pbVar11" (* "*") (identifier "pbVar11")) (; ";")) (declaration "byte **ppbVar12;" (type_identifier "byte") (pointer_declarator "**ppbVar12" (* "*") (pointer_declarator "*ppbVar12" (* "*") (identifier "ppbVar12"))) (; ";")) (declaration "byte **ppbVar13;" (type_identifier "byte") (pointer_declarator "**ppbVar13" (* "*") (pointer_declarator "*ppbVar13" (* "*") (identifier "ppbVar13"))) (; ";")) (declaration "int iVar14;" (primitive_type "int") (identifier "iVar14") (; ";")) (declaration "byte *local_20;" (type_identifier "byte") (pointer_declarator "*local_20" (* "*") (identifier "local_20")) (; ";")) (declaration "int local_1c;" (primitive_type "int") (identifier "local_1c") (; ";")) (expression_statement "puVar2 = PTR___stack_chk_guard_0015ca30;" (assignment_expression "puVar2 = PTR___stack_chk_guard_0015ca30" (identifier "puVar2") (= "=") (identifier "PTR___stack_chk_guard_0015ca30")) (; ";")) (expression_statement "uVar9 = 0xffffff80;" (assignment_expression "uVar9 = 0xffffff80" (identifier "uVar9") (= "=") (number_literal "0xffffff80")) (; ";")) (expression_statement "ppbVar13 = &local_20;" (assignment_expression "ppbVar13 = &local_20" (identifier "ppbVar13") (= "=") (pointer_expression "&local_20" (& "&") (identifier "local_20"))) (; ";")) (expression_statement "pbVar3 = (byte *)*param_3;" (assignment_expression "pbVar3 = (byte *)*param_3" (identifier "pbVar3") (= "=") (cast_expression "(byte *)*param_3" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_3" (* "*") (identifier "param_3")))) (; ";")) (expression_statement "iVar10 = *(int *)param_4;" (assignment_expression "iVar10 = *(int *)param_4" (identifier "iVar10") (= "=") (pointer_expression "*(int *)param_4" (* "*") (cast_expression "(int *)param_4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4")))) (; ";")) (expression_statement "local_20 = (byte *)0x0;" (assignment_expression "local_20 = (byte *)0x0" (identifier "local_20") (= "=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "local_1c = *(int *)PTR___stack_chk_guard_0015ca30;" (assignment_expression "local_1c = *(int *)PTR___stack_chk_guard_0015ca30" (identifier "local_1c") (= "=") (pointer_expression "*(int *)PTR___stack_chk_guard_0015ca30" (* "*") (cast_expression "(int *)PTR___stack_chk_guard_0015ca30" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_guard_0015ca30")))) (; ";")) (expression_statement "pbVar8 = pbVar3 + iVar10;" (assignment_expression "pbVar8 = pbVar3 + iVar10" (identifier "pbVar8") (= "=") (binary_expression "pbVar3 + iVar10" (identifier "pbVar3") (+ "+") (identifier "iVar10"))) (; ";")) (expression_statement "pbVar7 = param_4;" (assignment_expression "pbVar7 = param_4" (identifier "pbVar7") (= "=") (identifier "param_4")) (; ";")) (expression_statement "pbVar11 = param_1;" (assignment_expression "pbVar11 = param_1" (identifier "pbVar11") (= "=") (identifier "param_1")) (; ";")) (expression_statement "ppbVar12 = param_2;" (assignment_expression "ppbVar12 = param_2" (identifier "ppbVar12") (= "=") (identifier "param_2")) (; ";")) (expression_statement "pbVar6 = pbVar3;" (assignment_expression "pbVar6 = pbVar3" (identifier "pbVar6") (= "=") (identifier "pbVar3")) (; ";")) (if_statement "if (pbVar8 <= pbVar3) goto LAB_00025c50;" (if "if") (parenthesized_expression "(pbVar8 <= pbVar3)" (( "(") (binary_expression "pbVar8 <= pbVar3" (identifier "pbVar8") (<= "<=") (identifier "pbVar3")) () ")")) (goto_statement "goto LAB_00025c50;" (goto "goto") (statement_identifier "LAB_00025c50") (; ";"))) (do_statement "do {\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  } while( true );" (do "do") (compound_statement "{\n    param_1 = (byte *)(int)(char)*pbVar3;\n    pbVar4 = param_1;\n    while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }\nLAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);\n  }" ({ "{") (expression_statement "param_1 = (byte *)(int)(char)*pbVar3;" (assignment_expression "param_1 = (byte *)(int)(char)*pbVar3" (identifier "param_1") (= "=") (cast_expression "(byte *)(int)(char)*pbVar3" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")))))) (; ";")) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" (identifier "pbVar4") (= "=") (identifier "param_1")) (; ";")) (while_statement "while (((uint)pbVar4 & 0xfe) != 0) {\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }" (while "while") (parenthesized_expression "(((uint)pbVar4 & 0xfe) != 0)" (( "(") (binary_expression "((uint)pbVar4 & 0xfe) != 0" (parenthesized_expression "((uint)pbVar4 & 0xfe)" (( "(") (binary_expression "(uint)pbVar4 & 0xfe" (cast_expression "(uint)pbVar4" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "pbVar4")) (& "&") (number_literal "0xfe")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      pbVar3 = pbVar3 + 1;\n      bVar1 = (byte)param_1;\n      if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }\n      param_1 = (byte *)(int)(char)*pbVar3;\n      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);\n    }" ({ "{") (expression_statement "pbVar3 = pbVar3 + 1;" (assignment_expression "pbVar3 = pbVar3 + 1" (identifier "pbVar3") (= "=") (binary_expression "pbVar3 + 1" (identifier "pbVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "bVar1 = (byte)param_1;" (assignment_expression "bVar1 = (byte)param_1" (identifier "bVar1") (= "=") (cast_expression "(byte)param_1" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "param_1"))) (; ";")) (if_statement "if (pbVar8 == pbVar3) {\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }" (if "if") (parenthesized_expression "(pbVar8 == pbVar3)" (( "(") (binary_expression "pbVar8 == pbVar3" (identifier "pbVar8") (== "==") (identifier "pbVar3")) () ")")) (compound_statement "{\n        iVar14 = (int)pbVar8 - (int)pbVar6;\n        pbVar4 = pbVar8;\n        ppbVar5 = ppbVar13;\n        if (local_20 != pbVar11) goto LAB_00025c18;\n        goto LAB_00025c58;\n      }" ({ "{") (expression_statement "iVar14 = (int)pbVar8 - (int)pbVar6;" (assignment_expression "iVar14 = (int)pbVar8 - (int)pbVar6" (identifier "iVar14") (= "=") (binary_expression "(int)pbVar8 - (int)pbVar6" (cast_expression "(int)pbVar8" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar8")) (- "-") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6")))) (; ";")) (expression_statement "pbVar4 = pbVar8;" (assignment_expression "pbVar4 = pbVar8" (identifier "pbVar4") (= "=") (identifier "pbVar8")) (; ";")) (expression_statement "ppbVar5 = ppbVar13;" (assignment_expression "ppbVar5 = ppbVar13" (identifier "ppbVar5") (= "=") (identifier "ppbVar13")) (; ";")) (if_statement "if (local_20 != pbVar11) goto LAB_00025c18;" (if "if") (parenthesized_expression "(local_20 != pbVar11)" (( "(") (binary_expression "local_20 != pbVar11" (identifier "local_20") (!= "!=") (identifier "pbVar11")) () ")")) (goto_statement "goto LAB_00025c18;" (goto "goto") (statement_identifier "LAB_00025c18") (; ";"))) (goto_statement "goto LAB_00025c58;" (goto "goto") (statement_identifier "LAB_00025c58") (; ";")) (} "}"))) (expression_statement "param_1 = (byte *)(int)(char)*pbVar3;" (assignment_expression "param_1 = (byte *)(int)(char)*pbVar3" (identifier "param_1") (= "=") (cast_expression "(byte *)(int)(char)*pbVar3" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)*pbVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)*pbVar3" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")))))) (; ";")) (expression_statement "pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);" (assignment_expression "pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9)" (identifier "pbVar4") (= "=") (cast_expression "(byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(int)(char)(*pbVar3 | bVar1 & (byte)uVar9)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (cast_expression "(char)(*pbVar3 | bVar1 & (byte)uVar9)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (parenthesized_expression "(*pbVar3 | bVar1 & (byte)uVar9)" (( "(") (binary_expression "*pbVar3 | bVar1 & (byte)uVar9" (pointer_expression "*pbVar3" (* "*") (identifier "pbVar3")) (| "|") (binary_expression "bVar1 & (byte)uVar9" (identifier "bVar1") (& "&") (cast_expression "(byte)uVar9" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (identifier "uVar9")))) () ")")))))) (; ";")) (} "}"))) (labeled_statement "LAB_00025c50:\n    do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);" (statement_identifier "LAB_00025c50") (: ":") (do_statement "do {\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    } while (pbVar8 <= pbVar3);" (do "do") (compound_statement "{\n      iVar14 = (int)pbVar3 - (int)pbVar6;\n      pbVar4 = pbVar3;\n      ppbVar5 = ppbVar13;\n      if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }\nLAB_00025c18:\n      iVar10 = iVar10 - iVar14;\n      if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }\n      pbVar6 = pbVar4 + 1;\n      pbVar7 = pbVar6;\n      ppbVar13 = ppbVar5;\n      if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }\n      pbVar6 = pbVar4;\n    }" ({ "{") (expression_statement "iVar14 = (int)pbVar3 - (int)pbVar6;" (assignment_expression "iVar14 = (int)pbVar3 - (int)pbVar6" (identifier "iVar14") (= "=") (binary_expression "(int)pbVar3 - (int)pbVar6" (cast_expression "(int)pbVar3" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar3")) (- "-") (cast_expression "(int)pbVar6" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar6")))) (; ";")) (expression_statement "pbVar4 = pbVar3;" (assignment_expression "pbVar4 = pbVar3" (identifier "pbVar4") (= "=") (identifier "pbVar3")) (; ";")) (expression_statement "ppbVar5 = ppbVar13;" (assignment_expression "ppbVar5 = ppbVar13" (identifier "ppbVar5") (= "=") (identifier "ppbVar13")) (; ";")) (if_statement "if (local_20 == pbVar11) {\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }" (if "if") (parenthesized_expression "(local_20 == pbVar11)" (( "(") (binary_expression "local_20 == pbVar11" (identifier "local_20") (== "==") (identifier "pbVar11")) () ")")) (compound_statement "{\nLAB_00025c58:\n        param_1 = pbVar6 + iVar14;\n        pbVar4 = param_1;\njoined_r0x00025c58:\n        pbVar3 = local_20;\n        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }\n        *param_3 = pbVar6;\n        *(int *)param_4 = iVar14;\n        if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }\n        return;\n      }" ({ "{") (labeled_statement "LAB_00025c58:\n        param_1 = pbVar6 + iVar14;" (statement_identifier "LAB_00025c58") (: ":") (expression_statement "param_1 = pbVar6 + iVar14;" (assignment_expression "param_1 = pbVar6 + iVar14" (identifier "param_1") (= "=") (binary_expression "pbVar6 + iVar14" (identifier "pbVar6") (+ "+") (identifier "iVar14"))) (; ";"))) (expression_statement "pbVar4 = param_1;" (assignment_expression "pbVar4 = param_1" (identifier "pbVar4") (= "=") (identifier "param_1")) (; ";")) (labeled_statement "joined_r0x00025c58:\n        pbVar3 = local_20;" (statement_identifier "joined_r0x00025c58") (: ":") (expression_statement "pbVar3 = local_20;" (assignment_expression "pbVar3 = local_20" (identifier "pbVar3") (= "=") (identifier "local_20")) (; ";"))) (if_statement "if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }" (if "if") (parenthesized_expression "((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8))" (( "(") (binary_expression "(ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)" (parenthesized_expression "(ppbVar12 != (byte **)0x0)" (( "(") (binary_expression "ppbVar12 != (byte **)0x0" (identifier "ppbVar12") (!= "!=") (cast_expression "(byte **)0x0" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(param_1 = pbVar4, pbVar4 != pbVar8)" (( "(") (comma_expression "param_1 = pbVar4, pbVar4 != pbVar8" (assignment_expression "param_1 = pbVar4" (identifier "param_1") (= "=") (identifier "pbVar4")) (, ",") (binary_expression "pbVar4 != pbVar8" (identifier "pbVar4") (!= "!=") (identifier "pbVar8"))) () ")"))) () ")")) (compound_statement "{\n          pbVar3 = pbVar8 + -(int)pbVar4;\n          param_2 = (byte **)0x0;\n          (*(code *)PTR_memset_0015c9b8)();\n          param_1 = pbVar4;\n        }" ({ "{") (expression_statement "pbVar3 = pbVar8 + -(int)pbVar4;" (assignment_expression "pbVar3 = pbVar8 + -(int)pbVar4" (identifier "pbVar3") (= "=") (binary_expression "pbVar8 + -(int)pbVar4" (identifier "pbVar8") (+ "+") (unary_expression "-(int)pbVar4" (- "-") (cast_expression "(int)pbVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar4"))))) (; ";")) (expression_statement "param_2 = (byte **)0x0;" (assignment_expression "param_2 = (byte **)0x0" (identifier "param_2") (= "=") (cast_expression "(byte **)0x0" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "(*(code *)PTR_memset_0015c9b8)();" (call_expression "(*(code *)PTR_memset_0015c9b8)()" (parenthesized_expression "(*(code *)PTR_memset_0015c9b8)" (( "(") (pointer_expression "*(code *)PTR_memset_0015c9b8" (* "*") (cast_expression "(code *)PTR_memset_0015c9b8" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_memset_0015c9b8"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "param_1 = pbVar4;" (assignment_expression "param_1 = pbVar4" (identifier "param_1") (= "=") (identifier "pbVar4")) (; ";")) (} "}"))) (expression_statement "*param_3 = pbVar6;" (assignment_expression "*param_3 = pbVar6" (pointer_expression "*param_3" (* "*") (identifier "param_3")) (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "*(int *)param_4 = iVar14;" (assignment_expression "*(int *)param_4 = iVar14" (pointer_expression "*(int *)param_4" (* "*") (cast_expression "(int *)param_4" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_4"))) (= "=") (identifier "iVar14")) (; ";")) (if_statement "if (local_1c != *(int *)puVar2) {\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }" (if "if") (parenthesized_expression "(local_1c != *(int *)puVar2)" (( "(") (binary_expression "local_1c != *(int *)puVar2" (identifier "local_1c") (!= "!=") (pointer_expression "*(int *)puVar2" (* "*") (cast_expression "(int *)puVar2" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar2")))) () ")")) (compound_statement "{\n          (*(code *)PTR___stack_chk_fail_0015ca14)();\n          pbVar7[0xc] = 0;\n          pbVar7[0xd] = 0;\n          pbVar7[0xe] = 0;\n          pbVar7[0xf] = 0;\n          pbVar7[0x10] = 0;\n          pbVar7[0x11] = 0;\n          pbVar7[0x12] = 0;\n          pbVar7[0x13] = 0;\n          pbVar7[0x14] = 0;\n          pbVar7[0x15] = 0;\n          pbVar7[0x16] = 0;\n          pbVar7[0x17] = 0;\n          pbVar7[0x18] = 0;\n          pbVar7[0x19] = 0;\n          pbVar7[0x1a] = 0;\n          pbVar7[0x1b] = 0;\n          *(byte **)pbVar7 = param_1;\n          *(byte ***)(pbVar7 + 4) = param_2;\n          *(byte **)(pbVar7 + 8) = pbVar3;\n          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);\n          if (iVar10 != 0) {\n            return;\n          }\n          FUN_0002422c(pbVar7);\n          return;\n        }" ({ "{") (expression_statement "(*(code *)PTR___stack_chk_fail_0015ca14)();" (call_expression "(*(code *)PTR___stack_chk_fail_0015ca14)()" (parenthesized_expression "(*(code *)PTR___stack_chk_fail_0015ca14)" (( "(") (pointer_expression "*(code *)PTR___stack_chk_fail_0015ca14" (* "*") (cast_expression "(code *)PTR___stack_chk_fail_0015ca14" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR___stack_chk_fail_0015ca14"))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "pbVar7[0xc] = 0;" (assignment_expression "pbVar7[0xc] = 0" (subscript_expression "pbVar7[0xc]" (identifier "pbVar7") ([ "[") (number_literal "0xc") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0xd] = 0;" (assignment_expression "pbVar7[0xd] = 0" (subscript_expression "pbVar7[0xd]" (identifier "pbVar7") ([ "[") (number_literal "0xd") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0xe] = 0;" (assignment_expression "pbVar7[0xe] = 0" (subscript_expression "pbVar7[0xe]" (identifier "pbVar7") ([ "[") (number_literal "0xe") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0xf] = 0;" (assignment_expression "pbVar7[0xf] = 0" (subscript_expression "pbVar7[0xf]" (identifier "pbVar7") ([ "[") (number_literal "0xf") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x10] = 0;" (assignment_expression "pbVar7[0x10] = 0" (subscript_expression "pbVar7[0x10]" (identifier "pbVar7") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x11] = 0;" (assignment_expression "pbVar7[0x11] = 0" (subscript_expression "pbVar7[0x11]" (identifier "pbVar7") ([ "[") (number_literal "0x11") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x12] = 0;" (assignment_expression "pbVar7[0x12] = 0" (subscript_expression "pbVar7[0x12]" (identifier "pbVar7") ([ "[") (number_literal "0x12") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x13] = 0;" (assignment_expression "pbVar7[0x13] = 0" (subscript_expression "pbVar7[0x13]" (identifier "pbVar7") ([ "[") (number_literal "0x13") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x14] = 0;" (assignment_expression "pbVar7[0x14] = 0" (subscript_expression "pbVar7[0x14]" (identifier "pbVar7") ([ "[") (number_literal "0x14") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x15] = 0;" (assignment_expression "pbVar7[0x15] = 0" (subscript_expression "pbVar7[0x15]" (identifier "pbVar7") ([ "[") (number_literal "0x15") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x16] = 0;" (assignment_expression "pbVar7[0x16] = 0" (subscript_expression "pbVar7[0x16]" (identifier "pbVar7") ([ "[") (number_literal "0x16") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x17] = 0;" (assignment_expression "pbVar7[0x17] = 0" (subscript_expression "pbVar7[0x17]" (identifier "pbVar7") ([ "[") (number_literal "0x17") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x18] = 0;" (assignment_expression "pbVar7[0x18] = 0" (subscript_expression "pbVar7[0x18]" (identifier "pbVar7") ([ "[") (number_literal "0x18") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x19] = 0;" (assignment_expression "pbVar7[0x19] = 0" (subscript_expression "pbVar7[0x19]" (identifier "pbVar7") ([ "[") (number_literal "0x19") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x1a] = 0;" (assignment_expression "pbVar7[0x1a] = 0" (subscript_expression "pbVar7[0x1a]" (identifier "pbVar7") ([ "[") (number_literal "0x1a") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar7[0x1b] = 0;" (assignment_expression "pbVar7[0x1b] = 0" (subscript_expression "pbVar7[0x1b]" (identifier "pbVar7") ([ "[") (number_literal "0x1b") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(byte **)pbVar7 = param_1;" (assignment_expression "*(byte **)pbVar7 = param_1" (pointer_expression "*(byte **)pbVar7" (* "*") (cast_expression "(byte **)pbVar7" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (identifier "pbVar7"))) (= "=") (identifier "param_1")) (; ";")) (expression_statement "*(byte ***)(pbVar7 + 4) = param_2;" (assignment_expression "*(byte ***)(pbVar7 + 4) = param_2" (pointer_expression "*(byte ***)(pbVar7 + 4)" (* "*") (cast_expression "(byte ***)(pbVar7 + 4)" (( "(") (type_descriptor "byte ***" (type_identifier "byte") (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(pbVar7 + 4)" (( "(") (binary_expression "pbVar7 + 4" (identifier "pbVar7") (+ "+") (number_literal "4")) () ")")))) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(byte **)(pbVar7 + 8) = pbVar3;" (assignment_expression "*(byte **)(pbVar7 + 8) = pbVar3" (pointer_expression "*(byte **)(pbVar7 + 8)" (* "*") (cast_expression "(byte **)(pbVar7 + 8)" (( "(") (type_descriptor "byte **" (type_identifier "byte") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pbVar7 + 8)" (( "(") (binary_expression "pbVar7 + 8" (identifier "pbVar7") (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "pbVar3")) (; ";")) (expression_statement "iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);" (assignment_expression "iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10)" (identifier "iVar10") (= "=") (call_expression "(**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10)" (parenthesized_expression "(**(code **)(param_1 + 0x20))" (( "(") (pointer_expression "**(code **)(param_1 + 0x20)" (* "*") (pointer_expression "*(code **)(param_1 + 0x20)" (* "*") (cast_expression "(code **)(param_1 + 0x20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x20)" (( "(") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20")) () ")"))))) () ")")) (argument_list "(param_2,pbVar7 + 0x10)" (( "(") (identifier "param_2") (, ",") (binary_expression "pbVar7 + 0x10" (identifier "pbVar7") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (if_statement "if (iVar10 != 0) {\n            return;\n          }" (if "if") (parenthesized_expression "(iVar10 != 0)" (( "(") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            return;\n          }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "FUN_0002422c(pbVar7);" (call_expression "FUN_0002422c(pbVar7)" (identifier "FUN_0002422c") (argument_list "(pbVar7)" (( "(") (identifier "pbVar7") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}"))) (labeled_statement "LAB_00025c18:\n      iVar10 = iVar10 - iVar14;" (statement_identifier "LAB_00025c18") (: ":") (expression_statement "iVar10 = iVar10 - iVar14;" (assignment_expression "iVar10 = iVar10 - iVar14" (identifier "iVar10") (= "=") (binary_expression "iVar10 - iVar14" (identifier "iVar10") (- "-") (identifier "iVar14"))) (; ";"))) (if_statement "if (iVar10 == 0) {\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }" (if "if") (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        iVar14 = 0;\n        pbVar6 = pbVar4;\n        goto joined_r0x00025c58;\n      }" ({ "{") (expression_statement "iVar14 = 0;" (assignment_expression "iVar14 = 0" (identifier "iVar14") (= "=") (number_literal "0")) (; ";")) (expression_statement "pbVar6 = pbVar4;" (assignment_expression "pbVar6 = pbVar4" (identifier "pbVar6") (= "=") (identifier "pbVar4")) (; ";")) (goto_statement "goto joined_r0x00025c58;" (goto "goto") (statement_identifier "joined_r0x00025c58") (; ";")) (} "}"))) (expression_statement "pbVar6 = pbVar4 + 1;" (assignment_expression "pbVar6 = pbVar4 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar4 + 1" (identifier "pbVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar6;" (assignment_expression "pbVar7 = pbVar6" (identifier "pbVar7") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "ppbVar13 = ppbVar5;" (assignment_expression "ppbVar13 = ppbVar5" (identifier "ppbVar13") (= "=") (identifier "ppbVar5")) (; ";")) (if_statement "if ((char)pbVar4[1] < '\0') {\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }\n      else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }" (if "if") (parenthesized_expression "((char)pbVar4[1] < '\0')" (( "(") (binary_expression "(char)pbVar4[1] < '\0'" (cast_expression "(char)pbVar4[1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "pbVar4[1]" (identifier "pbVar4") ([ "[") (number_literal "1") (] "]"))) (< "<") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        iVar14 = FUN_000219b4();\n        pbVar3 = pbVar7 + iVar14;\n        param_1 = pbVar6;\n        param_2 = ppbVar5;\n      }" ({ "{") (expression_statement "iVar14 = FUN_000219b4();" (assignment_expression "iVar14 = FUN_000219b4()" (identifier "iVar14") (= "=") (call_expression "FUN_000219b4()" (identifier "FUN_000219b4") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pbVar3 = pbVar7 + iVar14;" (assignment_expression "pbVar3 = pbVar7 + iVar14" (identifier "pbVar3") (= "=") (binary_expression "pbVar7 + iVar14" (identifier "pbVar7") (+ "+") (identifier "iVar14"))) (; ";")) (expression_statement "param_1 = pbVar6;" (assignment_expression "param_1 = pbVar6" (identifier "param_1") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "param_2 = ppbVar5;" (assignment_expression "param_2 = ppbVar5" (identifier "param_2") (= "=") (identifier "ppbVar5")) (; ";")) (} "}")) (else_clause "else {\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }" (else "else") (compound_statement "{\n        pbVar3 = pbVar4 + 2;\n        local_20 = (byte *)(uint)pbVar4[1];\n      }" ({ "{") (expression_statement "pbVar3 = pbVar4 + 2;" (assignment_expression "pbVar3 = pbVar4 + 2" (identifier "pbVar3") (= "=") (binary_expression "pbVar4 + 2" (identifier "pbVar4") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "local_20 = (byte *)(uint)pbVar4[1];" (assignment_expression "local_20 = (byte *)(uint)pbVar4[1]" (identifier "local_20") (= "=") (cast_expression "(byte *)(uint)pbVar4[1]" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (cast_expression "(uint)pbVar4[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "pbVar4[1]" (identifier "pbVar4") ([ "[") (number_literal "1") (] "]"))))) (; ";")) (} "}")))) (expression_statement "pbVar6 = pbVar4;" (assignment_expression "pbVar6 = pbVar4" (identifier "pbVar6") (= "=") (identifier "pbVar4")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(pbVar8 <= pbVar3)" (( "(") (binary_expression "pbVar8 <= pbVar3" (identifier "pbVar8") (<= "<=") (identifier "pbVar3")) () ")")) (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))))) body: (compound_statement (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (pointer_declarator declarator: (identifier)))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (while_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal))) right: (number_literal))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (goto_statement label: (statement_identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)))))))))))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (identifier) right: (identifier)))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (unary_expression argument: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (identifier) right: (identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (identifier))))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (identifier)))) arguments: (argument_list))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (identifier))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator)))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (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))))))) arguments: (argument_list (identifier) (binary_expression left: (identifier) right: (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (return_statement))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (return_statement))) (return_statement))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (subscript_expression argument: (identifier) index: (number_literal))) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (cast_expression type: (type_descriptor type: (type_identifier)) value: (subscript_expression argument: (identifier) index: (number_literal))))))))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))) condition: (parenthesized_expression (true))))))

void MASKED(byte *param_1,byte **param_2,undefined4 *param_3,byte *param_4)

{
  byte bVar1;
  undefined *puVar2;
  byte *pbVar3;
  byte *pbVar4;
  byte **ppbVar5;
  byte *pbVar6;
  byte *pbVar7;
  byte *pbVar8;
  undefined4 uVar9;
  int iVar10;
  byte *pbVar11;
  byte **ppbVar12;
  byte **ppbVar13;
  int iVar14;
  byte *local_20;
  int local_1c;
  
  puVar2 = PTR___stack_chk_guard_0015ca30;
  uVar9 = 0xffffff80;
  ppbVar13 = &local_20;
  pbVar3 = (byte *)*param_3;
  iVar10 = *(int *)param_4;
  local_20 = (byte *)0x0;
  local_1c = *(int *)PTR___stack_chk_guard_0015ca30;
  pbVar8 = pbVar3 + iVar10;
  pbVar7 = param_4;
  pbVar11 = param_1;
  ppbVar12 = param_2;
  pbVar6 = pbVar3;
  if (pbVar8 <= pbVar3) goto LAB_00025c50;
  do {
    param_1 = (byte *)(int)(char)*pbVar3;
    pbVar4 = param_1;
    while (((uint)pbVar4 & 0xfe) != 0) {
      pbVar3 = pbVar3 + 1;
      bVar1 = (byte)param_1;
      if (pbVar8 == pbVar3) {
        iVar14 = (int)pbVar8 - (int)pbVar6;
        pbVar4 = pbVar8;
        ppbVar5 = ppbVar13;
        if (local_20 != pbVar11) goto LAB_00025c18;
        goto LAB_00025c58;
      }
      param_1 = (byte *)(int)(char)*pbVar3;
      pbVar4 = (byte *)(int)(char)(*pbVar3 | bVar1 & (byte)uVar9);
    }
LAB_00025c50:
    do {
      iVar14 = (int)pbVar3 - (int)pbVar6;
      pbVar4 = pbVar3;
      ppbVar5 = ppbVar13;
      if (local_20 == pbVar11) {
LAB_00025c58:
        param_1 = pbVar6 + iVar14;
        pbVar4 = param_1;
joined_r0x00025c58:
        pbVar3 = local_20;
        if ((ppbVar12 != (byte **)0x0) && (param_1 = pbVar4, pbVar4 != pbVar8)) {
          pbVar3 = pbVar8 + -(int)pbVar4;
          param_2 = (byte **)0x0;
          (*(code *)PTR_memset_0015c9b8)();
          param_1 = pbVar4;
        }
        *param_3 = pbVar6;
        *(int *)param_4 = iVar14;
        if (local_1c != *(int *)puVar2) {
          (*(code *)PTR___stack_chk_fail_0015ca14)();
          pbVar7[0xc] = 0;
          pbVar7[0xd] = 0;
          pbVar7[0xe] = 0;
          pbVar7[0xf] = 0;
          pbVar7[0x10] = 0;
          pbVar7[0x11] = 0;
          pbVar7[0x12] = 0;
          pbVar7[0x13] = 0;
          pbVar7[0x14] = 0;
          pbVar7[0x15] = 0;
          pbVar7[0x16] = 0;
          pbVar7[0x17] = 0;
          pbVar7[0x18] = 0;
          pbVar7[0x19] = 0;
          pbVar7[0x1a] = 0;
          pbVar7[0x1b] = 0;
          *(byte **)pbVar7 = param_1;
          *(byte ***)(pbVar7 + 4) = param_2;
          *(byte **)(pbVar7 + 8) = pbVar3;
          iVar10 = (**(code **)(param_1 + 0x20))(param_2,pbVar7 + 0x10);
          if (iVar10 != 0) {
            return;
          }
          FUN_0002422c(pbVar7);
          return;
        }
        return;
      }
LAB_00025c18:
      iVar10 = iVar10 - iVar14;
      if (iVar10 == 0) {
        iVar14 = 0;
        pbVar6 = pbVar4;
        goto joined_r0x00025c58;
      }
      pbVar6 = pbVar4 + 1;
      pbVar7 = pbVar6;
      ppbVar13 = ppbVar5;
      if ((char)pbVar4[1] < '\0') {
        iVar14 = FUN_000219b4();
        pbVar3 = pbVar7 + iVar14;
        param_1 = pbVar6;
        param_2 = ppbVar5;
      }
      else {
        pbVar3 = pbVar4 + 2;
        local_20 = (byte *)(uint)pbVar4[1];
      }
      pbVar6 = pbVar4;
    } while (pbVar8 <= pbVar3);
  } while( true );
}

