
With * sqlite3WithAdd(Parse *pParse,With *pWith,Token *pName,ExprList *pArglist,Select *pQuery)

{
  byte bVar1;
  u8 uVar2;
  byte *pbVar3;
  int iVar4;
  uint uVar5;
  With *pWVar6;
  byte *pbVar7;
  byte *pbVar8;
  sqlite3 *db;
  Cte *pCVar9;
  int iVar10;
  int iVar11;
  int iVar12;
  int iVar13;
  undefined1 *puVar14;
  undefined4 in_stack_ffffffcc;
  
  puVar14 = &_gp;
  db = pParse->db;
  pbVar3 = (byte *)sqlite3NameFromToken(db,pName);
  if (pbVar3 == (byte *)0x0) {
    iVar12 = *(int *)(puVar14 + -0x7fb4);
    if (pWith == (With *)0x0) goto LAB_00057404;
  }
  else {
    iVar12 = *(int *)(puVar14 + -0x7fb4);
    if (pWith == (With *)0x0) {
LAB_00057404:
      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);
      uVar2 = db->mallocFailed;
      goto joined_r0x0005741c;
    }
    iVar12 = pWith->nCte;
    if (0 < iVar12) {
      iVar4 = *(int *)(puVar14 + -0x7f94);
      pCVar9 = pWith->a;
      iVar11 = *(int *)(puVar14 + -0x7fcc);
      iVar13 = 0;
      iVar10 = *(int *)(puVar14 + -0x7fd4);
LAB_00057308:
      do {
        pbVar7 = pbVar3;
        pbVar8 = (byte *)pCVar9->zName;
        do {
          while( true ) {
            uVar5 = (uint)*pbVar7;
            bVar1 = *pbVar8;
            pbVar7 = pbVar7 + 1;
            if (uVar5 == bVar1) break;
            pbVar8 = pbVar8 + 1;
            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {
              iVar13 = iVar13 + 1;
              pCVar9 = pCVar9 + 1;
              if (iVar12 <= iVar13) goto LAB_00057350;
              goto LAB_00057308;
            }
          }
          pbVar8 = pbVar8 + 1;
        } while (uVar5 != 0);
        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);
        iVar13 = iVar13 + 1;
        iVar12 = pWith->nCte;
        pCVar9 = pCVar9 + 1;
      } while (iVar13 < iVar12);
    }
  }
LAB_00057350:
  pWVar6 = (With *)sqlite3DbRealloc(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc));
  uVar2 = db->mallocFailed;
joined_r0x0005741c:
  if (uVar2 == '\0') {
    iVar12 = pWVar6->nCte;
    pWVar6->a[iVar12].pCols = pArglist;
    pWVar6->a[iVar12].zName = (char *)pbVar3;
    pWVar6->a[iVar12].pSelect = pQuery;
    pWVar6->a[iVar12].zCteErr = (char *)0x0;
    pWVar6->nCte = iVar12 + 1;
    return pWVar6;
  }
  if (pArglist != (ExprList *)0x0) {
    exprListDeleteNN(db,pArglist);
  }
  if (pQuery != (Select *)0x0) {
    clearSelect(db,pQuery,1);
  }
  if (pbVar3 != (byte *)0x0) {
    (*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728))(db,pbVar3);
    return pWith;
  }
  return pWith;
}



int * FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)

{
  byte bVar1;
  char cVar2;
  undefined *puVar3;
  byte *pbVar4;
  code *pcVar5;
  uint uVar6;
  int *piVar7;
  byte *pbVar8;
  byte *pbVar9;
  int iVar10;
  int iVar11;
  undefined *puVar12;
  int iVar13;
  
  iVar11 = *param_1;
  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);
  puVar3 = PTR_DAT_000f52d4;
  if (pbVar4 == (byte *)0x0) {
    if (param_2 == (int *)0x0) goto LAB_00057404;
    iVar10 = *param_2;
  }
  else {
    if (param_2 == (int *)0x0) {
LAB_00057404:
      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);
      cVar2 = *(char *)(iVar11 + 0x51);
      goto joined_r0x0005741c;
    }
    iVar10 = *param_2;
    if (0 < iVar10) {
      piVar7 = param_2 + 2;
      iVar13 = 0;
      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);
      puVar12 = PTR_LAB_000f52cc + 0x7da0;
LAB_00057308:
      do {
        pbVar8 = pbVar4;
        pbVar9 = (byte *)*piVar7;
        do {
          while( true ) {
            uVar6 = (uint)*pbVar8;
            bVar1 = *pbVar9;
            pbVar8 = pbVar8 + 1;
            if (uVar6 == bVar1) break;
            pbVar9 = pbVar9 + 1;
            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {
              iVar13 = iVar13 + 1;
              piVar7 = piVar7 + 4;
              if (iVar10 <= iVar13) goto LAB_00057350;
              goto LAB_00057308;
            }
          }
          pbVar9 = pbVar9 + 1;
        } while (uVar6 != 0);
        (*pcVar5)(param_1,puVar12,pbVar4);
        iVar13 = iVar13 + 1;
        iVar10 = *param_2;
        piVar7 = piVar7 + 4;
      } while (iVar13 < iVar10);
    }
  }
LAB_00057350:
  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);
  cVar2 = *(char *)(iVar11 + 0x51);
joined_r0x0005741c:
  if (cVar2 == '\0') {
    iVar11 = *piVar7;
    piVar7[iVar11 * 4 + 3] = param_4;
    piVar7[iVar11 * 4 + 2] = (int)pbVar4;
    piVar7[iVar11 * 4 + 4] = param_5;
    piVar7[iVar11 * 4 + 5] = 0;
    *piVar7 = iVar11 + 1;
    return piVar7;
  }
  if (param_4 != 0) {
    FUN_00053aa4(iVar11,param_4);
  }
  if (param_5 != 0) {
    FUN_000537a0(iVar11,param_5,1);
  }
  if (pbVar4 != (byte *)0x0) {
    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);
    return param_2;
  }
  return param_2;
}


lui gp,0xa
addiu gp,gp,0x603c
addu gp,gp,t9
addiu sp,sp,-0x48
lw t9,-0x7fb4(gp)
sw s1,0x24(sp)
addiu t9,t9,0x7c70
sw gp,0x10(sp)
sw s4,0x30(sp)
sw s3,0x2c(sp)
or s3,a3,zero
sw s2,0x28(sp)
or s2,a0,zero
sw s0,0x20(sp)
or s0,a1,zero
sw ra,0x44(sp)
or a1,a2,zero
sw s8,0x40(sp)
sw s7,0x3c(sp)
sw s6,0x38(sp)
sw s5,0x34(sp)
lw s1,0x0(a0)
bal 0x00037c70
_or a0,s1,zero
lw gp,0x10(sp)
beq v0,zero,0x000574b8
_or s4,v0,zero
beq s0,zero,0x00057404
_lw t9,-0x7fb4(gp)
lw t2,0x0(s0)
blez t2,0x0005734c
_or a3,t2,zero
lw v0,-0x7f94(gp)
addiu s5,s0,0x8
lw s7,-0x7fcc(gp)
or s8,zero,zero
lw s6,-0x7fd4(gp)
addiu v0,v0,-0x61d8
addiu s7,s7,0x25ac
addiu s6,s6,0x7da0
sw v0,0x1c(sp)
lw a0,0x0(s5)
or v1,s4,zero
lbu v0,0x0(v1)
addiu a0,a0,0x1
lbu a1,-0x1(a0)
addiu v1,v1,0x1
addu a3,v0,s7
beq v0,a1,0x0005747c
_addu a2,a1,s7
lbu a1,0x0(a3)
lbu v0,0x0(a2)
beq a1,v0,0x00057310
_or a3,t2,zero
addiu s8,s8,0x1
slt v0,s8,t2
bne v0,zero,0x00057308
_addiu s5,s5,0x10
lw t9,-0x7fb8(gp)
sll a3,a3,0x4
or a2,zero,zero
addiu a3,a3,0x18
addiu t9,t9,-0x7804
or a1,s0,zero
bal 0x000387fc
_or a0,s1,zero
lbu v1,0x51(s1)
beq v1,zero,0x00057424
_lw gp,0x10(sp)
beq s3,zero,0x00057394
_lw t9,-0x7f94(gp)
or a1,s3,zero
addiu t9,t9,0x3aa4
bal 0x00053aa4
_or a0,s1,zero
lw gp,0x10(sp)
lw v0,0x58(sp)
beq v0,zero,0x000573b8
_lw t9,-0x7f94(gp)
li a2,0x1
or a1,v0,zero
addiu t9,t9,0x37a0
bal 0x000537a0
_or a0,s1,zero
lw gp,0x10(sp)
beq s4,zero,0x000574c8
_lw t9,-0x7fb4(gp)
or a1,s4,zero
addiu t9,t9,-0x7728
jalr t9
_or a0,s1,zero
or v0,s0,zero
lw ra,0x44(sp)
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,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,0x48
li a3,0x18
or a2,zero,zero
addiu t9,t9,0x7020
jalr t9
_or a0,s1,zero
lbu v1,0x51(s1)
bne v1,zero,0x00057378
_lw gp,0x10(sp)
lw a0,0x0(v0)
lw a1,0x58(sp)
lw ra,0x44(sp)
sll v1,a0,0x4
lw s8,0x40(sp)
addiu a0,a0,0x1
lw s7,0x3c(sp)
addu v1,v0,v1
lw s6,0x38(sp)
lw s5,0x34(sp)
lw s2,0x28(sp)
lw s1,0x24(sp)
lw s0,0x20(sp)
sw s3,0xc(v1)
sw s4,0x8(v1)
sw a1,0x10(v1)
sw zero,0x14(v1)
sw a0,0x0(v0)
lw s4,0x30(sp)
lw s3,0x2c(sp)
jr ra
_addiu sp,sp,0x48
bne v0,zero,0x00057310
_lw t9,0x1c(sp)
or a2,s4,zero
or a1,s6,zero
jalr t9
_or a0,s2,zero
addiu s8,s8,0x1
lw t2,0x0(s0)
addiu s5,s5,0x10
lw gp,0x10(sp)
slt v0,s8,t2
bne v0,zero,0x00057308
_or a3,t2,zero
b 0x00057350
_lw t9,-0x7fb8(gp)
beq s0,zero,0x00057404
_lw t9,-0x7fb4(gp)
b 0x0005734c
_lw a3,0x0(s0)
lw ra,0x44(sp)
or v0,s0,zero
lw s8,0x40(sp)
lw s7,0x3c(sp)
lw s6,0x38(sp)
lw s5,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,0x48
(translation_unit "int * FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)\n\n{\n  byte bVar1;\n  char cVar2;\n  undefined *puVar3;\n  byte *pbVar4;\n  code *pcVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar11 = *param_1;\n  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);\n  puVar3 = PTR_DAT_000f52d4;\n  if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }\nLAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);\n  cVar2 = *(char *)(iVar11 + 0x51);\njoined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }\n  if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }\n  if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }\n  if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }\n  return param_2;\n}\n\n" (function_definition "int * FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)\n\n{\n  byte bVar1;\n  char cVar2;\n  undefined *puVar3;\n  byte *pbVar4;\n  code *pcVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar11 = *param_1;\n  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);\n  puVar3 = PTR_DAT_000f52d4;\n  if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }\nLAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);\n  cVar2 = *(char *)(iVar11 + 0x51);\njoined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }\n  if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }\n  if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }\n  if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }\n  return param_2;\n}" primitive_type (pointer_declarator "* FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)" * (function_declarator "FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)" identifier (parameter_list "(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) )))) (compound_statement "{\n  byte bVar1;\n  char cVar2;\n  undefined *puVar3;\n  byte *pbVar4;\n  code *pcVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar11 = *param_1;\n  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);\n  puVar3 = PTR_DAT_000f52d4;\n  if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }\nLAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);\n  cVar2 = *(char *)(iVar11 + 0x51);\njoined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }\n  if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }\n  if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }\n  if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }\n  return param_2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);" (assignment_expression "pbVar4 = (byte *)FUN_00037c70(iVar11,param_3)" identifier = (cast_expression "(byte *)FUN_00037c70(iVar11,param_3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00037c70(iVar11,param_3)" identifier (argument_list "(iVar11,param_3)" ( identifier , identifier ))))) ;) (expression_statement "puVar3 = PTR_DAT_000f52d4;" (assignment_expression "puVar3 = PTR_DAT_000f52d4" identifier = identifier) ;) (if_statement "if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }" if (parenthesized_expression "(pbVar4 == (byte *)0x0)" ( (binary_expression "pbVar4 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }" { (if_statement "if (param_2 == (int *)0x0) goto LAB_00057404;" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00057404;" goto statement_identifier ;)) (expression_statement "iVar10 = *param_2;" (assignment_expression "iVar10 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) (else_clause "else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }" else (compound_statement "{\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }" { (if_statement "if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }" { (labeled_statement "LAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);" statement_identifier : (expression_statement "piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);" (assignment_expression "piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11)" identifier = (cast_expression "(int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x7020))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x7020)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x7020)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x7020)" ( (binary_expression "PTR_LAB_000f52ec + 0x7020" identifier + number_literal) )))) )) (argument_list "(iVar11)" ( identifier ))))) ;)) (expression_statement "cVar2 = *(char *)(iVar11 + 0x51);" (assignment_expression "cVar2 = *(char *)(iVar11 + 0x51)" identifier = (pointer_expression "*(char *)(iVar11 + 0x51)" * (cast_expression "(char *)(iVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x51)" ( (binary_expression "iVar11 + 0x51" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0005741c;" goto statement_identifier ;) })) (expression_statement "iVar10 = *param_2;" (assignment_expression "iVar10 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }" { (expression_statement "piVar7 = param_2 + 2;" (assignment_expression "piVar7 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8)" identifier = (cast_expression "(code *)(PTR_LAB_000f530c + -0x61d8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f530c + -0x61d8)" ( (binary_expression "PTR_LAB_000f530c + -0x61d8" identifier + number_literal) )))) ;) (expression_statement "puVar12 = PTR_LAB_000f52cc + 0x7da0;" (assignment_expression "puVar12 = PTR_LAB_000f52cc + 0x7da0" identifier = (binary_expression "PTR_LAB_000f52cc + 0x7da0" identifier + number_literal)) ;) (labeled_statement "LAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);" statement_identifier : (do_statement "do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);" do (compound_statement "{\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      }" { (expression_statement "pbVar8 = pbVar4;" (assignment_expression "pbVar8 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar9 = (byte *)*piVar7;" (assignment_expression "pbVar9 = (byte *)*piVar7" identifier = (cast_expression "(byte *)*piVar7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (do_statement "do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);" do (compound_statement "{\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        }" { (while_statement "while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }" { (expression_statement "uVar6 = (uint)*pbVar8;" (assignment_expression "uVar6 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (if_statement "if (uVar6 == bVar1) break;" if (parenthesized_expression "(uVar6 == bVar1)" ( (binary_expression "uVar6 == bVar1" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }" if (parenthesized_expression "(puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac])" ( (binary_expression "puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]" (subscript_expression "puVar3[uVar6 + 0x25ac]" identifier [ (binary_expression "uVar6 + 0x25ac" identifier + number_literal) ]) != (subscript_expression "puVar3[bVar1 + 0x25ac]" identifier [ (binary_expression "bVar1 + 0x25ac" identifier + number_literal) ])) )) (compound_statement "{\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar7 = piVar7 + 4;" (assignment_expression "piVar7 = piVar7 + 4" identifier = (binary_expression "piVar7 + 4" identifier + number_literal)) ;) (if_statement "if (iVar10 <= iVar13) goto LAB_00057350;" if (parenthesized_expression "(iVar10 <= iVar13)" ( (binary_expression "iVar10 <= iVar13" identifier <= identifier) )) (goto_statement "goto LAB_00057350;" goto statement_identifier ;)) (goto_statement "goto LAB_00057308;" goto statement_identifier ;) })) })) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (expression_statement "(*pcVar5)(param_1,puVar12,pbVar4);" (call_expression "(*pcVar5)(param_1,puVar12,pbVar4)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(param_1,puVar12,pbVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = *param_2;" (assignment_expression "iVar10 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "piVar7 = piVar7 + 4;" (assignment_expression "piVar7 = piVar7 + 4" identifier = (binary_expression "piVar7 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < iVar10)" ( (binary_expression "iVar13 < iVar10" identifier < identifier) )) ;)) })) }))) (labeled_statement "LAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);" statement_identifier : (expression_statement "piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);" (assignment_expression "piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" identifier = (cast_expression "(int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" identifier (argument_list "(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" ( identifier , identifier , number_literal , (binary_expression "iVar10 * 0x10 + 0x18" (binary_expression "iVar10 * 0x10" identifier * number_literal) + number_literal) ))))) ;)) (expression_statement "cVar2 = *(char *)(iVar11 + 0x51);" (assignment_expression "cVar2 = *(char *)(iVar11 + 0x51)" identifier = (pointer_expression "*(char *)(iVar11 + 0x51)" * (cast_expression "(char *)(iVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x51)" ( (binary_expression "iVar11 + 0x51" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }" statement_identifier : (if_statement "if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }" { (expression_statement "iVar11 = *piVar7;" (assignment_expression "iVar11 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "piVar7[iVar11 * 4 + 3] = param_4;" (assignment_expression "piVar7[iVar11 * 4 + 3] = param_4" (subscript_expression "piVar7[iVar11 * 4 + 3]" identifier [ (binary_expression "iVar11 * 4 + 3" (binary_expression "iVar11 * 4" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "piVar7[iVar11 * 4 + 2] = (int)pbVar4;" (assignment_expression "piVar7[iVar11 * 4 + 2] = (int)pbVar4" (subscript_expression "piVar7[iVar11 * 4 + 2]" identifier [ (binary_expression "iVar11 * 4 + 2" (binary_expression "iVar11 * 4" identifier * number_literal) + number_literal) ]) = (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[iVar11 * 4 + 4] = param_5;" (assignment_expression "piVar7[iVar11 * 4 + 4] = param_5" (subscript_expression "piVar7[iVar11 * 4 + 4]" identifier [ (binary_expression "iVar11 * 4 + 4" (binary_expression "iVar11 * 4" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "piVar7[iVar11 * 4 + 5] = 0;" (assignment_expression "piVar7[iVar11 * 4 + 5] = 0" (subscript_expression "piVar7[iVar11 * 4 + 5]" identifier [ (binary_expression "iVar11 * 4 + 5" (binary_expression "iVar11 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "*piVar7 = iVar11 + 1;" (assignment_expression "*piVar7 = iVar11 + 1" (pointer_expression "*piVar7" * identifier) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (return_statement "return piVar7;" return identifier ;) }))) (if_statement "if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_00053aa4(iVar11,param_4);\n  }" { (expression_statement "FUN_00053aa4(iVar11,param_4);" (call_expression "FUN_00053aa4(iVar11,param_4)" identifier (argument_list "(iVar11,param_4)" ( identifier , identifier ))) ;) })) (if_statement "if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }" if (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_000537a0(iVar11,param_5,1);\n  }" { (expression_statement "FUN_000537a0(iVar11,param_5,1);" (call_expression "FUN_000537a0(iVar11,param_5,1)" identifier (argument_list "(iVar11,param_5,1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }" if (parenthesized_expression "(pbVar4 != (byte *)0x0)" ( (binary_expression "pbVar4 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }" { (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x7728))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x7728)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x7728)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x7728)" ( (binary_expression "PTR_LAB_000f52ec + -0x7728" identifier + number_literal) )))) )) (argument_list "(iVar11,pbVar4)" ( identifier , identifier ))) ;) (return_statement "return param_2;" return identifier ;) })) (return_statement "return param_2;" return identifier ;) })))
(translation_unit "With * sqlite3WithAdd(Parse *pParse,With *pWith,Token *pName,ExprList *pArglist,Select *pQuery)\n\n{\n  byte bVar1;\n  u8 uVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  With *pWVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  sqlite3 *db;\n  Cte *pCVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  undefined1 *puVar14;\n  undefined4 in_stack_ffffffcc;\n  \n  puVar14 = &_gp;\n  db = pParse->db;\n  pbVar3 = (byte *)sqlite3NameFromToken(db,pName);\n  if (pbVar3 == (byte *)0x0) {\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) goto LAB_00057404;\n  }\n  else {\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) {\nLAB_00057404:\n      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);\n      uVar2 = db->mallocFailed;\n      goto joined_r0x0005741c;\n    }\n    iVar12 = pWith->nCte;\n    if (0 < iVar12) {\n      iVar4 = *(int *)(puVar14 + -0x7f94);\n      pCVar9 = pWith->a;\n      iVar11 = *(int *)(puVar14 + -0x7fcc);\n      iVar13 = 0;\n      iVar10 = *(int *)(puVar14 + -0x7fd4);\nLAB_00057308:\n      do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);\n    }\n  }\nLAB_00057350:\n  pWVar6 = (With *)sqlite3DbRealloc(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc));\n  uVar2 = db->mallocFailed;\njoined_r0x0005741c:\n  if (uVar2 == '\0') {\n    iVar12 = pWVar6->nCte;\n    pWVar6->a[iVar12].pCols = pArglist;\n    pWVar6->a[iVar12].zName = (char *)pbVar3;\n    pWVar6->a[iVar12].pSelect = pQuery;\n    pWVar6->a[iVar12].zCteErr = (char *)0x0;\n    pWVar6->nCte = iVar12 + 1;\n    return pWVar6;\n  }\n  if (pArglist != (ExprList *)0x0) {\n    exprListDeleteNN(db,pArglist);\n  }\n  if (pQuery != (Select *)0x0) {\n    clearSelect(db,pQuery,1);\n  }\n  if (pbVar3 != (byte *)0x0) {\n    (*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728))(db,pbVar3);\n    return pWith;\n  }\n  return pWith;\n}\n\n" (function_definition "With * sqlite3WithAdd(Parse *pParse,With *pWith,Token *pName,ExprList *pArglist,Select *pQuery)\n\n{\n  byte bVar1;\n  u8 uVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  With *pWVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  sqlite3 *db;\n  Cte *pCVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  undefined1 *puVar14;\n  undefined4 in_stack_ffffffcc;\n  \n  puVar14 = &_gp;\n  db = pParse->db;\n  pbVar3 = (byte *)sqlite3NameFromToken(db,pName);\n  if (pbVar3 == (byte *)0x0) {\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) goto LAB_00057404;\n  }\n  else {\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) {\nLAB_00057404:\n      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);\n      uVar2 = db->mallocFailed;\n      goto joined_r0x0005741c;\n    }\n    iVar12 = pWith->nCte;\n    if (0 < iVar12) {\n      iVar4 = *(int *)(puVar14 + -0x7f94);\n      pCVar9 = pWith->a;\n      iVar11 = *(int *)(puVar14 + -0x7fcc);\n      iVar13 = 0;\n      iVar10 = *(int *)(puVar14 + -0x7fd4);\nLAB_00057308:\n      do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);\n    }\n  }\nLAB_00057350:\n  pWVar6 = (With *)sqlite3DbRealloc(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc));\n  uVar2 = db->mallocFailed;\njoined_r0x0005741c:\n  if (uVar2 == '\0') {\n    iVar12 = pWVar6->nCte;\n    pWVar6->a[iVar12].pCols = pArglist;\n    pWVar6->a[iVar12].zName = (char *)pbVar3;\n    pWVar6->a[iVar12].pSelect = pQuery;\n    pWVar6->a[iVar12].zCteErr = (char *)0x0;\n    pWVar6->nCte = iVar12 + 1;\n    return pWVar6;\n  }\n  if (pArglist != (ExprList *)0x0) {\n    exprListDeleteNN(db,pArglist);\n  }\n  if (pQuery != (Select *)0x0) {\n    clearSelect(db,pQuery,1);\n  }\n  if (pbVar3 != (byte *)0x0) {\n    (*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728))(db,pbVar3);\n    return pWith;\n  }\n  return pWith;\n}" type_identifier (pointer_declarator "* sqlite3WithAdd(Parse *pParse,With *pWith,Token *pName,ExprList *pArglist,Select *pQuery)" * (function_declarator "sqlite3WithAdd(Parse *pParse,With *pWith,Token *pName,ExprList *pArglist,Select *pQuery)" identifier (parameter_list "(Parse *pParse,With *pWith,Token *pName,ExprList *pArglist,Select *pQuery)" ( (parameter_declaration "Parse *pParse" type_identifier (pointer_declarator "*pParse" * identifier)) , (parameter_declaration "With *pWith" type_identifier (pointer_declarator "*pWith" * identifier)) , (parameter_declaration "Token *pName" type_identifier (pointer_declarator "*pName" * identifier)) , (parameter_declaration "ExprList *pArglist" type_identifier (pointer_declarator "*pArglist" * identifier)) , (parameter_declaration "Select *pQuery" type_identifier (pointer_declarator "*pQuery" * identifier)) )))) (compound_statement "{\n  byte bVar1;\n  u8 uVar2;\n  byte *pbVar3;\n  int iVar4;\n  uint uVar5;\n  With *pWVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  sqlite3 *db;\n  Cte *pCVar9;\n  int iVar10;\n  int iVar11;\n  int iVar12;\n  int iVar13;\n  undefined1 *puVar14;\n  undefined4 in_stack_ffffffcc;\n  \n  puVar14 = &_gp;\n  db = pParse->db;\n  pbVar3 = (byte *)sqlite3NameFromToken(db,pName);\n  if (pbVar3 == (byte *)0x0) {\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) goto LAB_00057404;\n  }\n  else {\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) {\nLAB_00057404:\n      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);\n      uVar2 = db->mallocFailed;\n      goto joined_r0x0005741c;\n    }\n    iVar12 = pWith->nCte;\n    if (0 < iVar12) {\n      iVar4 = *(int *)(puVar14 + -0x7f94);\n      pCVar9 = pWith->a;\n      iVar11 = *(int *)(puVar14 + -0x7fcc);\n      iVar13 = 0;\n      iVar10 = *(int *)(puVar14 + -0x7fd4);\nLAB_00057308:\n      do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);\n    }\n  }\nLAB_00057350:\n  pWVar6 = (With *)sqlite3DbRealloc(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc));\n  uVar2 = db->mallocFailed;\njoined_r0x0005741c:\n  if (uVar2 == '\0') {\n    iVar12 = pWVar6->nCte;\n    pWVar6->a[iVar12].pCols = pArglist;\n    pWVar6->a[iVar12].zName = (char *)pbVar3;\n    pWVar6->a[iVar12].pSelect = pQuery;\n    pWVar6->a[iVar12].zCteErr = (char *)0x0;\n    pWVar6->nCte = iVar12 + 1;\n    return pWVar6;\n  }\n  if (pArglist != (ExprList *)0x0) {\n    exprListDeleteNN(db,pArglist);\n  }\n  if (pQuery != (Select *)0x0) {\n    clearSelect(db,pQuery,1);\n  }\n  if (pbVar3 != (byte *)0x0) {\n    (*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728))(db,pbVar3);\n    return pWith;\n  }\n  return pWith;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "u8 uVar2;" type_identifier identifier ;) (declaration "byte *pbVar3;" type_identifier (pointer_declarator "*pbVar3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "With *pWVar6;" type_identifier (pointer_declarator "*pWVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "sqlite3 *db;" type_identifier (pointer_declarator "*db" * identifier) ;) (declaration "Cte *pCVar9;" type_identifier (pointer_declarator "*pCVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int iVar12;" primitive_type identifier ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "undefined1 *puVar14;" type_identifier (pointer_declarator "*puVar14" * identifier) ;) (declaration "undefined4 in_stack_ffffffcc;" type_identifier identifier ;) (expression_statement "puVar14 = &_gp;" (assignment_expression "puVar14 = &_gp" identifier = (pointer_expression "&_gp" & identifier)) ;) (expression_statement "db = pParse->db;" (assignment_expression "db = pParse->db" identifier = (field_expression "pParse->db" identifier -> field_identifier)) ;) (expression_statement "pbVar3 = (byte *)sqlite3NameFromToken(db,pName);" (assignment_expression "pbVar3 = (byte *)sqlite3NameFromToken(db,pName)" identifier = (cast_expression "(byte *)sqlite3NameFromToken(db,pName)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3NameFromToken(db,pName)" identifier (argument_list "(db,pName)" ( identifier , identifier ))))) ;) (if_statement "if (pbVar3 == (byte *)0x0) {\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) goto LAB_00057404;\n  }\n  else {\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) {\nLAB_00057404:\n      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);\n      uVar2 = db->mallocFailed;\n      goto joined_r0x0005741c;\n    }\n    iVar12 = pWith->nCte;\n    if (0 < iVar12) {\n      iVar4 = *(int *)(puVar14 + -0x7f94);\n      pCVar9 = pWith->a;\n      iVar11 = *(int *)(puVar14 + -0x7fcc);\n      iVar13 = 0;\n      iVar10 = *(int *)(puVar14 + -0x7fd4);\nLAB_00057308:\n      do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);\n    }\n  }" if (parenthesized_expression "(pbVar3 == (byte *)0x0)" ( (binary_expression "pbVar3 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) goto LAB_00057404;\n  }" { (expression_statement "iVar12 = *(int *)(puVar14 + -0x7fb4);" (assignment_expression "iVar12 = *(int *)(puVar14 + -0x7fb4)" identifier = (pointer_expression "*(int *)(puVar14 + -0x7fb4)" * (cast_expression "(int *)(puVar14 + -0x7fb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7fb4)" ( (binary_expression "puVar14 + -0x7fb4" identifier + number_literal) ))))) ;) (if_statement "if (pWith == (With *)0x0) goto LAB_00057404;" if (parenthesized_expression "(pWith == (With *)0x0)" ( (binary_expression "pWith == (With *)0x0" identifier == (cast_expression "(With *)0x0" ( (type_descriptor "With *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00057404;" goto statement_identifier ;)) }) (else_clause "else {\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) {\nLAB_00057404:\n      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);\n      uVar2 = db->mallocFailed;\n      goto joined_r0x0005741c;\n    }\n    iVar12 = pWith->nCte;\n    if (0 < iVar12) {\n      iVar4 = *(int *)(puVar14 + -0x7f94);\n      pCVar9 = pWith->a;\n      iVar11 = *(int *)(puVar14 + -0x7fcc);\n      iVar13 = 0;\n      iVar10 = *(int *)(puVar14 + -0x7fd4);\nLAB_00057308:\n      do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);\n    }\n  }" else (compound_statement "{\n    iVar12 = *(int *)(puVar14 + -0x7fb4);\n    if (pWith == (With *)0x0) {\nLAB_00057404:\n      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);\n      uVar2 = db->mallocFailed;\n      goto joined_r0x0005741c;\n    }\n    iVar12 = pWith->nCte;\n    if (0 < iVar12) {\n      iVar4 = *(int *)(puVar14 + -0x7f94);\n      pCVar9 = pWith->a;\n      iVar11 = *(int *)(puVar14 + -0x7fcc);\n      iVar13 = 0;\n      iVar10 = *(int *)(puVar14 + -0x7fd4);\nLAB_00057308:\n      do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);\n    }\n  }" { (expression_statement "iVar12 = *(int *)(puVar14 + -0x7fb4);" (assignment_expression "iVar12 = *(int *)(puVar14 + -0x7fb4)" identifier = (pointer_expression "*(int *)(puVar14 + -0x7fb4)" * (cast_expression "(int *)(puVar14 + -0x7fb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7fb4)" ( (binary_expression "puVar14 + -0x7fb4" identifier + number_literal) ))))) ;) (if_statement "if (pWith == (With *)0x0) {\nLAB_00057404:\n      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);\n      uVar2 = db->mallocFailed;\n      goto joined_r0x0005741c;\n    }" if (parenthesized_expression "(pWith == (With *)0x0)" ( (binary_expression "pWith == (With *)0x0" identifier == (cast_expression "(With *)0x0" ( (type_descriptor "With *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00057404:\n      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);\n      uVar2 = db->mallocFailed;\n      goto joined_r0x0005741c;\n    }" { (labeled_statement "LAB_00057404:\n      pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);" statement_identifier : (expression_statement "pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db);" (assignment_expression "pWVar6 = (With *)(*(code *)(iVar12 + 0x7020))(db)" identifier = (cast_expression "(With *)(*(code *)(iVar12 + 0x7020))(db)" ( (type_descriptor "With *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(iVar12 + 0x7020))(db)" (parenthesized_expression "(*(code *)(iVar12 + 0x7020))" ( (pointer_expression "*(code *)(iVar12 + 0x7020)" * (cast_expression "(code *)(iVar12 + 0x7020)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar12 + 0x7020)" ( (binary_expression "iVar12 + 0x7020" identifier + number_literal) )))) )) (argument_list "(db)" ( identifier ))))) ;)) (expression_statement "uVar2 = db->mallocFailed;" (assignment_expression "uVar2 = db->mallocFailed" identifier = (field_expression "db->mallocFailed" identifier -> field_identifier)) ;) (goto_statement "goto joined_r0x0005741c;" goto statement_identifier ;) })) (expression_statement "iVar12 = pWith->nCte;" (assignment_expression "iVar12 = pWith->nCte" identifier = (field_expression "pWith->nCte" identifier -> field_identifier)) ;) (if_statement "if (0 < iVar12) {\n      iVar4 = *(int *)(puVar14 + -0x7f94);\n      pCVar9 = pWith->a;\n      iVar11 = *(int *)(puVar14 + -0x7fcc);\n      iVar13 = 0;\n      iVar10 = *(int *)(puVar14 + -0x7fd4);\nLAB_00057308:\n      do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);\n    }" if (parenthesized_expression "(0 < iVar12)" ( (binary_expression "0 < iVar12" number_literal < identifier) )) (compound_statement "{\n      iVar4 = *(int *)(puVar14 + -0x7f94);\n      pCVar9 = pWith->a;\n      iVar11 = *(int *)(puVar14 + -0x7fcc);\n      iVar13 = 0;\n      iVar10 = *(int *)(puVar14 + -0x7fd4);\nLAB_00057308:\n      do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);\n    }" { (expression_statement "iVar4 = *(int *)(puVar14 + -0x7f94);" (assignment_expression "iVar4 = *(int *)(puVar14 + -0x7f94)" identifier = (pointer_expression "*(int *)(puVar14 + -0x7f94)" * (cast_expression "(int *)(puVar14 + -0x7f94)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7f94)" ( (binary_expression "puVar14 + -0x7f94" identifier + number_literal) ))))) ;) (expression_statement "pCVar9 = pWith->a;" (assignment_expression "pCVar9 = pWith->a" identifier = (field_expression "pWith->a" identifier -> field_identifier)) ;) (expression_statement "iVar11 = *(int *)(puVar14 + -0x7fcc);" (assignment_expression "iVar11 = *(int *)(puVar14 + -0x7fcc)" identifier = (pointer_expression "*(int *)(puVar14 + -0x7fcc)" * (cast_expression "(int *)(puVar14 + -0x7fcc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7fcc)" ( (binary_expression "puVar14 + -0x7fcc" identifier + number_literal) ))))) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "iVar10 = *(int *)(puVar14 + -0x7fd4);" (assignment_expression "iVar10 = *(int *)(puVar14 + -0x7fd4)" identifier = (pointer_expression "*(int *)(puVar14 + -0x7fd4)" * (cast_expression "(int *)(puVar14 + -0x7fd4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7fd4)" ( (binary_expression "puVar14 + -0x7fd4" identifier + number_literal) ))))) ;) (labeled_statement "LAB_00057308:\n      do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);" statement_identifier : (do_statement "do {\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      } while (iVar13 < iVar12);" do (compound_statement "{\n        pbVar7 = pbVar3;\n        pbVar8 = (byte *)pCVar9->zName;\n        do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);\n        (*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);\n        iVar13 = iVar13 + 1;\n        iVar12 = pWith->nCte;\n        pCVar9 = pCVar9 + 1;\n      }" { (expression_statement "pbVar7 = pbVar3;" (assignment_expression "pbVar7 = pbVar3" identifier = identifier) ;) (expression_statement "pbVar8 = (byte *)pCVar9->zName;" (assignment_expression "pbVar8 = (byte *)pCVar9->zName" identifier = (cast_expression "(byte *)pCVar9->zName" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "pCVar9->zName" identifier -> field_identifier))) ;) (do_statement "do {\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        } while (uVar5 != 0);" do (compound_statement "{\n          while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar8 = pbVar8 + 1;\n        }" { (while_statement "while( true ) {\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar5 = (uint)*pbVar7;\n            bVar1 = *pbVar8;\n            pbVar7 = pbVar7 + 1;\n            if (uVar5 == bVar1) break;\n            pbVar8 = pbVar8 + 1;\n            if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }" { (expression_statement "uVar5 = (uint)*pbVar7;" (assignment_expression "uVar5 = (uint)*pbVar7" identifier = (binary_expression "(uint)*pbVar7" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "bVar1 = *pbVar8;" (assignment_expression "bVar1 = *pbVar8" identifier = (pointer_expression "*pbVar8" * identifier)) ;) (expression_statement "pbVar7 = pbVar7 + 1;" (assignment_expression "pbVar7 = pbVar7 + 1" identifier = (binary_expression "pbVar7 + 1" identifier + number_literal)) ;) (if_statement "if (uVar5 == bVar1) break;" if (parenthesized_expression "(uVar5 == bVar1)" ( (binary_expression "uVar5 == bVar1" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (if_statement "if (*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)) {\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }" if (parenthesized_expression "(*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac))" ( (binary_expression "*(char *)(uVar5 + iVar11 + 0x25ac) != *(char *)((uint)bVar1 + iVar11 + 0x25ac)" (pointer_expression "*(char *)(uVar5 + iVar11 + 0x25ac)" * (cast_expression "(char *)(uVar5 + iVar11 + 0x25ac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar5 + iVar11 + 0x25ac)" ( (binary_expression "uVar5 + iVar11 + 0x25ac" (binary_expression "uVar5 + iVar11" identifier + identifier) + number_literal) )))) != (pointer_expression "*(char *)((uint)bVar1 + iVar11 + 0x25ac)" * (cast_expression "(char *)((uint)bVar1 + iVar11 + 0x25ac)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((uint)bVar1 + iVar11 + 0x25ac)" ( (binary_expression "(uint)bVar1 + iVar11 + 0x25ac" (binary_expression "(uint)bVar1 + iVar11" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) + identifier) + number_literal) ))))) )) (compound_statement "{\n              iVar13 = iVar13 + 1;\n              pCVar9 = pCVar9 + 1;\n              if (iVar12 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "pCVar9 = pCVar9 + 1;" (assignment_expression "pCVar9 = pCVar9 + 1" identifier = (binary_expression "pCVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar12 <= iVar13) goto LAB_00057350;" if (parenthesized_expression "(iVar12 <= iVar13)" ( (binary_expression "iVar12 <= iVar13" identifier <= identifier) )) (goto_statement "goto LAB_00057350;" goto statement_identifier ;)) (goto_statement "goto LAB_00057308;" goto statement_identifier ;) })) })) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar5 != 0)" ( (binary_expression "uVar5 != 0" identifier != number_literal) )) ;) (expression_statement "(*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3);" (call_expression "(*(code *)(iVar4 + -0x61d8))(pParse,iVar10 + 0x7da0,pbVar3)" (parenthesized_expression "(*(code *)(iVar4 + -0x61d8))" ( (pointer_expression "*(code *)(iVar4 + -0x61d8)" * (cast_expression "(code *)(iVar4 + -0x61d8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar4 + -0x61d8)" ( (binary_expression "iVar4 + -0x61d8" identifier + number_literal) )))) )) (argument_list "(pParse,iVar10 + 0x7da0,pbVar3)" ( identifier , (binary_expression "iVar10 + 0x7da0" identifier + number_literal) , identifier ))) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "iVar12 = pWith->nCte;" (assignment_expression "iVar12 = pWith->nCte" identifier = (field_expression "pWith->nCte" identifier -> field_identifier)) ;) (expression_statement "pCVar9 = pCVar9 + 1;" (assignment_expression "pCVar9 = pCVar9 + 1" identifier = (binary_expression "pCVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < iVar12)" ( (binary_expression "iVar13 < iVar12" identifier < identifier) )) ;)) })) }))) (labeled_statement "LAB_00057350:\n  pWVar6 = (With *)sqlite3DbRealloc(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc));" statement_identifier : (expression_statement "pWVar6 = (With *)sqlite3DbRealloc(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc));" (assignment_expression "pWVar6 = (With *)sqlite3DbRealloc(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc))" identifier = (cast_expression "(With *)sqlite3DbRealloc(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc))" ( (type_descriptor "With *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "sqlite3DbRealloc(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc))" identifier (argument_list "(db,pWith,CONCAT44(puVar14,in_stack_ffffffcc))" ( identifier , identifier , (call_expression "CONCAT44(puVar14,in_stack_ffffffcc)" identifier (argument_list "(puVar14,in_stack_ffffffcc)" ( identifier , identifier ))) ))))) ;)) (expression_statement "uVar2 = db->mallocFailed;" (assignment_expression "uVar2 = db->mallocFailed" identifier = (field_expression "db->mallocFailed" identifier -> field_identifier)) ;) (labeled_statement "joined_r0x0005741c:\n  if (uVar2 == '\0') {\n    iVar12 = pWVar6->nCte;\n    pWVar6->a[iVar12].pCols = pArglist;\n    pWVar6->a[iVar12].zName = (char *)pbVar3;\n    pWVar6->a[iVar12].pSelect = pQuery;\n    pWVar6->a[iVar12].zCteErr = (char *)0x0;\n    pWVar6->nCte = iVar12 + 1;\n    return pWVar6;\n  }" statement_identifier : (if_statement "if (uVar2 == '\0') {\n    iVar12 = pWVar6->nCte;\n    pWVar6->a[iVar12].pCols = pArglist;\n    pWVar6->a[iVar12].zName = (char *)pbVar3;\n    pWVar6->a[iVar12].pSelect = pQuery;\n    pWVar6->a[iVar12].zCteErr = (char *)0x0;\n    pWVar6->nCte = iVar12 + 1;\n    return pWVar6;\n  }" if (parenthesized_expression "(uVar2 == '\0')" ( (binary_expression "uVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar12 = pWVar6->nCte;\n    pWVar6->a[iVar12].pCols = pArglist;\n    pWVar6->a[iVar12].zName = (char *)pbVar3;\n    pWVar6->a[iVar12].pSelect = pQuery;\n    pWVar6->a[iVar12].zCteErr = (char *)0x0;\n    pWVar6->nCte = iVar12 + 1;\n    return pWVar6;\n  }" { (expression_statement "iVar12 = pWVar6->nCte;" (assignment_expression "iVar12 = pWVar6->nCte" identifier = (field_expression "pWVar6->nCte" identifier -> field_identifier)) ;) (expression_statement "pWVar6->a[iVar12].pCols = pArglist;" (assignment_expression "pWVar6->a[iVar12].pCols = pArglist" (field_expression "pWVar6->a[iVar12].pCols" (subscript_expression "pWVar6->a[iVar12]" (field_expression "pWVar6->a" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "pWVar6->a[iVar12].zName = (char *)pbVar3;" (assignment_expression "pWVar6->a[iVar12].zName = (char *)pbVar3" (field_expression "pWVar6->a[iVar12].zName" (subscript_expression "pWVar6->a[iVar12]" (field_expression "pWVar6->a" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(char *)pbVar3" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "pWVar6->a[iVar12].pSelect = pQuery;" (assignment_expression "pWVar6->a[iVar12].pSelect = pQuery" (field_expression "pWVar6->a[iVar12].pSelect" (subscript_expression "pWVar6->a[iVar12]" (field_expression "pWVar6->a" identifier -> field_identifier) [ identifier ]) . field_identifier) = identifier) ;) (expression_statement "pWVar6->a[iVar12].zCteErr = (char *)0x0;" (assignment_expression "pWVar6->a[iVar12].zCteErr = (char *)0x0" (field_expression "pWVar6->a[iVar12].zCteErr" (subscript_expression "pWVar6->a[iVar12]" (field_expression "pWVar6->a" identifier -> field_identifier) [ identifier ]) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "pWVar6->nCte = iVar12 + 1;" (assignment_expression "pWVar6->nCte = iVar12 + 1" (field_expression "pWVar6->nCte" identifier -> field_identifier) = (binary_expression "iVar12 + 1" identifier + number_literal)) ;) (return_statement "return pWVar6;" return identifier ;) }))) (if_statement "if (pArglist != (ExprList *)0x0) {\n    exprListDeleteNN(db,pArglist);\n  }" if (parenthesized_expression "(pArglist != (ExprList *)0x0)" ( (binary_expression "pArglist != (ExprList *)0x0" identifier != (cast_expression "(ExprList *)0x0" ( (type_descriptor "ExprList *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    exprListDeleteNN(db,pArglist);\n  }" { (expression_statement "exprListDeleteNN(db,pArglist);" (call_expression "exprListDeleteNN(db,pArglist)" identifier (argument_list "(db,pArglist)" ( identifier , identifier ))) ;) })) (if_statement "if (pQuery != (Select *)0x0) {\n    clearSelect(db,pQuery,1);\n  }" if (parenthesized_expression "(pQuery != (Select *)0x0)" ( (binary_expression "pQuery != (Select *)0x0" identifier != (cast_expression "(Select *)0x0" ( (type_descriptor "Select *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    clearSelect(db,pQuery,1);\n  }" { (expression_statement "clearSelect(db,pQuery,1);" (call_expression "clearSelect(db,pQuery,1)" identifier (argument_list "(db,pQuery,1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (pbVar3 != (byte *)0x0) {\n    (*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728))(db,pbVar3);\n    return pWith;\n  }" if (parenthesized_expression "(pbVar3 != (byte *)0x0)" ( (binary_expression "pbVar3 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728))(db,pbVar3);\n    return pWith;\n  }" { (expression_statement "(*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728))(db,pbVar3);" (call_expression "(*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728))(db,pbVar3)" (parenthesized_expression "(*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728))" ( (pointer_expression "*(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728)" * (cast_expression "(code *)(*(int *)(puVar14 + -0x7fb4) + -0x7728)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(int *)(puVar14 + -0x7fb4) + -0x7728)" ( (binary_expression "*(int *)(puVar14 + -0x7fb4) + -0x7728" (pointer_expression "*(int *)(puVar14 + -0x7fb4)" * (cast_expression "(int *)(puVar14 + -0x7fb4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar14 + -0x7fb4)" ( (binary_expression "puVar14 + -0x7fb4" identifier + number_literal) )))) + number_literal) )))) )) (argument_list "(db,pbVar3)" ( identifier , identifier ))) ;) (return_statement "return pWith;" return identifier ;) })) (return_statement "return pWith;" return identifier ;) })))
(translation_unit "int * FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)\n\n{\n  byte bVar1;\n  char cVar2;\n  undefined *puVar3;\n  byte *pbVar4;\n  code *pcVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar11 = *param_1;\n  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);\n  puVar3 = PTR_DAT_000f52d4;\n  if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }\nLAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);\n  cVar2 = *(char *)(iVar11 + 0x51);\njoined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }\n  if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }\n  if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }\n  if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }\n  return param_2;\n}\n\n" (function_definition "int * FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)\n\n{\n  byte bVar1;\n  char cVar2;\n  undefined *puVar3;\n  byte *pbVar4;\n  code *pcVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar11 = *param_1;\n  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);\n  puVar3 = PTR_DAT_000f52d4;\n  if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }\nLAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);\n  cVar2 = *(char *)(iVar11 + 0x51);\njoined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }\n  if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }\n  if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }\n  if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }\n  return param_2;\n}" primitive_type (pointer_declarator "* FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)" * (function_declarator "FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)" identifier (parameter_list "(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "int *param_2" primitive_type (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "int param_4" primitive_type identifier) , (parameter_declaration "int param_5" primitive_type identifier) )))) (compound_statement "{\n  byte bVar1;\n  char cVar2;\n  undefined *puVar3;\n  byte *pbVar4;\n  code *pcVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar11 = *param_1;\n  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);\n  puVar3 = PTR_DAT_000f52d4;\n  if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }\nLAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);\n  cVar2 = *(char *)(iVar11 + 0x51);\njoined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }\n  if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }\n  if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }\n  if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }\n  return param_2;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "byte *pbVar4;" type_identifier (pointer_declarator "*pbVar4" * identifier) ;) (declaration "code *pcVar5;" type_identifier (pointer_declarator "*pcVar5" * identifier) ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "undefined *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" identifier = (pointer_expression "*param_1" * identifier)) ;) (expression_statement "pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);" (assignment_expression "pbVar4 = (byte *)FUN_00037c70(iVar11,param_3)" identifier = (cast_expression "(byte *)FUN_00037c70(iVar11,param_3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00037c70(iVar11,param_3)" identifier (argument_list "(iVar11,param_3)" ( identifier , identifier ))))) ;) (expression_statement "puVar3 = PTR_DAT_000f52d4;" (assignment_expression "puVar3 = PTR_DAT_000f52d4" identifier = identifier) ;) (if_statement "if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }" if (parenthesized_expression "(pbVar4 == (byte *)0x0)" ( (binary_expression "pbVar4 == (byte *)0x0" identifier == (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }" { (if_statement "if (param_2 == (int *)0x0) goto LAB_00057404;" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_00057404;" goto statement_identifier ;)) (expression_statement "iVar10 = *param_2;" (assignment_expression "iVar10 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) }) (else_clause "else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }" else (compound_statement "{\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }" { (if_statement "if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }" if (parenthesized_expression "(param_2 == (int *)0x0)" ( (binary_expression "param_2 == (int *)0x0" identifier == (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }" { (labeled_statement "LAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);" statement_identifier : (expression_statement "piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);" (assignment_expression "piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11)" identifier = (cast_expression "(int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x7020))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x7020)" * (cast_expression "(code *)(PTR_LAB_000f52ec + 0x7020)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + 0x7020)" ( (binary_expression "PTR_LAB_000f52ec + 0x7020" identifier + number_literal) )))) )) (argument_list "(iVar11)" ( identifier ))))) ;)) (expression_statement "cVar2 = *(char *)(iVar11 + 0x51);" (assignment_expression "cVar2 = *(char *)(iVar11 + 0x51)" identifier = (pointer_expression "*(char *)(iVar11 + 0x51)" * (cast_expression "(char *)(iVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x51)" ( (binary_expression "iVar11 + 0x51" identifier + number_literal) ))))) ;) (goto_statement "goto joined_r0x0005741c;" goto statement_identifier ;) })) (expression_statement "iVar10 = *param_2;" (assignment_expression "iVar10 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (if_statement "if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }" { (expression_statement "piVar7 = param_2 + 2;" (assignment_expression "piVar7 = param_2 + 2" identifier = (binary_expression "param_2 + 2" identifier + number_literal)) ;) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" identifier = number_literal) ;) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8)" identifier = (cast_expression "(code *)(PTR_LAB_000f530c + -0x61d8)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f530c + -0x61d8)" ( (binary_expression "PTR_LAB_000f530c + -0x61d8" identifier + number_literal) )))) ;) (expression_statement "puVar12 = PTR_LAB_000f52cc + 0x7da0;" (assignment_expression "puVar12 = PTR_LAB_000f52cc + 0x7da0" identifier = (binary_expression "PTR_LAB_000f52cc + 0x7da0" identifier + number_literal)) ;) (labeled_statement "LAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);" statement_identifier : (do_statement "do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);" do (compound_statement "{\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      }" { (expression_statement "pbVar8 = pbVar4;" (assignment_expression "pbVar8 = pbVar4" identifier = identifier) ;) (expression_statement "pbVar9 = (byte *)*piVar7;" (assignment_expression "pbVar9 = (byte *)*piVar7" identifier = (cast_expression "(byte *)*piVar7" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*piVar7" * identifier))) ;) (do_statement "do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);" do (compound_statement "{\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        }" { (while_statement "while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }" { (expression_statement "uVar6 = (uint)*pbVar8;" (assignment_expression "uVar6 = (uint)*pbVar8" identifier = (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" ( identifier )) * identifier)) ;) (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" identifier = (pointer_expression "*pbVar9" * identifier)) ;) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" identifier = (binary_expression "pbVar8 + 1" identifier + number_literal)) ;) (if_statement "if (uVar6 == bVar1) break;" if (parenthesized_expression "(uVar6 == bVar1)" ( (binary_expression "uVar6 == bVar1" identifier == identifier) )) (break_statement "break;" break ;)) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) (if_statement "if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }" if (parenthesized_expression "(puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac])" ( (binary_expression "puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]" (subscript_expression "puVar3[uVar6 + 0x25ac]" identifier [ (binary_expression "uVar6 + 0x25ac" identifier + number_literal) ]) != (subscript_expression "puVar3[bVar1 + 0x25ac]" identifier [ (binary_expression "bVar1 + 0x25ac" identifier + number_literal) ])) )) (compound_statement "{\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }" { (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar7 = piVar7 + 4;" (assignment_expression "piVar7 = piVar7 + 4" identifier = (binary_expression "piVar7 + 4" identifier + number_literal)) ;) (if_statement "if (iVar10 <= iVar13) goto LAB_00057350;" if (parenthesized_expression "(iVar10 <= iVar13)" ( (binary_expression "iVar10 <= iVar13" identifier <= identifier) )) (goto_statement "goto LAB_00057350;" goto statement_identifier ;)) (goto_statement "goto LAB_00057308;" goto statement_identifier ;) })) })) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" identifier = (binary_expression "pbVar9 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) )) ;) (expression_statement "(*pcVar5)(param_1,puVar12,pbVar4);" (call_expression "(*pcVar5)(param_1,puVar12,pbVar4)" (parenthesized_expression "(*pcVar5)" ( (pointer_expression "*pcVar5" * identifier) )) (argument_list "(param_1,puVar12,pbVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" identifier = (binary_expression "iVar13 + 1" identifier + number_literal)) ;) (expression_statement "iVar10 = *param_2;" (assignment_expression "iVar10 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) ;) (expression_statement "piVar7 = piVar7 + 4;" (assignment_expression "piVar7 = piVar7 + 4" identifier = (binary_expression "piVar7 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar13 < iVar10)" ( (binary_expression "iVar13 < iVar10" identifier < identifier) )) ;)) })) }))) (labeled_statement "LAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);" statement_identifier : (expression_statement "piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);" (assignment_expression "piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" identifier = (cast_expression "(int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" identifier (argument_list "(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" ( identifier , identifier , number_literal , (binary_expression "iVar10 * 0x10 + 0x18" (binary_expression "iVar10 * 0x10" identifier * number_literal) + number_literal) ))))) ;)) (expression_statement "cVar2 = *(char *)(iVar11 + 0x51);" (assignment_expression "cVar2 = *(char *)(iVar11 + 0x51)" identifier = (pointer_expression "*(char *)(iVar11 + 0x51)" * (cast_expression "(char *)(iVar11 + 0x51)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar11 + 0x51)" ( (binary_expression "iVar11 + 0x51" identifier + number_literal) ))))) ;) (labeled_statement "joined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }" statement_identifier : (if_statement "if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }" { (expression_statement "iVar11 = *piVar7;" (assignment_expression "iVar11 = *piVar7" identifier = (pointer_expression "*piVar7" * identifier)) ;) (expression_statement "piVar7[iVar11 * 4 + 3] = param_4;" (assignment_expression "piVar7[iVar11 * 4 + 3] = param_4" (subscript_expression "piVar7[iVar11 * 4 + 3]" identifier [ (binary_expression "iVar11 * 4 + 3" (binary_expression "iVar11 * 4" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "piVar7[iVar11 * 4 + 2] = (int)pbVar4;" (assignment_expression "piVar7[iVar11 * 4 + 2] = (int)pbVar4" (subscript_expression "piVar7[iVar11 * 4 + 2]" identifier [ (binary_expression "iVar11 * 4 + 2" (binary_expression "iVar11 * 4" identifier * number_literal) + number_literal) ]) = (cast_expression "(int)pbVar4" ( (type_descriptor "int" primitive_type) ) identifier)) ;) (expression_statement "piVar7[iVar11 * 4 + 4] = param_5;" (assignment_expression "piVar7[iVar11 * 4 + 4] = param_5" (subscript_expression "piVar7[iVar11 * 4 + 4]" identifier [ (binary_expression "iVar11 * 4 + 4" (binary_expression "iVar11 * 4" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "piVar7[iVar11 * 4 + 5] = 0;" (assignment_expression "piVar7[iVar11 * 4 + 5] = 0" (subscript_expression "piVar7[iVar11 * 4 + 5]" identifier [ (binary_expression "iVar11 * 4 + 5" (binary_expression "iVar11 * 4" identifier * number_literal) + number_literal) ]) = number_literal) ;) (expression_statement "*piVar7 = iVar11 + 1;" (assignment_expression "*piVar7 = iVar11 + 1" (pointer_expression "*piVar7" * identifier) = (binary_expression "iVar11 + 1" identifier + number_literal)) ;) (return_statement "return piVar7;" return identifier ;) }))) (if_statement "if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }" if (parenthesized_expression "(param_4 != 0)" ( (binary_expression "param_4 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_00053aa4(iVar11,param_4);\n  }" { (expression_statement "FUN_00053aa4(iVar11,param_4);" (call_expression "FUN_00053aa4(iVar11,param_4)" identifier (argument_list "(iVar11,param_4)" ( identifier , identifier ))) ;) })) (if_statement "if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }" if (parenthesized_expression "(param_5 != 0)" ( (binary_expression "param_5 != 0" identifier != number_literal) )) (compound_statement "{\n    FUN_000537a0(iVar11,param_5,1);\n  }" { (expression_statement "FUN_000537a0(iVar11,param_5,1);" (call_expression "FUN_000537a0(iVar11,param_5,1)" identifier (argument_list "(iVar11,param_5,1)" ( identifier , identifier , number_literal ))) ;) })) (if_statement "if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }" if (parenthesized_expression "(pbVar4 != (byte *)0x0)" ( (binary_expression "pbVar4 != (byte *)0x0" identifier != (cast_expression "(byte *)0x0" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }" { (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x7728))" ( (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x7728)" * (cast_expression "(code *)(PTR_LAB_000f52ec + -0x7728)" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(PTR_LAB_000f52ec + -0x7728)" ( (binary_expression "PTR_LAB_000f52ec + -0x7728" identifier + number_literal) )))) )) (argument_list "(iVar11,pbVar4)" ( identifier , identifier ))) ;) (return_statement "return param_2;" return identifier ;) })) (return_statement "return param_2;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( IDENT )) * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT + LIT) ]) != (subscript_expression IDENT [ (binary_expression IDENT + LIT) ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < IDENT) )) ;)) })) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , (binary_expression (binary_expression IDENT * LIT) + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (return_statement return IDENT ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) (argument_list ( IDENT , IDENT ))) ;) (return_statement return IDENT ;) })) (return_statement return IDENT ;) })))
(function_definition "int * FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)\n\n{\n  byte bVar1;\n  char cVar2;\n  undefined *puVar3;\n  byte *pbVar4;\n  code *pcVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar11 = *param_1;\n  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);\n  puVar3 = PTR_DAT_000f52d4;\n  if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }\nLAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);\n  cVar2 = *(char *)(iVar11 + 0x51);\njoined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }\n  if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }\n  if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }\n  if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }\n  return param_2;\n}" (primitive_type "int") (pointer_declarator "* FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)" (* "*") (function_declarator "FUN_00057264(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)" (identifier "FUN_00057264") (parameter_list "(int *param_1,int *param_2,undefined4 param_3,int param_4,int param_5)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "int *param_2" (primitive_type "int") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "int param_4" (primitive_type "int") (identifier "param_4")) (, ",") (parameter_declaration "int param_5" (primitive_type "int") (identifier "param_5")) () ")")))) (compound_statement "{\n  byte bVar1;\n  char cVar2;\n  undefined *puVar3;\n  byte *pbVar4;\n  code *pcVar5;\n  uint uVar6;\n  int *piVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  int iVar10;\n  int iVar11;\n  undefined *puVar12;\n  int iVar13;\n  \n  iVar11 = *param_1;\n  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);\n  puVar3 = PTR_DAT_000f52d4;\n  if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }\nLAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);\n  cVar2 = *(char *)(iVar11 + 0x51);\njoined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }\n  if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }\n  if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }\n  if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }\n  return param_2;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "byte *pbVar4;" (type_identifier "byte") (pointer_declarator "*pbVar4" (* "*") (identifier "pbVar4")) (; ";")) (declaration "code *pcVar5;" (type_identifier "code") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int *piVar7;" (primitive_type "int") (pointer_declarator "*piVar7" (* "*") (identifier "piVar7")) (; ";")) (declaration "byte *pbVar8;" (type_identifier "byte") (pointer_declarator "*pbVar8" (* "*") (identifier "pbVar8")) (; ";")) (declaration "byte *pbVar9;" (type_identifier "byte") (pointer_declarator "*pbVar9" (* "*") (identifier "pbVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "int iVar11;" (primitive_type "int") (identifier "iVar11") (; ";")) (declaration "undefined *puVar12;" (type_identifier "undefined") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (expression_statement "iVar11 = *param_1;" (assignment_expression "iVar11 = *param_1" (identifier "iVar11") (= "=") (pointer_expression "*param_1" (* "*") (identifier "param_1"))) (; ";")) (expression_statement "pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);" (assignment_expression "pbVar4 = (byte *)FUN_00037c70(iVar11,param_3)" (identifier "pbVar4") (= "=") (cast_expression "(byte *)FUN_00037c70(iVar11,param_3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00037c70(iVar11,param_3)" (identifier "FUN_00037c70") (argument_list "(iVar11,param_3)" (( "(") (identifier "iVar11") (, ",") (identifier "param_3") () ")"))))) (; ";")) (expression_statement "puVar3 = PTR_DAT_000f52d4;" (assignment_expression "puVar3 = PTR_DAT_000f52d4" (identifier "puVar3") (= "=") (identifier "PTR_DAT_000f52d4")) (; ";")) (if_statement "if (pbVar4 == (byte *)0x0) {\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }\n  else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }" (if "if") (parenthesized_expression "(pbVar4 == (byte *)0x0)" (( "(") (binary_expression "pbVar4 == (byte *)0x0" (identifier "pbVar4") (== "==") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (param_2 == (int *)0x0) goto LAB_00057404;\n    iVar10 = *param_2;\n  }" ({ "{") (if_statement "if (param_2 == (int *)0x0) goto LAB_00057404;" (if "if") (parenthesized_expression "(param_2 == (int *)0x0)" (( "(") (binary_expression "param_2 == (int *)0x0" (identifier "param_2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_00057404;" (goto "goto") (statement_identifier "LAB_00057404") (; ";"))) (expression_statement "iVar10 = *param_2;" (assignment_expression "iVar10 = *param_2" (identifier "iVar10") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (} "}")) (else_clause "else {\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }" (else "else") (compound_statement "{\n    if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }\n    iVar10 = *param_2;\n    if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }\n  }" ({ "{") (if_statement "if (param_2 == (int *)0x0) {\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }" (if "if") (parenthesized_expression "(param_2 == (int *)0x0)" (( "(") (binary_expression "param_2 == (int *)0x0" (identifier "param_2") (== "==") (cast_expression "(int *)0x0" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);\n      cVar2 = *(char *)(iVar11 + 0x51);\n      goto joined_r0x0005741c;\n    }" ({ "{") (labeled_statement "LAB_00057404:\n      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);" (statement_identifier "LAB_00057404") (: ":") (expression_statement "piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);" (assignment_expression "piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11)" (identifier "piVar7") (= "=") (cast_expression "(int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + 0x7020))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + 0x7020)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + 0x7020)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + 0x7020)" (( "(") (binary_expression "PTR_LAB_000f52ec + 0x7020" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "0x7020")) () ")")))) () ")")) (argument_list "(iVar11)" (( "(") (identifier "iVar11") () ")"))))) (; ";"))) (expression_statement "cVar2 = *(char *)(iVar11 + 0x51);" (assignment_expression "cVar2 = *(char *)(iVar11 + 0x51)" (identifier "cVar2") (= "=") (pointer_expression "*(char *)(iVar11 + 0x51)" (* "*") (cast_expression "(char *)(iVar11 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x51)" (( "(") (binary_expression "iVar11 + 0x51" (identifier "iVar11") (+ "+") (number_literal "0x51")) () ")"))))) (; ";")) (goto_statement "goto joined_r0x0005741c;" (goto "goto") (statement_identifier "joined_r0x0005741c") (; ";")) (} "}"))) (expression_statement "iVar10 = *param_2;" (assignment_expression "iVar10 = *param_2" (identifier "iVar10") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (if_statement "if (0 < iVar10) {\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }" (if "if") (parenthesized_expression "(0 < iVar10)" (( "(") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n      piVar7 = param_2 + 2;\n      iVar13 = 0;\n      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);\n      puVar12 = PTR_LAB_000f52cc + 0x7da0;\nLAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);\n    }" ({ "{") (expression_statement "piVar7 = param_2 + 2;" (assignment_expression "piVar7 = param_2 + 2" (identifier "piVar7") (= "=") (binary_expression "param_2 + 2" (identifier "param_2") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "iVar13 = 0;" (assignment_expression "iVar13 = 0" (identifier "iVar13") (= "=") (number_literal "0")) (; ";")) (expression_statement "pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);" (assignment_expression "pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8)" (identifier "pcVar5") (= "=") (cast_expression "(code *)(PTR_LAB_000f530c + -0x61d8)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f530c + -0x61d8)" (( "(") (binary_expression "PTR_LAB_000f530c + -0x61d8" (identifier "PTR_LAB_000f530c") (+ "+") (number_literal "-0x61d8")) () ")")))) (; ";")) (expression_statement "puVar12 = PTR_LAB_000f52cc + 0x7da0;" (assignment_expression "puVar12 = PTR_LAB_000f52cc + 0x7da0" (identifier "puVar12") (= "=") (binary_expression "PTR_LAB_000f52cc + 0x7da0" (identifier "PTR_LAB_000f52cc") (+ "+") (number_literal "0x7da0"))) (; ";")) (labeled_statement "LAB_00057308:\n      do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);" (statement_identifier "LAB_00057308") (: ":") (do_statement "do {\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      } while (iVar13 < iVar10);" (do "do") (compound_statement "{\n        pbVar8 = pbVar4;\n        pbVar9 = (byte *)*piVar7;\n        do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);\n        (*pcVar5)(param_1,puVar12,pbVar4);\n        iVar13 = iVar13 + 1;\n        iVar10 = *param_2;\n        piVar7 = piVar7 + 4;\n      }" ({ "{") (expression_statement "pbVar8 = pbVar4;" (assignment_expression "pbVar8 = pbVar4" (identifier "pbVar8") (= "=") (identifier "pbVar4")) (; ";")) (expression_statement "pbVar9 = (byte *)*piVar7;" (assignment_expression "pbVar9 = (byte *)*piVar7" (identifier "pbVar9") (= "=") (cast_expression "(byte *)*piVar7" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*piVar7" (* "*") (identifier "piVar7")))) (; ";")) (do_statement "do {\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        } while (uVar6 != 0);" (do "do") (compound_statement "{\n          while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }\n          pbVar9 = pbVar9 + 1;\n        }" ({ "{") (while_statement "while( true ) {\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            uVar6 = (uint)*pbVar8;\n            bVar1 = *pbVar9;\n            pbVar8 = pbVar8 + 1;\n            if (uVar6 == bVar1) break;\n            pbVar9 = pbVar9 + 1;\n            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }\n          }" ({ "{") (expression_statement "uVar6 = (uint)*pbVar8;" (assignment_expression "uVar6 = (uint)*pbVar8" (identifier "uVar6") (= "=") (binary_expression "(uint)*pbVar8" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (* "*") (identifier "pbVar8"))) (; ";")) (expression_statement "bVar1 = *pbVar9;" (assignment_expression "bVar1 = *pbVar9" (identifier "bVar1") (= "=") (pointer_expression "*pbVar9" (* "*") (identifier "pbVar9"))) (; ";")) (expression_statement "pbVar8 = pbVar8 + 1;" (assignment_expression "pbVar8 = pbVar8 + 1" (identifier "pbVar8") (= "=") (binary_expression "pbVar8 + 1" (identifier "pbVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (uVar6 == bVar1) break;" (if "if") (parenthesized_expression "(uVar6 == bVar1)" (( "(") (binary_expression "uVar6 == bVar1" (identifier "uVar6") (== "==") (identifier "bVar1")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }" (if "if") (parenthesized_expression "(puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac])" (( "(") (binary_expression "puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]" (subscript_expression "puVar3[uVar6 + 0x25ac]" (identifier "puVar3") ([ "[") (binary_expression "uVar6 + 0x25ac" (identifier "uVar6") (+ "+") (number_literal "0x25ac")) (] "]")) (!= "!=") (subscript_expression "puVar3[bVar1 + 0x25ac]" (identifier "puVar3") ([ "[") (binary_expression "bVar1 + 0x25ac" (identifier "bVar1") (+ "+") (number_literal "0x25ac")) (] "]"))) () ")")) (compound_statement "{\n              iVar13 = iVar13 + 1;\n              piVar7 = piVar7 + 4;\n              if (iVar10 <= iVar13) goto LAB_00057350;\n              goto LAB_00057308;\n            }" ({ "{") (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar7 = piVar7 + 4;" (assignment_expression "piVar7 = piVar7 + 4" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 4" (identifier "piVar7") (+ "+") (number_literal "4"))) (; ";")) (if_statement "if (iVar10 <= iVar13) goto LAB_00057350;" (if "if") (parenthesized_expression "(iVar10 <= iVar13)" (( "(") (binary_expression "iVar10 <= iVar13" (identifier "iVar10") (<= "<=") (identifier "iVar13")) () ")")) (goto_statement "goto LAB_00057350;" (goto "goto") (statement_identifier "LAB_00057350") (; ";"))) (goto_statement "goto LAB_00057308;" (goto "goto") (statement_identifier "LAB_00057308") (; ";")) (} "}"))) (} "}"))) (expression_statement "pbVar9 = pbVar9 + 1;" (assignment_expression "pbVar9 = pbVar9 + 1" (identifier "pbVar9") (= "=") (binary_expression "pbVar9 + 1" (identifier "pbVar9") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")")) (; ";")) (expression_statement "(*pcVar5)(param_1,puVar12,pbVar4);" (call_expression "(*pcVar5)(param_1,puVar12,pbVar4)" (parenthesized_expression "(*pcVar5)" (( "(") (pointer_expression "*pcVar5" (* "*") (identifier "pcVar5")) () ")")) (argument_list "(param_1,puVar12,pbVar4)" (( "(") (identifier "param_1") (, ",") (identifier "puVar12") (, ",") (identifier "pbVar4") () ")"))) (; ";")) (expression_statement "iVar13 = iVar13 + 1;" (assignment_expression "iVar13 = iVar13 + 1" (identifier "iVar13") (= "=") (binary_expression "iVar13 + 1" (identifier "iVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "iVar10 = *param_2;" (assignment_expression "iVar10 = *param_2" (identifier "iVar10") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (; ";")) (expression_statement "piVar7 = piVar7 + 4;" (assignment_expression "piVar7 = piVar7 + 4" (identifier "piVar7") (= "=") (binary_expression "piVar7 + 4" (identifier "piVar7") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar13 < iVar10)" (( "(") (binary_expression "iVar13 < iVar10" (identifier "iVar13") (< "<") (identifier "iVar10")) () ")")) (; ";"))) (} "}"))) (} "}")))) (labeled_statement "LAB_00057350:\n  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);" (statement_identifier "LAB_00057350") (: ":") (expression_statement "piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);" (assignment_expression "piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" (identifier "piVar7") (= "=") (cast_expression "(int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" (identifier "FUN_000387fc") (argument_list "(iVar11,param_2,0,iVar10 * 0x10 + 0x18)" (( "(") (identifier "iVar11") (, ",") (identifier "param_2") (, ",") (number_literal "0") (, ",") (binary_expression "iVar10 * 0x10 + 0x18" (binary_expression "iVar10 * 0x10" (identifier "iVar10") (* "*") (number_literal "0x10")) (+ "+") (number_literal "0x18")) () ")"))))) (; ";"))) (expression_statement "cVar2 = *(char *)(iVar11 + 0x51);" (assignment_expression "cVar2 = *(char *)(iVar11 + 0x51)" (identifier "cVar2") (= "=") (pointer_expression "*(char *)(iVar11 + 0x51)" (* "*") (cast_expression "(char *)(iVar11 + 0x51)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar11 + 0x51)" (( "(") (binary_expression "iVar11 + 0x51" (identifier "iVar11") (+ "+") (number_literal "0x51")) () ")"))))) (; ";")) (labeled_statement "joined_r0x0005741c:\n  if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }" (statement_identifier "joined_r0x0005741c") (: ":") (if_statement "if (cVar2 == '\0') {\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar11 = *piVar7;\n    piVar7[iVar11 * 4 + 3] = param_4;\n    piVar7[iVar11 * 4 + 2] = (int)pbVar4;\n    piVar7[iVar11 * 4 + 4] = param_5;\n    piVar7[iVar11 * 4 + 5] = 0;\n    *piVar7 = iVar11 + 1;\n    return piVar7;\n  }" ({ "{") (expression_statement "iVar11 = *piVar7;" (assignment_expression "iVar11 = *piVar7" (identifier "iVar11") (= "=") (pointer_expression "*piVar7" (* "*") (identifier "piVar7"))) (; ";")) (expression_statement "piVar7[iVar11 * 4 + 3] = param_4;" (assignment_expression "piVar7[iVar11 * 4 + 3] = param_4" (subscript_expression "piVar7[iVar11 * 4 + 3]" (identifier "piVar7") ([ "[") (binary_expression "iVar11 * 4 + 3" (binary_expression "iVar11 * 4" (identifier "iVar11") (* "*") (number_literal "4")) (+ "+") (number_literal "3")) (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "piVar7[iVar11 * 4 + 2] = (int)pbVar4;" (assignment_expression "piVar7[iVar11 * 4 + 2] = (int)pbVar4" (subscript_expression "piVar7[iVar11 * 4 + 2]" (identifier "piVar7") ([ "[") (binary_expression "iVar11 * 4 + 2" (binary_expression "iVar11 * 4" (identifier "iVar11") (* "*") (number_literal "4")) (+ "+") (number_literal "2")) (] "]")) (= "=") (cast_expression "(int)pbVar4" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pbVar4"))) (; ";")) (expression_statement "piVar7[iVar11 * 4 + 4] = param_5;" (assignment_expression "piVar7[iVar11 * 4 + 4] = param_5" (subscript_expression "piVar7[iVar11 * 4 + 4]" (identifier "piVar7") ([ "[") (binary_expression "iVar11 * 4 + 4" (binary_expression "iVar11 * 4" (identifier "iVar11") (* "*") (number_literal "4")) (+ "+") (number_literal "4")) (] "]")) (= "=") (identifier "param_5")) (; ";")) (expression_statement "piVar7[iVar11 * 4 + 5] = 0;" (assignment_expression "piVar7[iVar11 * 4 + 5] = 0" (subscript_expression "piVar7[iVar11 * 4 + 5]" (identifier "piVar7") ([ "[") (binary_expression "iVar11 * 4 + 5" (binary_expression "iVar11 * 4" (identifier "iVar11") (* "*") (number_literal "4")) (+ "+") (number_literal "5")) (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*piVar7 = iVar11 + 1;" (assignment_expression "*piVar7 = iVar11 + 1" (pointer_expression "*piVar7" (* "*") (identifier "piVar7")) (= "=") (binary_expression "iVar11 + 1" (identifier "iVar11") (+ "+") (number_literal "1"))) (; ";")) (return_statement "return piVar7;" (return "return") (identifier "piVar7") (; ";")) (} "}")))) (if_statement "if (param_4 != 0) {\n    FUN_00053aa4(iVar11,param_4);\n  }" (if "if") (parenthesized_expression "(param_4 != 0)" (( "(") (binary_expression "param_4 != 0" (identifier "param_4") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_00053aa4(iVar11,param_4);\n  }" ({ "{") (expression_statement "FUN_00053aa4(iVar11,param_4);" (call_expression "FUN_00053aa4(iVar11,param_4)" (identifier "FUN_00053aa4") (argument_list "(iVar11,param_4)" (( "(") (identifier "iVar11") (, ",") (identifier "param_4") () ")"))) (; ";")) (} "}"))) (if_statement "if (param_5 != 0) {\n    FUN_000537a0(iVar11,param_5,1);\n  }" (if "if") (parenthesized_expression "(param_5 != 0)" (( "(") (binary_expression "param_5 != 0" (identifier "param_5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000537a0(iVar11,param_5,1);\n  }" ({ "{") (expression_statement "FUN_000537a0(iVar11,param_5,1);" (call_expression "FUN_000537a0(iVar11,param_5,1)" (identifier "FUN_000537a0") (argument_list "(iVar11,param_5,1)" (( "(") (identifier "iVar11") (, ",") (identifier "param_5") (, ",") (number_literal "1") () ")"))) (; ";")) (} "}"))) (if_statement "if (pbVar4 != (byte *)0x0) {\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }" (if "if") (parenthesized_expression "(pbVar4 != (byte *)0x0)" (( "(") (binary_expression "pbVar4 != (byte *)0x0" (identifier "pbVar4") (!= "!=") (cast_expression "(byte *)0x0" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);\n    return param_2;\n  }" ({ "{") (expression_statement "(*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);" (call_expression "(*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4)" (parenthesized_expression "(*(code *)(PTR_LAB_000f52ec + -0x7728))" (( "(") (pointer_expression "*(code *)(PTR_LAB_000f52ec + -0x7728)" (* "*") (cast_expression "(code *)(PTR_LAB_000f52ec + -0x7728)" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(PTR_LAB_000f52ec + -0x7728)" (( "(") (binary_expression "PTR_LAB_000f52ec + -0x7728" (identifier "PTR_LAB_000f52ec") (+ "+") (number_literal "-0x7728")) () ")")))) () ")")) (argument_list "(iVar11,pbVar4)" (( "(") (identifier "iVar11") (, ",") (identifier "pbVar4") () ")"))) (; ";")) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}"))) (return_statement "return param_2;" (return "return") (identifier "param_2") (; ";")) (} "}")))
(translation_unit (function_definition type: (primitive_type) declarator: (pointer_declarator declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (parameter_declaration type: (type_identifier) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier)) (parameter_declaration type: (primitive_type) declarator: (identifier))))) body: (compound_statement (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: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) 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: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (goto_statement label: (statement_identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (number_literal) right: (identifier))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (labeled_statement label: (statement_identifier) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (pointer_expression argument: (identifier))))) (do_statement body: (compound_statement (while_statement condition: (parenthesized_expression (true)) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (parenthesized_expression (identifier)) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) right: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (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: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier) (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal) (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (number_literal))) right: (number_literal))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (identifier) right: (number_literal)))) (return_statement (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal)))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (number_literal)))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal)))))) arguments: (argument_list (identifier) (identifier)))) (return_statement (identifier)))) (return_statement (identifier)))))

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

{
  byte bVar1;
  char cVar2;
  undefined *puVar3;
  byte *pbVar4;
  code *pcVar5;
  uint uVar6;
  int *piVar7;
  byte *pbVar8;
  byte *pbVar9;
  int iVar10;
  int iVar11;
  undefined *puVar12;
  int iVar13;
  
  iVar11 = *param_1;
  pbVar4 = (byte *)FUN_00037c70(iVar11,param_3);
  puVar3 = PTR_DAT_000f52d4;
  if (pbVar4 == (byte *)0x0) {
    if (param_2 == (int *)0x0) goto LAB_00057404;
    iVar10 = *param_2;
  }
  else {
    if (param_2 == (int *)0x0) {
LAB_00057404:
      piVar7 = (int *)(*(code *)(PTR_LAB_000f52ec + 0x7020))(iVar11);
      cVar2 = *(char *)(iVar11 + 0x51);
      goto joined_r0x0005741c;
    }
    iVar10 = *param_2;
    if (0 < iVar10) {
      piVar7 = param_2 + 2;
      iVar13 = 0;
      pcVar5 = (code *)(PTR_LAB_000f530c + -0x61d8);
      puVar12 = PTR_LAB_000f52cc + 0x7da0;
LAB_00057308:
      do {
        pbVar8 = pbVar4;
        pbVar9 = (byte *)*piVar7;
        do {
          while( true ) {
            uVar6 = (uint)*pbVar8;
            bVar1 = *pbVar9;
            pbVar8 = pbVar8 + 1;
            if (uVar6 == bVar1) break;
            pbVar9 = pbVar9 + 1;
            if (puVar3[uVar6 + 0x25ac] != puVar3[bVar1 + 0x25ac]) {
              iVar13 = iVar13 + 1;
              piVar7 = piVar7 + 4;
              if (iVar10 <= iVar13) goto LAB_00057350;
              goto LAB_00057308;
            }
          }
          pbVar9 = pbVar9 + 1;
        } while (uVar6 != 0);
        (*pcVar5)(param_1,puVar12,pbVar4);
        iVar13 = iVar13 + 1;
        iVar10 = *param_2;
        piVar7 = piVar7 + 4;
      } while (iVar13 < iVar10);
    }
  }
LAB_00057350:
  piVar7 = (int *)FUN_000387fc(iVar11,param_2,0,iVar10 * 0x10 + 0x18);
  cVar2 = *(char *)(iVar11 + 0x51);
joined_r0x0005741c:
  if (cVar2 == '\0') {
    iVar11 = *piVar7;
    piVar7[iVar11 * 4 + 3] = param_4;
    piVar7[iVar11 * 4 + 2] = (int)pbVar4;
    piVar7[iVar11 * 4 + 4] = param_5;
    piVar7[iVar11 * 4 + 5] = 0;
    *piVar7 = iVar11 + 1;
    return piVar7;
  }
  if (param_4 != 0) {
    FUN_00053aa4(iVar11,param_4);
  }
  if (param_5 != 0) {
    FUN_000537a0(iVar11,param_5,1);
  }
  if (pbVar4 != (byte *)0x0) {
    (*(code *)(PTR_LAB_000f52ec + -0x7728))(iVar11,pbVar4);
    return param_2;
  }
  return param_2;
}

