
/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void logfopen(void *handle)

{
  LogContext *ctx;
  
  if ((*(int *)((int)handle + 4) == 0) && (*(int *)((int)handle + 0x20) != 0)) {
    logfopen(handle);
    return;
  }
  return;
}



void logfopen(int *param_1)

{
  byte bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined4 *puVar4;
  int *piVar5;
  undefined4 *puVar6;
  char *pcVar7;
  char cVar10;
  int *piVar8;
  uint uVar9;
  undefined4 *puVar11;
  undefined4 *puVar12;
  int iVar13;
  char *pcVar14;
  undefined4 uVar15;
  undefined4 uVar16;
  char *pcVar17;
  undefined4 uVar18;
  int iVar19;
  char *pcVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  int iVar24;
  code *pcVar25;
  int iVar26;
  undefined4 auStack_a8 [8];
  undefined4 auStack_88 [4];
  undefined4 auStack_78 [11];
  char acStack_4c [32];
  int iStack_2c;
  
  puVar3 = PTR_LAB_000b54a8;
  if ((param_1[1] != 0) || (param_1[8] == 0)) {
    return;
  }
  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);
  iStack_2c = *piVar5;
  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);
  puVar4 = auStack_78;
  puVar12 = auStack_a8;
  do {
    puVar11 = puVar12;
    puVar6 = puVar4;
    puVar12 = puVar11 + 4;
    uVar18 = puVar11[1];
    uVar16 = puVar11[2];
    uVar15 = puVar11[3];
    *puVar6 = *puVar11;
    puVar6[1] = uVar18;
    puVar6[2] = uVar16;
    puVar6[3] = uVar15;
    puVar4 = puVar6 + 4;
  } while (puVar12 != auStack_88);
  uVar16 = puVar11[5];
  uVar15 = puVar11[6];
  iVar13 = param_1[5];
  puVar6[4] = *puVar12;
  puVar6[5] = uVar16;
  puVar6[6] = uVar15;
  if (iVar13 != 0) {
    (**(code **)(puVar3 + 0x8526c))();
  }
  iVar26 = 0;
  uVar15 = conf_get_filename(param_1[7],0x77);
  conf_get_str(param_1[7],0);
  conf_get_int(param_1[7],1);
  iVar13 = safemalloc(0x1000,1);
  iVar21 = 0x1000;
  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);
  cVar10 = *pcVar7;
  iVar23 = *(int *)(puVar3 + 0x85230);
  while (cVar10 != '\0') {
    pcVar14 = pcVar7 + 1;
    if (cVar10 == '&') {
      bVar1 = pcVar7[1];
      if (bVar1 != 0) {
        pcVar14 = pcVar7 + 2;
        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();
        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;
        if (uVar9 < 0x16) {
                    /* WARNING: Could not emulate address calculation at 0x00031218 */
                    /* WARNING: Treating indirect jump as call */
          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();
          return;
        }
        acStack_4c[0] = '&';
        if (bVar1 == 0x26) {
          iVar24 = 0;
          bVar2 = true;
          iVar19 = 1;
        }
        else {
          acStack_4c[1] = bVar1;
          iVar24 = 1;
          bVar2 = true;
          iVar19 = 2;
        }
        goto LAB_000310c8;
      }
      if (iVar26 < iVar21) break;
      iVar24 = -1;
      bVar2 = true;
      iVar19 = 0;
      iVar22 = iVar26;
LAB_00031188:
      iVar22 = iVar22 * 5;
      if (iVar22 < 0) {
        iVar22 = iVar22 + 3;
      }
      iVar21 = (iVar22 >> 2) + 0x200;
      iVar13 = saferealloc(iVar13,iVar21,1);
      if (iVar19 != 0) goto LAB_000310dc;
      cVar10 = *pcVar14;
      pcVar7 = pcVar14;
    }
    else {
      iVar24 = 0;
      acStack_4c[0] = cVar10;
      bVar2 = false;
      iVar19 = 1;
LAB_000310c8:
      iVar22 = iVar26 + iVar19;
      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;
LAB_000310dc:
      pcVar7 = acStack_4c;
      pcVar20 = (char *)(iVar13 + iVar26);
      do {
        while( true ) {
          pcVar17 = pcVar7 + 1;
          if (!bVar2) break;
          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);
          *pcVar20 = cVar10;
          pcVar7 = pcVar17;
          pcVar20 = pcVar20 + 1;
          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;
        }
        *pcVar20 = *pcVar7;
        pcVar20 = pcVar20 + 1;
        pcVar7 = pcVar17;
      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));
LAB_00031148:
      cVar10 = *pcVar14;
      if (iVar24 < 0) {
        iVar24 = 0;
      }
      iVar26 = iVar24 + iVar26 + 1;
      pcVar7 = pcVar14;
    }
  }
  pcVar25 = *(code **)(puVar3 + 0x85264);
  *(undefined1 *)(iVar13 + iVar26) = 0;
  iVar21 = (*pcVar25)(iVar13);
  safefree(iVar13);
  param_1[5] = iVar21;
  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);
  if (iVar13 == 0) {
LAB_00031314:
    iVar13 = 2;
  }
  else {
    iVar21 = conf_get_int(param_1[7],0x79);
    (**(code **)(puVar3 + 0x85f20))(iVar13);
    if (iVar21 == -1) {
      piVar8 = (int *)param_1[6];
      iVar13 = (**(code **)(puVar3 + 0x854f4))
                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);
      if (iVar13 < 0) {
        param_1[1] = 1;
        goto LAB_000312d0;
      }
    }
    else {
      if (iVar21 == 1) goto LAB_00031314;
      iVar13 = 1;
    }
  }
  FUN_00030ab0(param_1,iVar13);
  piVar8 = param_1;
LAB_000312d0:
  if (iStack_2c != *piVar5) {
    pcVar25 = *(code **)(puVar3 + 0x85d9c);
    (*pcVar25)();
    if (*piVar8 != 0) {
      (**(code **)(pcVar25 + 0x84ac8))();
      *piVar8 = 0;
    }
    piVar8[1] = 0;
    return;
  }
  return;
}


lui gp,0x9
addiu gp,gp,-0x3694
addu gp,gp,t9
lw v1,0x4(a0)
bne v1,zero,0x00030888
_nop
lw v0,0x20(a0)
bne v0,zero,0x00030890
_lw t9,-0x7d28(gp)
jr ra
_nop
addiu t9,t9,0xf18
b 0x00030f18
_nop
(translation_unit "void logfopen(int *param_1)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  char cVar10;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  char *pcVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  char *pcVar17;\n  undefined4 uVar18;\n  int iVar19;\n  char *pcVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  code *pcVar25;\n  int iVar26;\n  undefined4 auStack_a8 [8];\n  undefined4 auStack_88 [4];\n  undefined4 auStack_78 [11];\n  char acStack_4c [32];\n  int iStack_2c;\n  \n  puVar3 = PTR_LAB_000b54a8;\n  if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }\n  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);\n  iStack_2c = *piVar5;\n  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);\n  puVar4 = auStack_78;\n  puVar12 = auStack_a8;\n  do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);\n  uVar16 = puVar11[5];\n  uVar15 = puVar11[6];\n  iVar13 = param_1[5];\n  puVar6[4] = *puVar12;\n  puVar6[5] = uVar16;\n  puVar6[6] = uVar15;\n  if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }\n  iVar26 = 0;\n  uVar15 = conf_get_filename(param_1[7],0x77);\n  conf_get_str(param_1[7],0);\n  conf_get_int(param_1[7],1);\n  iVar13 = safemalloc(0x1000,1);\n  iVar21 = 0x1000;\n  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);\n  cVar10 = *pcVar7;\n  iVar23 = *(int *)(puVar3 + 0x85230);\n  while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }\n  pcVar25 = *(code **)(puVar3 + 0x85264);\n  *(undefined1 *)(iVar13 + iVar26) = 0;\n  iVar21 = (*pcVar25)(iVar13);\n  safefree(iVar13);\n  param_1[5] = iVar21;\n  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);\n  if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }\n  FUN_00030ab0(param_1,iVar13);\n  piVar8 = param_1;\nLAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void logfopen(int *param_1)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  char cVar10;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  char *pcVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  char *pcVar17;\n  undefined4 uVar18;\n  int iVar19;\n  char *pcVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  code *pcVar25;\n  int iVar26;\n  undefined4 auStack_a8 [8];\n  undefined4 auStack_88 [4];\n  undefined4 auStack_78 [11];\n  char acStack_4c [32];\n  int iStack_2c;\n  \n  puVar3 = PTR_LAB_000b54a8;\n  if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }\n  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);\n  iStack_2c = *piVar5;\n  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);\n  puVar4 = auStack_78;\n  puVar12 = auStack_a8;\n  do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);\n  uVar16 = puVar11[5];\n  uVar15 = puVar11[6];\n  iVar13 = param_1[5];\n  puVar6[4] = *puVar12;\n  puVar6[5] = uVar16;\n  puVar6[6] = uVar15;\n  if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }\n  iVar26 = 0;\n  uVar15 = conf_get_filename(param_1[7],0x77);\n  conf_get_str(param_1[7],0);\n  conf_get_int(param_1[7],1);\n  iVar13 = safemalloc(0x1000,1);\n  iVar21 = 0x1000;\n  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);\n  cVar10 = *pcVar7;\n  iVar23 = *(int *)(puVar3 + 0x85230);\n  while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }\n  pcVar25 = *(code **)(puVar3 + 0x85264);\n  *(undefined1 *)(iVar13 + iVar26) = 0;\n  iVar21 = (*pcVar25)(iVar13);\n  safefree(iVar13);\n  param_1[5] = iVar21;\n  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);\n  if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }\n  FUN_00030ab0(param_1,iVar13);\n  piVar8 = param_1;\nLAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "logfopen(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  char cVar10;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  char *pcVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  char *pcVar17;\n  undefined4 uVar18;\n  int iVar19;\n  char *pcVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  code *pcVar25;\n  int iVar26;\n  undefined4 auStack_a8 [8];\n  undefined4 auStack_88 [4];\n  undefined4 auStack_78 [11];\n  char acStack_4c [32];\n  int iStack_2c;\n  \n  puVar3 = PTR_LAB_000b54a8;\n  if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }\n  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);\n  iStack_2c = *piVar5;\n  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);\n  puVar4 = auStack_78;\n  puVar12 = auStack_a8;\n  do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);\n  uVar16 = puVar11[5];\n  uVar15 = puVar11[6];\n  iVar13 = param_1[5];\n  puVar6[4] = *puVar12;\n  puVar6[5] = uVar16;\n  puVar6[6] = uVar15;\n  if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }\n  iVar26 = 0;\n  uVar15 = conf_get_filename(param_1[7],0x77);\n  conf_get_str(param_1[7],0);\n  conf_get_int(param_1[7],1);\n  iVar13 = safemalloc(0x1000,1);\n  iVar21 = 0x1000;\n  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);\n  cVar10 = *pcVar7;\n  iVar23 = *(int *)(puVar3 + 0x85230);\n  while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }\n  pcVar25 = *(code **)(puVar3 + 0x85264);\n  *(undefined1 *)(iVar13 + iVar26) = 0;\n  iVar21 = (*pcVar25)(iVar13);\n  safefree(iVar13);\n  param_1[5] = iVar21;\n  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);\n  if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }\n  FUN_00030ab0(param_1,iVar13);\n  piVar8 = param_1;\nLAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "char *pcVar17;" primitive_type (pointer_declarator "*pcVar17" * identifier) ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "char *pcVar20;" primitive_type (pointer_declarator "*pcVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "undefined4 auStack_a8 [8];" type_identifier (array_declarator "auStack_a8 [8]" identifier [ number_literal ]) ;) (declaration "undefined4 auStack_88 [4];" type_identifier (array_declarator "auStack_88 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 auStack_78 [11];" type_identifier (array_declarator "auStack_78 [11]" identifier [ number_literal ]) ;) (declaration "char acStack_4c [32];" primitive_type (array_declarator "acStack_4c [32]" identifier [ number_literal ]) ;) (declaration "int iStack_2c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR_LAB_000b54a8;" (assignment_expression "puVar3 = PTR_LAB_000b54a8" identifier = identifier) ;) (if_statement "if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }" if (parenthesized_expression "((param_1[1] != 0) || (param_1[8] == 0))" ( (binary_expression "(param_1[1] != 0) || (param_1[8] == 0)" (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(param_1[8] == 0)" ( (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);" (assignment_expression "piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8)" identifier = (pointer_expression "*(int **)(PTR_LAB_000b54a8 + 0x860f8)" * (cast_expression "(int **)(PTR_LAB_000b54a8 + 0x860f8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_LAB_000b54a8 + 0x860f8)" ( (binary_expression "PTR_LAB_000b54a8 + 0x860f8" identifier + number_literal) ))))) ;) (expression_statement "iStack_2c = *piVar5;" (assignment_expression "iStack_2c = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "(**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);" (call_expression "(**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8)" (parenthesized_expression "(**(code **)(PTR_LAB_000b54a8 + 0x854e8))" ( (pointer_expression "**(code **)(PTR_LAB_000b54a8 + 0x854e8)" * (pointer_expression "*(code **)(PTR_LAB_000b54a8 + 0x854e8)" * (cast_expression "(code **)(PTR_LAB_000b54a8 + 0x854e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_LAB_000b54a8 + 0x854e8)" ( (binary_expression "PTR_LAB_000b54a8 + 0x854e8" identifier + number_literal) ))))) )) (argument_list "(auStack_a8)" ( identifier ))) ;) (expression_statement "puVar4 = auStack_78;" (assignment_expression "puVar4 = auStack_78" identifier = identifier) ;) (expression_statement "puVar12 = auStack_a8;" (assignment_expression "puVar12 = auStack_a8" identifier = identifier) ;) (do_statement "do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);" do (compound_statement "{\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  }" { (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" identifier = identifier) ;) (expression_statement "puVar6 = puVar4;" (assignment_expression "puVar6 = puVar4" identifier = identifier) ;) (expression_statement "puVar12 = puVar11 + 4;" (assignment_expression "puVar12 = puVar11 + 4" identifier = (binary_expression "puVar11 + 4" identifier + number_literal)) ;) (expression_statement "uVar18 = puVar11[1];" (assignment_expression "uVar18 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = puVar11[2];" (assignment_expression "uVar16 = puVar11[2]" identifier = (subscript_expression "puVar11[2]" identifier [ number_literal ])) ;) (expression_statement "uVar15 = puVar11[3];" (assignment_expression "uVar15 = puVar11[3]" identifier = (subscript_expression "puVar11[3]" identifier [ number_literal ])) ;) (expression_statement "*puVar6 = *puVar11;" (assignment_expression "*puVar6 = *puVar11" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar6[1] = uVar18;" (assignment_expression "puVar6[1] = uVar18" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[2] = uVar16;" (assignment_expression "puVar6[2] = uVar16" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = uVar15;" (assignment_expression "puVar6[3] = uVar15" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = puVar6 + 4;" (assignment_expression "puVar4 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar12 != auStack_88)" ( (binary_expression "puVar12 != auStack_88" identifier != identifier) )) ;) (expression_statement "uVar16 = puVar11[5];" (assignment_expression "uVar16 = puVar11[5]" identifier = (subscript_expression "puVar11[5]" identifier [ number_literal ])) ;) (expression_statement "uVar15 = puVar11[6];" (assignment_expression "uVar15 = puVar11[6]" identifier = (subscript_expression "puVar11[6]" identifier [ number_literal ])) ;) (expression_statement "iVar13 = param_1[5];" (assignment_expression "iVar13 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = *puVar12;" (assignment_expression "puVar6[4] = *puVar12" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar6[5] = uVar16;" (assignment_expression "puVar6[5] = uVar16" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[6] = uVar15;" (assignment_expression "puVar6[6] = uVar15" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    (**(code **)(puVar3 + 0x8526c))();\n  }" { (expression_statement "(**(code **)(puVar3 + 0x8526c))();" (call_expression "(**(code **)(puVar3 + 0x8526c))()" (parenthesized_expression "(**(code **)(puVar3 + 0x8526c))" ( (pointer_expression "**(code **)(puVar3 + 0x8526c)" * (pointer_expression "*(code **)(puVar3 + 0x8526c)" * (cast_expression "(code **)(puVar3 + 0x8526c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x8526c)" ( (binary_expression "puVar3 + 0x8526c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = conf_get_filename(param_1[7],0x77);" (assignment_expression "uVar15 = conf_get_filename(param_1[7],0x77)" identifier = (call_expression "conf_get_filename(param_1[7],0x77)" identifier (argument_list "(param_1[7],0x77)" ( (subscript_expression "param_1[7]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "conf_get_str(param_1[7],0);" (call_expression "conf_get_str(param_1[7],0)" identifier (argument_list "(param_1[7],0)" ( (subscript_expression "param_1[7]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "conf_get_int(param_1[7],1);" (call_expression "conf_get_int(param_1[7],1)" identifier (argument_list "(param_1[7],1)" ( (subscript_expression "param_1[7]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "iVar13 = safemalloc(0x1000,1);" (assignment_expression "iVar13 = safemalloc(0x1000,1)" identifier = (call_expression "safemalloc(0x1000,1)" identifier (argument_list "(0x1000,1)" ( number_literal , number_literal )))) ;) (expression_statement "iVar21 = 0x1000;" (assignment_expression "iVar21 = 0x1000" identifier = number_literal) ;) (expression_statement "pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);" (assignment_expression "pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15)" identifier = (cast_expression "(char *)(**(code **)(puVar3 + 0x854e0))(uVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar3 + 0x854e0))(uVar15)" (parenthesized_expression "(**(code **)(puVar3 + 0x854e0))" ( (pointer_expression "**(code **)(puVar3 + 0x854e0)" * (pointer_expression "*(code **)(puVar3 + 0x854e0)" * (cast_expression "(code **)(puVar3 + 0x854e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x854e0)" ( (binary_expression "puVar3 + 0x854e0" identifier + number_literal) ))))) )) (argument_list "(uVar15)" ( identifier ))))) ;) (expression_statement "cVar10 = *pcVar7;" (assignment_expression "cVar10 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "iVar23 = *(int *)(puVar3 + 0x85230);" (assignment_expression "iVar23 = *(int *)(puVar3 + 0x85230)" identifier = (pointer_expression "*(int *)(puVar3 + 0x85230)" * (cast_expression "(int *)(puVar3 + 0x85230)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x85230)" ( (binary_expression "puVar3 + 0x85230" identifier + number_literal) ))))) ;) (while_statement "while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }" while (parenthesized_expression "(cVar10 != '\0')" ( (binary_expression "cVar10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }" { (expression_statement "pcVar14 = pcVar7 + 1;" (assignment_expression "pcVar14 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (if_statement "if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }" if (parenthesized_expression "(cVar10 == '&')" ( (binary_expression "cVar10 == '&'" identifier == (char_literal "'&'" ' character ')) )) (compound_statement "{\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }" { (expression_statement "bVar1 = pcVar7[1];" (assignment_expression "bVar1 = pcVar7[1]" identifier = (subscript_expression "pcVar7[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }" { (expression_statement "pcVar14 = pcVar7 + 2;" (assignment_expression "pcVar14 = pcVar7 + 2" identifier = (binary_expression "pcVar7 + 2" identifier + number_literal)) ;) (expression_statement "piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();" (assignment_expression "piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))()" identifier = (cast_expression "(int *)(**(code **)(puVar3 + 0x861d4))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar3 + 0x861d4))()" (parenthesized_expression "(**(code **)(puVar3 + 0x861d4))" ( (pointer_expression "**(code **)(puVar3 + 0x861d4)" * (pointer_expression "*(code **)(puVar3 + 0x861d4)" * (cast_expression "(code **)(puVar3 + 0x861d4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x861d4)" ( (binary_expression "puVar3 + 0x861d4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;" (assignment_expression "uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100" identifier = (binary_expression "*(int *)(*piVar8 + (uint)bVar1 * 4) - 100" (pointer_expression "*(int *)(*piVar8 + (uint)bVar1 * 4)" * (cast_expression "(int *)(*piVar8 + (uint)bVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar8 + (uint)bVar1 * 4)" ( (binary_expression "*piVar8 + (uint)bVar1 * 4" (pointer_expression "*piVar8" * identifier) + (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) - number_literal)) ;) (if_statement "if (uVar9 < 0x16) {\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }" if (parenthesized_expression "(uVar9 < 0x16)" ( (binary_expression "uVar9 < 0x16" identifier < number_literal) )) (compound_statement "{\n                    /* WARNING: Could not emulate address calculation at 0x00031218 */\n                    /* WARNING: Treating indirect jump as call */\n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }" { comment comment (expression_statement "(*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();" (call_expression "(*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))()" (parenthesized_expression "(*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))" ( (pointer_expression "*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)))" * (cast_expression "(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)))" ( (binary_expression "puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))" identifier + (cast_expression "(int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))" ( (binary_expression "&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)" (pointer_expression "&UNK_0008d1d0" & identifier) + (pointer_expression "*(int *)(iVar23 + 0x4c70 + uVar9 * 4)" * (cast_expression "(int *)(iVar23 + 0x4c70 + uVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x4c70 + uVar9 * 4)" ( (binary_expression "iVar23 + 0x4c70 + uVar9 * 4" (binary_expression "iVar23 + 0x4c70" identifier + number_literal) + (binary_expression "uVar9 * 4" identifier * number_literal)) ))))) )))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "acStack_4c[0] = '&';" (assignment_expression "acStack_4c[0] = '&'" (subscript_expression "acStack_4c[0]" identifier [ number_literal ]) = (char_literal "'&'" ' character ')) ;) (if_statement "if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }" if (parenthesized_expression "(bVar1 == 0x26)" ( (binary_expression "bVar1 == 0x26" identifier == number_literal) )) (compound_statement "{\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }" else (compound_statement "{\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }" { (expression_statement "acStack_4c[1] = bVar1;" (assignment_expression "acStack_4c[1] = bVar1" (subscript_expression "acStack_4c[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "iVar19 = 2;" (assignment_expression "iVar19 = 2" identifier = number_literal) ;) }))) (goto_statement "goto LAB_000310c8;" goto statement_identifier ;) })) (if_statement "if (iVar26 < iVar21) break;" if (parenthesized_expression "(iVar26 < iVar21)" ( (binary_expression "iVar26 < iVar21" identifier < identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar24 = -1;" (assignment_expression "iVar24 = -1" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar22 = iVar26;" (assignment_expression "iVar22 = iVar26" identifier = identifier) ;) (labeled_statement "LAB_00031188:\n      iVar22 = iVar22 * 5;" statement_identifier : (expression_statement "iVar22 = iVar22 * 5;" (assignment_expression "iVar22 = iVar22 * 5" identifier = (binary_expression "iVar22 * 5" identifier * number_literal)) ;)) (if_statement "if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }" if (parenthesized_expression "(iVar22 < 0)" ( (binary_expression "iVar22 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar22 = iVar22 + 3;\n      }" { (expression_statement "iVar22 = iVar22 + 3;" (assignment_expression "iVar22 = iVar22 + 3" identifier = (binary_expression "iVar22 + 3" identifier + number_literal)) ;) })) (expression_statement "iVar21 = (iVar22 >> 2) + 0x200;" (assignment_expression "iVar21 = (iVar22 >> 2) + 0x200" identifier = (binary_expression "(iVar22 >> 2) + 0x200" (parenthesized_expression "(iVar22 >> 2)" ( (binary_expression "iVar22 >> 2" identifier >> number_literal) )) + number_literal)) ;) (expression_statement "iVar13 = saferealloc(iVar13,iVar21,1);" (assignment_expression "iVar13 = saferealloc(iVar13,iVar21,1)" identifier = (call_expression "saferealloc(iVar13,iVar21,1)" identifier (argument_list "(iVar13,iVar21,1)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar19 != 0) goto LAB_000310dc;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000310dc;" goto statement_identifier ;)) (expression_statement "cVar10 = *pcVar14;" (assignment_expression "cVar10 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) (expression_statement "pcVar7 = pcVar14;" (assignment_expression "pcVar7 = pcVar14" identifier = identifier) ;) }) (else_clause "else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }" else (compound_statement "{\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "acStack_4c[0] = cVar10;" (assignment_expression "acStack_4c[0] = cVar10" (subscript_expression "acStack_4c[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000310c8:\n      iVar22 = iVar26 + iVar19;" statement_identifier : (expression_statement "iVar22 = iVar26 + iVar19;" (assignment_expression "iVar22 = iVar26 + iVar19" identifier = (binary_expression "iVar26 + iVar19" identifier + identifier)) ;)) (if_statement "if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;" if (parenthesized_expression "(iVar21 <= iVar26 + iVar19)" ( (binary_expression "iVar21 <= iVar26 + iVar19" identifier <= (binary_expression "iVar26 + iVar19" identifier + identifier)) )) (goto_statement "goto LAB_00031188;" goto statement_identifier ;)) (labeled_statement "LAB_000310dc:\n      pcVar7 = acStack_4c;" statement_identifier : (expression_statement "pcVar7 = acStack_4c;" (assignment_expression "pcVar7 = acStack_4c" identifier = identifier) ;)) (expression_statement "pcVar20 = (char *)(iVar13 + iVar26);" (assignment_expression "pcVar20 = (char *)(iVar13 + iVar26)" identifier = (cast_expression "(char *)(iVar13 + iVar26)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar26)" ( (binary_expression "iVar13 + iVar26" identifier + identifier) )))) ;) (do_statement "do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));" do (compound_statement "{\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      }" { (while_statement "while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }" { (expression_statement "pcVar17 = pcVar7 + 1;" (assignment_expression "pcVar17 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (if_statement "if (!bVar2) break;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (break_statement "break;" break ;)) (expression_statement "cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);" (assignment_expression "cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7)" identifier = (call_expression "(**(code **)(puVar3 + 0x854f0))((int)*pcVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x854f0))" ( (pointer_expression "**(code **)(puVar3 + 0x854f0)" * (pointer_expression "*(code **)(puVar3 + 0x854f0)" * (cast_expression "(code **)(puVar3 + 0x854f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x854f0)" ( (binary_expression "puVar3 + 0x854f0" identifier + number_literal) ))))) )) (argument_list "((int)*pcVar7)" ( (cast_expression "(int)*pcVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar7" * identifier)) )))) ;) (expression_statement "*pcVar20 = cVar10;" (assignment_expression "*pcVar20 = cVar10" (pointer_expression "*pcVar20" * identifier) = identifier) ;) (expression_statement "pcVar7 = pcVar17;" (assignment_expression "pcVar7 = pcVar17" identifier = identifier) ;) (expression_statement "pcVar20 = pcVar20 + 1;" (assignment_expression "pcVar20 = pcVar20 + 1" identifier = (binary_expression "pcVar20 + 1" identifier + number_literal)) ;) (if_statement "if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;" if (parenthesized_expression "((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1)" ( (binary_expression "(int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1" (cast_expression "(int)(acStack_4c + iVar24 + (1 - (int)pcVar17))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(acStack_4c + iVar24 + (1 - (int)pcVar17))" ( (binary_expression "acStack_4c + iVar24 + (1 - (int)pcVar17)" (binary_expression "acStack_4c + iVar24" identifier + identifier) + (parenthesized_expression "(1 - (int)pcVar17)" ( (binary_expression "1 - (int)pcVar17" number_literal - (cast_expression "(int)pcVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) < number_literal) )) (goto_statement "goto LAB_00031148;" goto statement_identifier ;)) })) (expression_statement "*pcVar20 = *pcVar7;" (assignment_expression "*pcVar20 = *pcVar7" (pointer_expression "*pcVar20" * identifier) = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar20 = pcVar20 + 1;" (assignment_expression "pcVar20 = pcVar20 + 1" identifier = (binary_expression "pcVar20 + 1" identifier + number_literal)) ;) (expression_statement "pcVar7 = pcVar17;" (assignment_expression "pcVar7 = pcVar17" identifier = identifier) ;) }) while (parenthesized_expression "(0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)))" ( (binary_expression "0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17))" number_literal < (cast_expression "(int)(acStack_4c + iVar24 + (1 - (int)pcVar17))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(acStack_4c + iVar24 + (1 - (int)pcVar17))" ( (binary_expression "acStack_4c + iVar24 + (1 - (int)pcVar17)" (binary_expression "acStack_4c + iVar24" identifier + identifier) + (parenthesized_expression "(1 - (int)pcVar17)" ( (binary_expression "1 - (int)pcVar17" number_literal - (cast_expression "(int)pcVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) )) ;) (labeled_statement "LAB_00031148:\n      cVar10 = *pcVar14;" statement_identifier : (expression_statement "cVar10 = *pcVar14;" (assignment_expression "cVar10 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;)) (if_statement "if (iVar24 < 0) {\n        iVar24 = 0;\n      }" if (parenthesized_expression "(iVar24 < 0)" ( (binary_expression "iVar24 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar24 = 0;\n      }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) })) (expression_statement "iVar26 = iVar24 + iVar26 + 1;" (assignment_expression "iVar26 = iVar24 + iVar26 + 1" identifier = (binary_expression "iVar24 + iVar26 + 1" (binary_expression "iVar24 + iVar26" identifier + identifier) + number_literal)) ;) (expression_statement "pcVar7 = pcVar14;" (assignment_expression "pcVar7 = pcVar14" identifier = identifier) ;) }))) })) (expression_statement "pcVar25 = *(code **)(puVar3 + 0x85264);" (assignment_expression "pcVar25 = *(code **)(puVar3 + 0x85264)" identifier = (pointer_expression "*(code **)(puVar3 + 0x85264)" * (cast_expression "(code **)(puVar3 + 0x85264)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x85264)" ( (binary_expression "puVar3 + 0x85264" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(iVar13 + iVar26) = 0;" (assignment_expression "*(undefined1 *)(iVar13 + iVar26) = 0" (pointer_expression "*(undefined1 *)(iVar13 + iVar26)" * (cast_expression "(undefined1 *)(iVar13 + iVar26)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar26)" ( (binary_expression "iVar13 + iVar26" identifier + identifier) )))) = number_literal) ;) (expression_statement "iVar21 = (*pcVar25)(iVar13);" (assignment_expression "iVar21 = (*pcVar25)(iVar13)" identifier = (call_expression "(*pcVar25)(iVar13)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "safefree(iVar13);" (call_expression "safefree(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) (expression_statement "param_1[5] = iVar21;" (assignment_expression "param_1[5] = iVar21" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);" (assignment_expression "iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0)" identifier = (call_expression "(**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0)" (parenthesized_expression "(**(code **)(puVar3 + 0x854e4))" ( (pointer_expression "**(code **)(puVar3 + 0x854e4)" * (pointer_expression "*(code **)(puVar3 + 0x854e4)" * (cast_expression "(code **)(puVar3 + 0x854e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x854e4)" ( (binary_expression "puVar3 + 0x854e4" identifier + number_literal) ))))) )) (argument_list "(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0)" ( identifier , (binary_expression "*(int *)(puVar3 + 0x85214) + -0x702c" (pointer_expression "*(int *)(puVar3 + 0x85214)" * (cast_expression "(int *)(puVar3 + 0x85214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x85214)" ( (binary_expression "puVar3 + 0x85214" identifier + number_literal) )))) + number_literal) , number_literal )))) ;) (if_statement "if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00031314:\n    iVar13 = 2;\n  }" { (labeled_statement "LAB_00031314:\n    iVar13 = 2;" statement_identifier : (expression_statement "iVar13 = 2;" (assignment_expression "iVar13 = 2" identifier = number_literal) ;)) }) (else_clause "else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }" else (compound_statement "{\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }" { (expression_statement "iVar21 = conf_get_int(param_1[7],0x79);" (assignment_expression "iVar21 = conf_get_int(param_1[7],0x79)" identifier = (call_expression "conf_get_int(param_1[7],0x79)" identifier (argument_list "(param_1[7],0x79)" ( (subscript_expression "param_1[7]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "(**(code **)(puVar3 + 0x85f20))(iVar13);" (call_expression "(**(code **)(puVar3 + 0x85f20))(iVar13)" (parenthesized_expression "(**(code **)(puVar3 + 0x85f20))" ( (pointer_expression "**(code **)(puVar3 + 0x85f20)" * (pointer_expression "*(code **)(puVar3 + 0x85f20)" * (cast_expression "(code **)(puVar3 + 0x85f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x85f20)" ( (binary_expression "puVar3 + 0x85f20" identifier + number_literal) ))))) )) (argument_list "(iVar13)" ( identifier ))) ;) (if_statement "if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }" if (parenthesized_expression "(iVar21 == -1)" ( (binary_expression "iVar21 == -1" identifier == number_literal) )) (compound_statement "{\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }" { (expression_statement "piVar8 = (int *)param_1[6];" (assignment_expression "piVar8 = (int *)param_1[6]" identifier = (cast_expression "(int *)param_1[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);" (assignment_expression "iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1)" identifier = (call_expression "(**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x854f4))" ( (pointer_expression "**(code **)(puVar3 + 0x854f4)" * (pointer_expression "*(code **)(puVar3 + 0x854f4)" * (cast_expression "(code **)(puVar3 + 0x854f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x854f4)" ( (binary_expression "puVar3 + 0x854f4" identifier + number_literal) ))))) )) (argument_list "(piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1)" ( identifier , (subscript_expression "param_1[5]" identifier [ number_literal ]) , (binary_expression "*(int *)(puVar3 + 0x854a8) + 0xab0" (pointer_expression "*(int *)(puVar3 + 0x854a8)" * (cast_expression "(int *)(puVar3 + 0x854a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x854a8)" ( (binary_expression "puVar3 + 0x854a8" identifier + number_literal) )))) + number_literal) , identifier )))) ;) (if_statement "if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }" if (parenthesized_expression "(iVar13 < 0)" ( (binary_expression "iVar13 < 0" identifier < number_literal) )) (compound_statement "{\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }" { (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_000312d0;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }" else (compound_statement "{\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }" { (if_statement "if (iVar21 == 1) goto LAB_00031314;" if (parenthesized_expression "(iVar21 == 1)" ( (binary_expression "iVar21 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00031314;" goto statement_identifier ;)) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) }))) }))) (expression_statement "FUN_00030ab0(param_1,iVar13);" (call_expression "FUN_00030ab0(param_1,iVar13)" identifier (argument_list "(param_1,iVar13)" ( identifier , identifier ))) ;) (expression_statement "piVar8 = param_1;" (assignment_expression "piVar8 = param_1" identifier = identifier) ;) (labeled_statement "LAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }" statement_identifier : (if_statement "if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }" if (parenthesized_expression "(iStack_2c != *piVar5)" ( (binary_expression "iStack_2c != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }" { (expression_statement "pcVar25 = *(code **)(puVar3 + 0x85d9c);" (assignment_expression "pcVar25 = *(code **)(puVar3 + 0x85d9c)" identifier = (pointer_expression "*(code **)(puVar3 + 0x85d9c)" * (cast_expression "(code **)(puVar3 + 0x85d9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x85d9c)" ( (binary_expression "puVar3 + 0x85d9c" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }" if (parenthesized_expression "(*piVar8 != 0)" ( (binary_expression "*piVar8 != 0" (pointer_expression "*piVar8" * identifier) != number_literal) )) (compound_statement "{\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }" { (expression_statement "(**(code **)(pcVar25 + 0x84ac8))();" (call_expression "(**(code **)(pcVar25 + 0x84ac8))()" (parenthesized_expression "(**(code **)(pcVar25 + 0x84ac8))" ( (pointer_expression "**(code **)(pcVar25 + 0x84ac8)" * (pointer_expression "*(code **)(pcVar25 + 0x84ac8)" * (cast_expression "(code **)(pcVar25 + 0x84ac8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x84ac8)" ( (binary_expression "pcVar25 + 0x84ac8" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) })) (expression_statement "piVar8[1] = 0;" (assignment_expression "piVar8[1] = 0" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit "/* WARNING: Enum "anon_enum_32": Some values do not have unique names */\n\nvoid logfopen(void *handle)\n\n{\n  LogContext *ctx;\n  \n  if ((*(int *)((int)handle + 4) == 0) && (*(int *)((int)handle + 0x20) != 0)) {\n    logfopen(handle);\n    return;\n  }\n  return;\n}\n\n" comment (function_definition "void logfopen(void *handle)\n\n{\n  LogContext *ctx;\n  \n  if ((*(int *)((int)handle + 4) == 0) && (*(int *)((int)handle + 0x20) != 0)) {\n    logfopen(handle);\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "logfopen(void *handle)" identifier (parameter_list "(void *handle)" ( (parameter_declaration "void *handle" primitive_type (pointer_declarator "*handle" * identifier)) ))) (compound_statement "{\n  LogContext *ctx;\n  \n  if ((*(int *)((int)handle + 4) == 0) && (*(int *)((int)handle + 0x20) != 0)) {\n    logfopen(handle);\n    return;\n  }\n  return;\n}" { (declaration "LogContext *ctx;" type_identifier (pointer_declarator "*ctx" * identifier) ;) (if_statement "if ((*(int *)((int)handle + 4) == 0) && (*(int *)((int)handle + 0x20) != 0)) {\n    logfopen(handle);\n    return;\n  }" if (parenthesized_expression "((*(int *)((int)handle + 4) == 0) && (*(int *)((int)handle + 0x20) != 0))" ( (binary_expression "(*(int *)((int)handle + 4) == 0) && (*(int *)((int)handle + 0x20) != 0)" (parenthesized_expression "(*(int *)((int)handle + 4) == 0)" ( (binary_expression "*(int *)((int)handle + 4) == 0" (pointer_expression "*(int *)((int)handle + 4)" * (cast_expression "(int *)((int)handle + 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 4)" ( (binary_expression "(int)handle + 4" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) == number_literal) )) && (parenthesized_expression "(*(int *)((int)handle + 0x20) != 0)" ( (binary_expression "*(int *)((int)handle + 0x20) != 0" (pointer_expression "*(int *)((int)handle + 0x20)" * (cast_expression "(int *)((int)handle + 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)handle + 0x20)" ( (binary_expression "(int)handle + 0x20" (cast_expression "(int)handle" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) != number_literal) ))) )) (compound_statement "{\n    logfopen(handle);\n    return;\n  }" { (expression_statement "logfopen(handle);" (call_expression "logfopen(handle)" identifier (argument_list "(handle)" ( identifier ))) ;) (return_statement "return;" return ;) })) (return_statement "return;" return ;) })))
(translation_unit "void logfopen(int *param_1)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  char cVar10;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  char *pcVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  char *pcVar17;\n  undefined4 uVar18;\n  int iVar19;\n  char *pcVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  code *pcVar25;\n  int iVar26;\n  undefined4 auStack_a8 [8];\n  undefined4 auStack_88 [4];\n  undefined4 auStack_78 [11];\n  char acStack_4c [32];\n  int iStack_2c;\n  \n  puVar3 = PTR_LAB_000b54a8;\n  if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }\n  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);\n  iStack_2c = *piVar5;\n  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);\n  puVar4 = auStack_78;\n  puVar12 = auStack_a8;\n  do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);\n  uVar16 = puVar11[5];\n  uVar15 = puVar11[6];\n  iVar13 = param_1[5];\n  puVar6[4] = *puVar12;\n  puVar6[5] = uVar16;\n  puVar6[6] = uVar15;\n  if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }\n  iVar26 = 0;\n  uVar15 = conf_get_filename(param_1[7],0x77);\n  conf_get_str(param_1[7],0);\n  conf_get_int(param_1[7],1);\n  iVar13 = safemalloc(0x1000,1);\n  iVar21 = 0x1000;\n  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);\n  cVar10 = *pcVar7;\n  iVar23 = *(int *)(puVar3 + 0x85230);\n  while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }\n  pcVar25 = *(code **)(puVar3 + 0x85264);\n  *(undefined1 *)(iVar13 + iVar26) = 0;\n  iVar21 = (*pcVar25)(iVar13);\n  safefree(iVar13);\n  param_1[5] = iVar21;\n  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);\n  if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }\n  FUN_00030ab0(param_1,iVar13);\n  piVar8 = param_1;\nLAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }\n  return;\n}\n\n" (function_definition "void logfopen(int *param_1)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  char cVar10;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  char *pcVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  char *pcVar17;\n  undefined4 uVar18;\n  int iVar19;\n  char *pcVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  code *pcVar25;\n  int iVar26;\n  undefined4 auStack_a8 [8];\n  undefined4 auStack_88 [4];\n  undefined4 auStack_78 [11];\n  char acStack_4c [32];\n  int iStack_2c;\n  \n  puVar3 = PTR_LAB_000b54a8;\n  if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }\n  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);\n  iStack_2c = *piVar5;\n  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);\n  puVar4 = auStack_78;\n  puVar12 = auStack_a8;\n  do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);\n  uVar16 = puVar11[5];\n  uVar15 = puVar11[6];\n  iVar13 = param_1[5];\n  puVar6[4] = *puVar12;\n  puVar6[5] = uVar16;\n  puVar6[6] = uVar15;\n  if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }\n  iVar26 = 0;\n  uVar15 = conf_get_filename(param_1[7],0x77);\n  conf_get_str(param_1[7],0);\n  conf_get_int(param_1[7],1);\n  iVar13 = safemalloc(0x1000,1);\n  iVar21 = 0x1000;\n  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);\n  cVar10 = *pcVar7;\n  iVar23 = *(int *)(puVar3 + 0x85230);\n  while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }\n  pcVar25 = *(code **)(puVar3 + 0x85264);\n  *(undefined1 *)(iVar13 + iVar26) = 0;\n  iVar21 = (*pcVar25)(iVar13);\n  safefree(iVar13);\n  param_1[5] = iVar21;\n  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);\n  if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }\n  FUN_00030ab0(param_1,iVar13);\n  piVar8 = param_1;\nLAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }\n  return;\n}" primitive_type (function_declarator "logfopen(int *param_1)" identifier (parameter_list "(int *param_1)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) ))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  char cVar10;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  char *pcVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  char *pcVar17;\n  undefined4 uVar18;\n  int iVar19;\n  char *pcVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  code *pcVar25;\n  int iVar26;\n  undefined4 auStack_a8 [8];\n  undefined4 auStack_88 [4];\n  undefined4 auStack_78 [11];\n  char acStack_4c [32];\n  int iStack_2c;\n  \n  puVar3 = PTR_LAB_000b54a8;\n  if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }\n  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);\n  iStack_2c = *piVar5;\n  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);\n  puVar4 = auStack_78;\n  puVar12 = auStack_a8;\n  do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);\n  uVar16 = puVar11[5];\n  uVar15 = puVar11[6];\n  iVar13 = param_1[5];\n  puVar6[4] = *puVar12;\n  puVar6[5] = uVar16;\n  puVar6[6] = uVar15;\n  if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }\n  iVar26 = 0;\n  uVar15 = conf_get_filename(param_1[7],0x77);\n  conf_get_str(param_1[7],0);\n  conf_get_int(param_1[7],1);\n  iVar13 = safemalloc(0x1000,1);\n  iVar21 = 0x1000;\n  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);\n  cVar10 = *pcVar7;\n  iVar23 = *(int *)(puVar3 + 0x85230);\n  while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }\n  pcVar25 = *(code **)(puVar3 + 0x85264);\n  *(undefined1 *)(iVar13 + iVar26) = 0;\n  iVar21 = (*pcVar25)(iVar13);\n  safefree(iVar13);\n  param_1[5] = iVar21;\n  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);\n  if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }\n  FUN_00030ab0(param_1,iVar13);\n  piVar8 = param_1;\nLAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }\n  return;\n}" { (declaration "byte bVar1;" type_identifier identifier ;) (declaration "bool bVar2;" primitive_type identifier ;) (declaration "undefined *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 *puVar4;" type_identifier (pointer_declarator "*puVar4" * identifier) ;) (declaration "int *piVar5;" primitive_type (pointer_declarator "*piVar5" * identifier) ;) (declaration "undefined4 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "char *pcVar7;" primitive_type (pointer_declarator "*pcVar7" * identifier) ;) (declaration "char cVar10;" primitive_type identifier ;) (declaration "int *piVar8;" primitive_type (pointer_declarator "*piVar8" * identifier) ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "int iVar13;" primitive_type identifier ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "undefined4 uVar15;" type_identifier identifier ;) (declaration "undefined4 uVar16;" type_identifier identifier ;) (declaration "char *pcVar17;" primitive_type (pointer_declarator "*pcVar17" * identifier) ;) (declaration "undefined4 uVar18;" type_identifier identifier ;) (declaration "int iVar19;" primitive_type identifier ;) (declaration "char *pcVar20;" primitive_type (pointer_declarator "*pcVar20" * identifier) ;) (declaration "int iVar21;" primitive_type identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "int iVar23;" primitive_type identifier ;) (declaration "int iVar24;" primitive_type identifier ;) (declaration "code *pcVar25;" type_identifier (pointer_declarator "*pcVar25" * identifier) ;) (declaration "int iVar26;" primitive_type identifier ;) (declaration "undefined4 auStack_a8 [8];" type_identifier (array_declarator "auStack_a8 [8]" identifier [ number_literal ]) ;) (declaration "undefined4 auStack_88 [4];" type_identifier (array_declarator "auStack_88 [4]" identifier [ number_literal ]) ;) (declaration "undefined4 auStack_78 [11];" type_identifier (array_declarator "auStack_78 [11]" identifier [ number_literal ]) ;) (declaration "char acStack_4c [32];" primitive_type (array_declarator "acStack_4c [32]" identifier [ number_literal ]) ;) (declaration "int iStack_2c;" primitive_type identifier ;) (expression_statement "puVar3 = PTR_LAB_000b54a8;" (assignment_expression "puVar3 = PTR_LAB_000b54a8" identifier = identifier) ;) (if_statement "if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }" if (parenthesized_expression "((param_1[1] != 0) || (param_1[8] == 0))" ( (binary_expression "(param_1[1] != 0) || (param_1[8] == 0)" (parenthesized_expression "(param_1[1] != 0)" ( (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(param_1[8] == 0)" ( (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n    return;\n  }" { (return_statement "return;" return ;) })) (expression_statement "piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);" (assignment_expression "piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8)" identifier = (pointer_expression "*(int **)(PTR_LAB_000b54a8 + 0x860f8)" * (cast_expression "(int **)(PTR_LAB_000b54a8 + 0x860f8)" ( (type_descriptor "int **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_LAB_000b54a8 + 0x860f8)" ( (binary_expression "PTR_LAB_000b54a8 + 0x860f8" identifier + number_literal) ))))) ;) (expression_statement "iStack_2c = *piVar5;" (assignment_expression "iStack_2c = *piVar5" identifier = (pointer_expression "*piVar5" * identifier)) ;) (expression_statement "(**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);" (call_expression "(**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8)" (parenthesized_expression "(**(code **)(PTR_LAB_000b54a8 + 0x854e8))" ( (pointer_expression "**(code **)(PTR_LAB_000b54a8 + 0x854e8)" * (pointer_expression "*(code **)(PTR_LAB_000b54a8 + 0x854e8)" * (cast_expression "(code **)(PTR_LAB_000b54a8 + 0x854e8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(PTR_LAB_000b54a8 + 0x854e8)" ( (binary_expression "PTR_LAB_000b54a8 + 0x854e8" identifier + number_literal) ))))) )) (argument_list "(auStack_a8)" ( identifier ))) ;) (expression_statement "puVar4 = auStack_78;" (assignment_expression "puVar4 = auStack_78" identifier = identifier) ;) (expression_statement "puVar12 = auStack_a8;" (assignment_expression "puVar12 = auStack_a8" identifier = identifier) ;) (do_statement "do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);" do (compound_statement "{\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  }" { (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" identifier = identifier) ;) (expression_statement "puVar6 = puVar4;" (assignment_expression "puVar6 = puVar4" identifier = identifier) ;) (expression_statement "puVar12 = puVar11 + 4;" (assignment_expression "puVar12 = puVar11 + 4" identifier = (binary_expression "puVar11 + 4" identifier + number_literal)) ;) (expression_statement "uVar18 = puVar11[1];" (assignment_expression "uVar18 = puVar11[1]" identifier = (subscript_expression "puVar11[1]" identifier [ number_literal ])) ;) (expression_statement "uVar16 = puVar11[2];" (assignment_expression "uVar16 = puVar11[2]" identifier = (subscript_expression "puVar11[2]" identifier [ number_literal ])) ;) (expression_statement "uVar15 = puVar11[3];" (assignment_expression "uVar15 = puVar11[3]" identifier = (subscript_expression "puVar11[3]" identifier [ number_literal ])) ;) (expression_statement "*puVar6 = *puVar11;" (assignment_expression "*puVar6 = *puVar11" (pointer_expression "*puVar6" * identifier) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar6[1] = uVar18;" (assignment_expression "puVar6[1] = uVar18" (subscript_expression "puVar6[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[2] = uVar16;" (assignment_expression "puVar6[2] = uVar16" (subscript_expression "puVar6[2]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[3] = uVar15;" (assignment_expression "puVar6[3] = uVar15" (subscript_expression "puVar6[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar4 = puVar6 + 4;" (assignment_expression "puVar4 = puVar6 + 4" identifier = (binary_expression "puVar6 + 4" identifier + number_literal)) ;) }) while (parenthesized_expression "(puVar12 != auStack_88)" ( (binary_expression "puVar12 != auStack_88" identifier != identifier) )) ;) (expression_statement "uVar16 = puVar11[5];" (assignment_expression "uVar16 = puVar11[5]" identifier = (subscript_expression "puVar11[5]" identifier [ number_literal ])) ;) (expression_statement "uVar15 = puVar11[6];" (assignment_expression "uVar15 = puVar11[6]" identifier = (subscript_expression "puVar11[6]" identifier [ number_literal ])) ;) (expression_statement "iVar13 = param_1[5];" (assignment_expression "iVar13 = param_1[5]" identifier = (subscript_expression "param_1[5]" identifier [ number_literal ])) ;) (expression_statement "puVar6[4] = *puVar12;" (assignment_expression "puVar6[4] = *puVar12" (subscript_expression "puVar6[4]" identifier [ number_literal ]) = (pointer_expression "*puVar12" * identifier)) ;) (expression_statement "puVar6[5] = uVar16;" (assignment_expression "puVar6[5] = uVar16" (subscript_expression "puVar6[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar6[6] = uVar15;" (assignment_expression "puVar6[6] = uVar15" (subscript_expression "puVar6[6]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }" if (parenthesized_expression "(iVar13 != 0)" ( (binary_expression "iVar13 != 0" identifier != number_literal) )) (compound_statement "{\n    (**(code **)(puVar3 + 0x8526c))();\n  }" { (expression_statement "(**(code **)(puVar3 + 0x8526c))();" (call_expression "(**(code **)(puVar3 + 0x8526c))()" (parenthesized_expression "(**(code **)(puVar3 + 0x8526c))" ( (pointer_expression "**(code **)(puVar3 + 0x8526c)" * (pointer_expression "*(code **)(puVar3 + 0x8526c)" * (cast_expression "(code **)(puVar3 + 0x8526c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x8526c)" ( (binary_expression "puVar3 + 0x8526c" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) })) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" identifier = number_literal) ;) (expression_statement "uVar15 = conf_get_filename(param_1[7],0x77);" (assignment_expression "uVar15 = conf_get_filename(param_1[7],0x77)" identifier = (call_expression "conf_get_filename(param_1[7],0x77)" identifier (argument_list "(param_1[7],0x77)" ( (subscript_expression "param_1[7]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "conf_get_str(param_1[7],0);" (call_expression "conf_get_str(param_1[7],0)" identifier (argument_list "(param_1[7],0)" ( (subscript_expression "param_1[7]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "conf_get_int(param_1[7],1);" (call_expression "conf_get_int(param_1[7],1)" identifier (argument_list "(param_1[7],1)" ( (subscript_expression "param_1[7]" identifier [ number_literal ]) , number_literal ))) ;) (expression_statement "iVar13 = safemalloc(0x1000,1);" (assignment_expression "iVar13 = safemalloc(0x1000,1)" identifier = (call_expression "safemalloc(0x1000,1)" identifier (argument_list "(0x1000,1)" ( number_literal , number_literal )))) ;) (expression_statement "iVar21 = 0x1000;" (assignment_expression "iVar21 = 0x1000" identifier = number_literal) ;) (expression_statement "pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);" (assignment_expression "pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15)" identifier = (cast_expression "(char *)(**(code **)(puVar3 + 0x854e0))(uVar15)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar3 + 0x854e0))(uVar15)" (parenthesized_expression "(**(code **)(puVar3 + 0x854e0))" ( (pointer_expression "**(code **)(puVar3 + 0x854e0)" * (pointer_expression "*(code **)(puVar3 + 0x854e0)" * (cast_expression "(code **)(puVar3 + 0x854e0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x854e0)" ( (binary_expression "puVar3 + 0x854e0" identifier + number_literal) ))))) )) (argument_list "(uVar15)" ( identifier ))))) ;) (expression_statement "cVar10 = *pcVar7;" (assignment_expression "cVar10 = *pcVar7" identifier = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "iVar23 = *(int *)(puVar3 + 0x85230);" (assignment_expression "iVar23 = *(int *)(puVar3 + 0x85230)" identifier = (pointer_expression "*(int *)(puVar3 + 0x85230)" * (cast_expression "(int *)(puVar3 + 0x85230)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x85230)" ( (binary_expression "puVar3 + 0x85230" identifier + number_literal) ))))) ;) (while_statement "while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }" while (parenthesized_expression "(cVar10 != '\0')" ( (binary_expression "cVar10 != '\0'" identifier != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }" { (expression_statement "pcVar14 = pcVar7 + 1;" (assignment_expression "pcVar14 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (if_statement "if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }" if (parenthesized_expression "(cVar10 == '&')" ( (binary_expression "cVar10 == '&'" identifier == (char_literal "'&'" ' character ')) )) (compound_statement "{\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }" { (expression_statement "bVar1 = pcVar7[1];" (assignment_expression "bVar1 = pcVar7[1]" identifier = (subscript_expression "pcVar7[1]" identifier [ number_literal ])) ;) (if_statement "if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }" if (parenthesized_expression "(bVar1 != 0)" ( (binary_expression "bVar1 != 0" identifier != number_literal) )) (compound_statement "{\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }" { (expression_statement "pcVar14 = pcVar7 + 2;" (assignment_expression "pcVar14 = pcVar7 + 2" identifier = (binary_expression "pcVar7 + 2" identifier + number_literal)) ;) (expression_statement "piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();" (assignment_expression "piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))()" identifier = (cast_expression "(int *)(**(code **)(puVar3 + 0x861d4))()" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "(**(code **)(puVar3 + 0x861d4))()" (parenthesized_expression "(**(code **)(puVar3 + 0x861d4))" ( (pointer_expression "**(code **)(puVar3 + 0x861d4)" * (pointer_expression "*(code **)(puVar3 + 0x861d4)" * (cast_expression "(code **)(puVar3 + 0x861d4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x861d4)" ( (binary_expression "puVar3 + 0x861d4" identifier + number_literal) ))))) )) (argument_list "()" ( ))))) ;) (expression_statement "uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;" (assignment_expression "uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100" identifier = (binary_expression "*(int *)(*piVar8 + (uint)bVar1 * 4) - 100" (pointer_expression "*(int *)(*piVar8 + (uint)bVar1 * 4)" * (cast_expression "(int *)(*piVar8 + (uint)bVar1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*piVar8 + (uint)bVar1 * 4)" ( (binary_expression "*piVar8 + (uint)bVar1 * 4" (pointer_expression "*piVar8" * identifier) + (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) )))) - number_literal)) ;) (if_statement "if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }" if (parenthesized_expression "(uVar9 < 0x16)" ( (binary_expression "uVar9 < 0x16" identifier < number_literal) )) (compound_statement "{\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }" { (expression_statement "(*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();" (call_expression "(*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))()" (parenthesized_expression "(*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))" ( (pointer_expression "*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)))" * (cast_expression "(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)))" ( (binary_expression "puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))" identifier + (cast_expression "(int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))" ( (binary_expression "&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)" (pointer_expression "&UNK_0008d1d0" & identifier) + (pointer_expression "*(int *)(iVar23 + 0x4c70 + uVar9 * 4)" * (cast_expression "(int *)(iVar23 + 0x4c70 + uVar9 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar23 + 0x4c70 + uVar9 * 4)" ( (binary_expression "iVar23 + 0x4c70 + uVar9 * 4" (binary_expression "iVar23 + 0x4c70" identifier + number_literal) + (binary_expression "uVar9 * 4" identifier * number_literal)) ))))) )))) )))) )) (argument_list "()" ( ))) ;) (return_statement "return;" return ;) })) (expression_statement "acStack_4c[0] = '&';" (assignment_expression "acStack_4c[0] = '&'" (subscript_expression "acStack_4c[0]" identifier [ number_literal ]) = (char_literal "'&'" ' character ')) ;) (if_statement "if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }" if (parenthesized_expression "(bVar1 == 0x26)" ( (binary_expression "bVar1 == 0x26" identifier == number_literal) )) (compound_statement "{\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }" else (compound_statement "{\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }" { (expression_statement "acStack_4c[1] = bVar1;" (assignment_expression "acStack_4c[1] = bVar1" (subscript_expression "acStack_4c[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "iVar19 = 2;" (assignment_expression "iVar19 = 2" identifier = number_literal) ;) }))) (goto_statement "goto LAB_000310c8;" goto statement_identifier ;) })) (if_statement "if (iVar26 < iVar21) break;" if (parenthesized_expression "(iVar26 < iVar21)" ( (binary_expression "iVar26 < iVar21" identifier < identifier) )) (break_statement "break;" break ;)) (expression_statement "iVar24 = -1;" (assignment_expression "iVar24 = -1" identifier = number_literal) ;) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" identifier = true) ;) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" identifier = number_literal) ;) (expression_statement "iVar22 = iVar26;" (assignment_expression "iVar22 = iVar26" identifier = identifier) ;) (labeled_statement "LAB_00031188:\n      iVar22 = iVar22 * 5;" statement_identifier : (expression_statement "iVar22 = iVar22 * 5;" (assignment_expression "iVar22 = iVar22 * 5" identifier = (binary_expression "iVar22 * 5" identifier * number_literal)) ;)) (if_statement "if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }" if (parenthesized_expression "(iVar22 < 0)" ( (binary_expression "iVar22 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar22 = iVar22 + 3;\n      }" { (expression_statement "iVar22 = iVar22 + 3;" (assignment_expression "iVar22 = iVar22 + 3" identifier = (binary_expression "iVar22 + 3" identifier + number_literal)) ;) })) (expression_statement "iVar21 = (iVar22 >> 2) + 0x200;" (assignment_expression "iVar21 = (iVar22 >> 2) + 0x200" identifier = (binary_expression "(iVar22 >> 2) + 0x200" (parenthesized_expression "(iVar22 >> 2)" ( (binary_expression "iVar22 >> 2" identifier >> number_literal) )) + number_literal)) ;) (expression_statement "iVar13 = saferealloc(iVar13,iVar21,1);" (assignment_expression "iVar13 = saferealloc(iVar13,iVar21,1)" identifier = (call_expression "saferealloc(iVar13,iVar21,1)" identifier (argument_list "(iVar13,iVar21,1)" ( identifier , identifier , number_literal )))) ;) (if_statement "if (iVar19 != 0) goto LAB_000310dc;" if (parenthesized_expression "(iVar19 != 0)" ( (binary_expression "iVar19 != 0" identifier != number_literal) )) (goto_statement "goto LAB_000310dc;" goto statement_identifier ;)) (expression_statement "cVar10 = *pcVar14;" (assignment_expression "cVar10 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;) (expression_statement "pcVar7 = pcVar14;" (assignment_expression "pcVar7 = pcVar14" identifier = identifier) ;) }) (else_clause "else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }" else (compound_statement "{\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) (expression_statement "acStack_4c[0] = cVar10;" (assignment_expression "acStack_4c[0] = cVar10" (subscript_expression "acStack_4c[0]" identifier [ number_literal ]) = identifier) ;) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" identifier = false) ;) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" identifier = number_literal) ;) (labeled_statement "LAB_000310c8:\n      iVar22 = iVar26 + iVar19;" statement_identifier : (expression_statement "iVar22 = iVar26 + iVar19;" (assignment_expression "iVar22 = iVar26 + iVar19" identifier = (binary_expression "iVar26 + iVar19" identifier + identifier)) ;)) (if_statement "if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;" if (parenthesized_expression "(iVar21 <= iVar26 + iVar19)" ( (binary_expression "iVar21 <= iVar26 + iVar19" identifier <= (binary_expression "iVar26 + iVar19" identifier + identifier)) )) (goto_statement "goto LAB_00031188;" goto statement_identifier ;)) (labeled_statement "LAB_000310dc:\n      pcVar7 = acStack_4c;" statement_identifier : (expression_statement "pcVar7 = acStack_4c;" (assignment_expression "pcVar7 = acStack_4c" identifier = identifier) ;)) (expression_statement "pcVar20 = (char *)(iVar13 + iVar26);" (assignment_expression "pcVar20 = (char *)(iVar13 + iVar26)" identifier = (cast_expression "(char *)(iVar13 + iVar26)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar26)" ( (binary_expression "iVar13 + iVar26" identifier + identifier) )))) ;) (do_statement "do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));" do (compound_statement "{\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      }" { (while_statement "while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }" { (expression_statement "pcVar17 = pcVar7 + 1;" (assignment_expression "pcVar17 = pcVar7 + 1" identifier = (binary_expression "pcVar7 + 1" identifier + number_literal)) ;) (if_statement "if (!bVar2) break;" if (parenthesized_expression "(!bVar2)" ( (unary_expression "!bVar2" ! identifier) )) (break_statement "break;" break ;)) (expression_statement "cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);" (assignment_expression "cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7)" identifier = (call_expression "(**(code **)(puVar3 + 0x854f0))((int)*pcVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x854f0))" ( (pointer_expression "**(code **)(puVar3 + 0x854f0)" * (pointer_expression "*(code **)(puVar3 + 0x854f0)" * (cast_expression "(code **)(puVar3 + 0x854f0)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x854f0)" ( (binary_expression "puVar3 + 0x854f0" identifier + number_literal) ))))) )) (argument_list "((int)*pcVar7)" ( (cast_expression "(int)*pcVar7" ( (type_descriptor "int" primitive_type) ) (pointer_expression "*pcVar7" * identifier)) )))) ;) (expression_statement "*pcVar20 = cVar10;" (assignment_expression "*pcVar20 = cVar10" (pointer_expression "*pcVar20" * identifier) = identifier) ;) (expression_statement "pcVar7 = pcVar17;" (assignment_expression "pcVar7 = pcVar17" identifier = identifier) ;) (expression_statement "pcVar20 = pcVar20 + 1;" (assignment_expression "pcVar20 = pcVar20 + 1" identifier = (binary_expression "pcVar20 + 1" identifier + number_literal)) ;) (if_statement "if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;" if (parenthesized_expression "((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1)" ( (binary_expression "(int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1" (cast_expression "(int)(acStack_4c + iVar24 + (1 - (int)pcVar17))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(acStack_4c + iVar24 + (1 - (int)pcVar17))" ( (binary_expression "acStack_4c + iVar24 + (1 - (int)pcVar17)" (binary_expression "acStack_4c + iVar24" identifier + identifier) + (parenthesized_expression "(1 - (int)pcVar17)" ( (binary_expression "1 - (int)pcVar17" number_literal - (cast_expression "(int)pcVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ))) ))) < number_literal) )) (goto_statement "goto LAB_00031148;" goto statement_identifier ;)) })) (expression_statement "*pcVar20 = *pcVar7;" (assignment_expression "*pcVar20 = *pcVar7" (pointer_expression "*pcVar20" * identifier) = (pointer_expression "*pcVar7" * identifier)) ;) (expression_statement "pcVar20 = pcVar20 + 1;" (assignment_expression "pcVar20 = pcVar20 + 1" identifier = (binary_expression "pcVar20 + 1" identifier + number_literal)) ;) (expression_statement "pcVar7 = pcVar17;" (assignment_expression "pcVar7 = pcVar17" identifier = identifier) ;) }) while (parenthesized_expression "(0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)))" ( (binary_expression "0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17))" number_literal < (cast_expression "(int)(acStack_4c + iVar24 + (1 - (int)pcVar17))" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "(acStack_4c + iVar24 + (1 - (int)pcVar17))" ( (binary_expression "acStack_4c + iVar24 + (1 - (int)pcVar17)" (binary_expression "acStack_4c + iVar24" identifier + identifier) + (parenthesized_expression "(1 - (int)pcVar17)" ( (binary_expression "1 - (int)pcVar17" number_literal - (cast_expression "(int)pcVar17" ( (type_descriptor "int" primitive_type) ) identifier)) ))) )))) )) ;) (labeled_statement "LAB_00031148:\n      cVar10 = *pcVar14;" statement_identifier : (expression_statement "cVar10 = *pcVar14;" (assignment_expression "cVar10 = *pcVar14" identifier = (pointer_expression "*pcVar14" * identifier)) ;)) (if_statement "if (iVar24 < 0) {\n        iVar24 = 0;\n      }" if (parenthesized_expression "(iVar24 < 0)" ( (binary_expression "iVar24 < 0" identifier < number_literal) )) (compound_statement "{\n        iVar24 = 0;\n      }" { (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" identifier = number_literal) ;) })) (expression_statement "iVar26 = iVar24 + iVar26 + 1;" (assignment_expression "iVar26 = iVar24 + iVar26 + 1" identifier = (binary_expression "iVar24 + iVar26 + 1" (binary_expression "iVar24 + iVar26" identifier + identifier) + number_literal)) ;) (expression_statement "pcVar7 = pcVar14;" (assignment_expression "pcVar7 = pcVar14" identifier = identifier) ;) }))) })) (expression_statement "pcVar25 = *(code **)(puVar3 + 0x85264);" (assignment_expression "pcVar25 = *(code **)(puVar3 + 0x85264)" identifier = (pointer_expression "*(code **)(puVar3 + 0x85264)" * (cast_expression "(code **)(puVar3 + 0x85264)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x85264)" ( (binary_expression "puVar3 + 0x85264" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(iVar13 + iVar26) = 0;" (assignment_expression "*(undefined1 *)(iVar13 + iVar26) = 0" (pointer_expression "*(undefined1 *)(iVar13 + iVar26)" * (cast_expression "(undefined1 *)(iVar13 + iVar26)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar13 + iVar26)" ( (binary_expression "iVar13 + iVar26" identifier + identifier) )))) = number_literal) ;) (expression_statement "iVar21 = (*pcVar25)(iVar13);" (assignment_expression "iVar21 = (*pcVar25)(iVar13)" identifier = (call_expression "(*pcVar25)(iVar13)" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "(iVar13)" ( identifier )))) ;) (expression_statement "safefree(iVar13);" (call_expression "safefree(iVar13)" identifier (argument_list "(iVar13)" ( identifier ))) ;) (expression_statement "param_1[5] = iVar21;" (assignment_expression "param_1[5] = iVar21" (subscript_expression "param_1[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);" (assignment_expression "iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0)" identifier = (call_expression "(**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0)" (parenthesized_expression "(**(code **)(puVar3 + 0x854e4))" ( (pointer_expression "**(code **)(puVar3 + 0x854e4)" * (pointer_expression "*(code **)(puVar3 + 0x854e4)" * (cast_expression "(code **)(puVar3 + 0x854e4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x854e4)" ( (binary_expression "puVar3 + 0x854e4" identifier + number_literal) ))))) )) (argument_list "(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0)" ( identifier , (binary_expression "*(int *)(puVar3 + 0x85214) + -0x702c" (pointer_expression "*(int *)(puVar3 + 0x85214)" * (cast_expression "(int *)(puVar3 + 0x85214)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x85214)" ( (binary_expression "puVar3 + 0x85214" identifier + number_literal) )))) + number_literal) , number_literal )))) ;) (if_statement "if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }" if (parenthesized_expression "(iVar13 == 0)" ( (binary_expression "iVar13 == 0" identifier == number_literal) )) (compound_statement "{\nLAB_00031314:\n    iVar13 = 2;\n  }" { (labeled_statement "LAB_00031314:\n    iVar13 = 2;" statement_identifier : (expression_statement "iVar13 = 2;" (assignment_expression "iVar13 = 2" identifier = number_literal) ;)) }) (else_clause "else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }" else (compound_statement "{\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }" { (expression_statement "iVar21 = conf_get_int(param_1[7],0x79);" (assignment_expression "iVar21 = conf_get_int(param_1[7],0x79)" identifier = (call_expression "conf_get_int(param_1[7],0x79)" identifier (argument_list "(param_1[7],0x79)" ( (subscript_expression "param_1[7]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "(**(code **)(puVar3 + 0x85f20))(iVar13);" (call_expression "(**(code **)(puVar3 + 0x85f20))(iVar13)" (parenthesized_expression "(**(code **)(puVar3 + 0x85f20))" ( (pointer_expression "**(code **)(puVar3 + 0x85f20)" * (pointer_expression "*(code **)(puVar3 + 0x85f20)" * (cast_expression "(code **)(puVar3 + 0x85f20)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x85f20)" ( (binary_expression "puVar3 + 0x85f20" identifier + number_literal) ))))) )) (argument_list "(iVar13)" ( identifier ))) ;) (if_statement "if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }" if (parenthesized_expression "(iVar21 == -1)" ( (binary_expression "iVar21 == -1" identifier == number_literal) )) (compound_statement "{\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }" { (expression_statement "piVar8 = (int *)param_1[6];" (assignment_expression "piVar8 = (int *)param_1[6]" identifier = (cast_expression "(int *)param_1[6]" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);" (assignment_expression "iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1)" identifier = (call_expression "(**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x854f4))" ( (pointer_expression "**(code **)(puVar3 + 0x854f4)" * (pointer_expression "*(code **)(puVar3 + 0x854f4)" * (cast_expression "(code **)(puVar3 + 0x854f4)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x854f4)" ( (binary_expression "puVar3 + 0x854f4" identifier + number_literal) ))))) )) (argument_list "(piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1)" ( identifier , (subscript_expression "param_1[5]" identifier [ number_literal ]) , (binary_expression "*(int *)(puVar3 + 0x854a8) + 0xab0" (pointer_expression "*(int *)(puVar3 + 0x854a8)" * (cast_expression "(int *)(puVar3 + 0x854a8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3 + 0x854a8)" ( (binary_expression "puVar3 + 0x854a8" identifier + number_literal) )))) + number_literal) , identifier )))) ;) (if_statement "if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }" if (parenthesized_expression "(iVar13 < 0)" ( (binary_expression "iVar13 < 0" identifier < number_literal) )) (compound_statement "{\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }" { (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" identifier [ number_literal ]) = number_literal) ;) (goto_statement "goto LAB_000312d0;" goto statement_identifier ;) })) }) (else_clause "else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }" else (compound_statement "{\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }" { (if_statement "if (iVar21 == 1) goto LAB_00031314;" if (parenthesized_expression "(iVar21 == 1)" ( (binary_expression "iVar21 == 1" identifier == number_literal) )) (goto_statement "goto LAB_00031314;" goto statement_identifier ;)) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" identifier = number_literal) ;) }))) }))) (expression_statement "FUN_00030ab0(param_1,iVar13);" (call_expression "FUN_00030ab0(param_1,iVar13)" identifier (argument_list "(param_1,iVar13)" ( identifier , identifier ))) ;) (expression_statement "piVar8 = param_1;" (assignment_expression "piVar8 = param_1" identifier = identifier) ;) (labeled_statement "LAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }" statement_identifier : (if_statement "if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }" if (parenthesized_expression "(iStack_2c != *piVar5)" ( (binary_expression "iStack_2c != *piVar5" identifier != (pointer_expression "*piVar5" * identifier)) )) (compound_statement "{\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }" { (expression_statement "pcVar25 = *(code **)(puVar3 + 0x85d9c);" (assignment_expression "pcVar25 = *(code **)(puVar3 + 0x85d9c)" identifier = (pointer_expression "*(code **)(puVar3 + 0x85d9c)" * (cast_expression "(code **)(puVar3 + 0x85d9c)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(puVar3 + 0x85d9c)" ( (binary_expression "puVar3 + 0x85d9c" identifier + number_literal) ))))) ;) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" ( (pointer_expression "*pcVar25" * identifier) )) (argument_list "()" ( ))) ;) (if_statement "if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }" if (parenthesized_expression "(*piVar8 != 0)" ( (binary_expression "*piVar8 != 0" (pointer_expression "*piVar8" * identifier) != number_literal) )) (compound_statement "{\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }" { (expression_statement "(**(code **)(pcVar25 + 0x84ac8))();" (call_expression "(**(code **)(pcVar25 + 0x84ac8))()" (parenthesized_expression "(**(code **)(pcVar25 + 0x84ac8))" ( (pointer_expression "**(code **)(pcVar25 + 0x84ac8)" * (pointer_expression "*(code **)(pcVar25 + 0x84ac8)" * (cast_expression "(code **)(pcVar25 + 0x84ac8)" ( (type_descriptor "code **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(pcVar25 + 0x84ac8)" ( (binary_expression "pcVar25 + 0x84ac8" identifier + number_literal) ))))) )) (argument_list "()" ( ))) ;) (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" * identifier) = number_literal) ;) })) (expression_statement "piVar8[1] = 0;" (assignment_expression "piVar8[1] = 0" (subscript_expression "piVar8[1]" identifier [ number_literal ]) = number_literal) ;) (return_statement "return;" return ;) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * 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 (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE (array_declarator IDENT [ LIT ]) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , LIT )))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) )))) - LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (pointer_expression & IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (binary_expression IDENT * LIT)) ))))) )))) )))) )) (argument_list ( ))) ;) (return_statement return ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (char_literal ' character ')) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT >> LIT) )) + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= (binary_expression IDENT + IDENT)) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( (cast_expression ( (type_descriptor TYPE) ) (pointer_expression * IDENT)) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) ))) < LIT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) )))) )) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + IDENT) + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }))) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( IDENT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , LIT )))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) (compound_statement { (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (argument_list ( ))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (return_statement return ;) }))) (return_statement return ;) })))
(function_definition "void logfopen(int *param_1)\n\n{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  char cVar10;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  char *pcVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  char *pcVar17;\n  undefined4 uVar18;\n  int iVar19;\n  char *pcVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  code *pcVar25;\n  int iVar26;\n  undefined4 auStack_a8 [8];\n  undefined4 auStack_88 [4];\n  undefined4 auStack_78 [11];\n  char acStack_4c [32];\n  int iStack_2c;\n  \n  puVar3 = PTR_LAB_000b54a8;\n  if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }\n  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);\n  iStack_2c = *piVar5;\n  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);\n  puVar4 = auStack_78;\n  puVar12 = auStack_a8;\n  do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);\n  uVar16 = puVar11[5];\n  uVar15 = puVar11[6];\n  iVar13 = param_1[5];\n  puVar6[4] = *puVar12;\n  puVar6[5] = uVar16;\n  puVar6[6] = uVar15;\n  if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }\n  iVar26 = 0;\n  uVar15 = conf_get_filename(param_1[7],0x77);\n  conf_get_str(param_1[7],0);\n  conf_get_int(param_1[7],1);\n  iVar13 = safemalloc(0x1000,1);\n  iVar21 = 0x1000;\n  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);\n  cVar10 = *pcVar7;\n  iVar23 = *(int *)(puVar3 + 0x85230);\n  while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }\n  pcVar25 = *(code **)(puVar3 + 0x85264);\n  *(undefined1 *)(iVar13 + iVar26) = 0;\n  iVar21 = (*pcVar25)(iVar13);\n  safefree(iVar13);\n  param_1[5] = iVar21;\n  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);\n  if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }\n  FUN_00030ab0(param_1,iVar13);\n  piVar8 = param_1;\nLAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }\n  return;\n}" (primitive_type "void") (function_declarator "logfopen(int *param_1)" (identifier "logfopen") (parameter_list "(int *param_1)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) () ")"))) (compound_statement "{\n  byte bVar1;\n  bool bVar2;\n  undefined *puVar3;\n  undefined4 *puVar4;\n  int *piVar5;\n  undefined4 *puVar6;\n  char *pcVar7;\n  char cVar10;\n  int *piVar8;\n  uint uVar9;\n  undefined4 *puVar11;\n  undefined4 *puVar12;\n  int iVar13;\n  char *pcVar14;\n  undefined4 uVar15;\n  undefined4 uVar16;\n  char *pcVar17;\n  undefined4 uVar18;\n  int iVar19;\n  char *pcVar20;\n  int iVar21;\n  int iVar22;\n  int iVar23;\n  int iVar24;\n  code *pcVar25;\n  int iVar26;\n  undefined4 auStack_a8 [8];\n  undefined4 auStack_88 [4];\n  undefined4 auStack_78 [11];\n  char acStack_4c [32];\n  int iStack_2c;\n  \n  puVar3 = PTR_LAB_000b54a8;\n  if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }\n  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);\n  iStack_2c = *piVar5;\n  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);\n  puVar4 = auStack_78;\n  puVar12 = auStack_a8;\n  do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);\n  uVar16 = puVar11[5];\n  uVar15 = puVar11[6];\n  iVar13 = param_1[5];\n  puVar6[4] = *puVar12;\n  puVar6[5] = uVar16;\n  puVar6[6] = uVar15;\n  if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }\n  iVar26 = 0;\n  uVar15 = conf_get_filename(param_1[7],0x77);\n  conf_get_str(param_1[7],0);\n  conf_get_int(param_1[7],1);\n  iVar13 = safemalloc(0x1000,1);\n  iVar21 = 0x1000;\n  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);\n  cVar10 = *pcVar7;\n  iVar23 = *(int *)(puVar3 + 0x85230);\n  while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }\n  pcVar25 = *(code **)(puVar3 + 0x85264);\n  *(undefined1 *)(iVar13 + iVar26) = 0;\n  iVar21 = (*pcVar25)(iVar13);\n  safefree(iVar13);\n  param_1[5] = iVar21;\n  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);\n  if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }\n  FUN_00030ab0(param_1,iVar13);\n  piVar8 = param_1;\nLAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }\n  return;\n}" ({ "{") (declaration "byte bVar1;" (type_identifier "byte") (identifier "bVar1") (; ";")) (declaration "bool bVar2;" (primitive_type "bool") (identifier "bVar2") (; ";")) (declaration "undefined *puVar3;" (type_identifier "undefined") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 *puVar4;" (type_identifier "undefined4") (pointer_declarator "*puVar4" (* "*") (identifier "puVar4")) (; ";")) (declaration "int *piVar5;" (primitive_type "int") (pointer_declarator "*piVar5" (* "*") (identifier "piVar5")) (; ";")) (declaration "undefined4 *puVar6;" (type_identifier "undefined4") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "char *pcVar7;" (primitive_type "char") (pointer_declarator "*pcVar7" (* "*") (identifier "pcVar7")) (; ";")) (declaration "char cVar10;" (primitive_type "char") (identifier "cVar10") (; ";")) (declaration "int *piVar8;" (primitive_type "int") (pointer_declarator "*piVar8" (* "*") (identifier "piVar8")) (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "int iVar13;" (primitive_type "int") (identifier "iVar13") (; ";")) (declaration "char *pcVar14;" (primitive_type "char") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "undefined4 uVar15;" (type_identifier "undefined4") (identifier "uVar15") (; ";")) (declaration "undefined4 uVar16;" (type_identifier "undefined4") (identifier "uVar16") (; ";")) (declaration "char *pcVar17;" (primitive_type "char") (pointer_declarator "*pcVar17" (* "*") (identifier "pcVar17")) (; ";")) (declaration "undefined4 uVar18;" (type_identifier "undefined4") (identifier "uVar18") (; ";")) (declaration "int iVar19;" (primitive_type "int") (identifier "iVar19") (; ";")) (declaration "char *pcVar20;" (primitive_type "char") (pointer_declarator "*pcVar20" (* "*") (identifier "pcVar20")) (; ";")) (declaration "int iVar21;" (primitive_type "int") (identifier "iVar21") (; ";")) (declaration "int iVar22;" (primitive_type "int") (identifier "iVar22") (; ";")) (declaration "int iVar23;" (primitive_type "int") (identifier "iVar23") (; ";")) (declaration "int iVar24;" (primitive_type "int") (identifier "iVar24") (; ";")) (declaration "code *pcVar25;" (type_identifier "code") (pointer_declarator "*pcVar25" (* "*") (identifier "pcVar25")) (; ";")) (declaration "int iVar26;" (primitive_type "int") (identifier "iVar26") (; ";")) (declaration "undefined4 auStack_a8 [8];" (type_identifier "undefined4") (array_declarator "auStack_a8 [8]" (identifier "auStack_a8") ([ "[") (number_literal "8") (] "]")) (; ";")) (declaration "undefined4 auStack_88 [4];" (type_identifier "undefined4") (array_declarator "auStack_88 [4]" (identifier "auStack_88") ([ "[") (number_literal "4") (] "]")) (; ";")) (declaration "undefined4 auStack_78 [11];" (type_identifier "undefined4") (array_declarator "auStack_78 [11]" (identifier "auStack_78") ([ "[") (number_literal "11") (] "]")) (; ";")) (declaration "char acStack_4c [32];" (primitive_type "char") (array_declarator "acStack_4c [32]" (identifier "acStack_4c") ([ "[") (number_literal "32") (] "]")) (; ";")) (declaration "int iStack_2c;" (primitive_type "int") (identifier "iStack_2c") (; ";")) (expression_statement "puVar3 = PTR_LAB_000b54a8;" (assignment_expression "puVar3 = PTR_LAB_000b54a8" (identifier "puVar3") (= "=") (identifier "PTR_LAB_000b54a8")) (; ";")) (if_statement "if ((param_1[1] != 0) || (param_1[8] == 0)) {\n    return;\n  }" (if "if") (parenthesized_expression "((param_1[1] != 0) || (param_1[8] == 0))" (( "(") (binary_expression "(param_1[1] != 0) || (param_1[8] == 0)" (parenthesized_expression "(param_1[1] != 0)" (( "(") (binary_expression "param_1[1] != 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_1[8] == 0)" (( "(") (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    return;\n  }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);" (assignment_expression "piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8)" (identifier "piVar5") (= "=") (pointer_expression "*(int **)(PTR_LAB_000b54a8 + 0x860f8)" (* "*") (cast_expression "(int **)(PTR_LAB_000b54a8 + 0x860f8)" (( "(") (type_descriptor "int **" (primitive_type "int") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_LAB_000b54a8 + 0x860f8)" (( "(") (binary_expression "PTR_LAB_000b54a8 + 0x860f8" (identifier "PTR_LAB_000b54a8") (+ "+") (number_literal "0x860f8")) () ")"))))) (; ";")) (expression_statement "iStack_2c = *piVar5;" (assignment_expression "iStack_2c = *piVar5" (identifier "iStack_2c") (= "=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) (; ";")) (expression_statement "(**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);" (call_expression "(**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8)" (parenthesized_expression "(**(code **)(PTR_LAB_000b54a8 + 0x854e8))" (( "(") (pointer_expression "**(code **)(PTR_LAB_000b54a8 + 0x854e8)" (* "*") (pointer_expression "*(code **)(PTR_LAB_000b54a8 + 0x854e8)" (* "*") (cast_expression "(code **)(PTR_LAB_000b54a8 + 0x854e8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(PTR_LAB_000b54a8 + 0x854e8)" (( "(") (binary_expression "PTR_LAB_000b54a8 + 0x854e8" (identifier "PTR_LAB_000b54a8") (+ "+") (number_literal "0x854e8")) () ")"))))) () ")")) (argument_list "(auStack_a8)" (( "(") (identifier "auStack_a8") () ")"))) (; ";")) (expression_statement "puVar4 = auStack_78;" (assignment_expression "puVar4 = auStack_78" (identifier "puVar4") (= "=") (identifier "auStack_78")) (; ";")) (expression_statement "puVar12 = auStack_a8;" (assignment_expression "puVar12 = auStack_a8" (identifier "puVar12") (= "=") (identifier "auStack_a8")) (; ";")) (do_statement "do {\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  } while (puVar12 != auStack_88);" (do "do") (compound_statement "{\n    puVar11 = puVar12;\n    puVar6 = puVar4;\n    puVar12 = puVar11 + 4;\n    uVar18 = puVar11[1];\n    uVar16 = puVar11[2];\n    uVar15 = puVar11[3];\n    *puVar6 = *puVar11;\n    puVar6[1] = uVar18;\n    puVar6[2] = uVar16;\n    puVar6[3] = uVar15;\n    puVar4 = puVar6 + 4;\n  }" ({ "{") (expression_statement "puVar11 = puVar12;" (assignment_expression "puVar11 = puVar12" (identifier "puVar11") (= "=") (identifier "puVar12")) (; ";")) (expression_statement "puVar6 = puVar4;" (assignment_expression "puVar6 = puVar4" (identifier "puVar6") (= "=") (identifier "puVar4")) (; ";")) (expression_statement "puVar12 = puVar11 + 4;" (assignment_expression "puVar12 = puVar11 + 4" (identifier "puVar12") (= "=") (binary_expression "puVar11 + 4" (identifier "puVar11") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "uVar18 = puVar11[1];" (assignment_expression "uVar18 = puVar11[1]" (identifier "uVar18") (= "=") (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "uVar16 = puVar11[2];" (assignment_expression "uVar16 = puVar11[2]" (identifier "uVar16") (= "=") (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar15 = puVar11[3];" (assignment_expression "uVar15 = puVar11[3]" (identifier "uVar15") (= "=") (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "*puVar6 = *puVar11;" (assignment_expression "*puVar6 = *puVar11" (pointer_expression "*puVar6" (* "*") (identifier "puVar6")) (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar6[1] = uVar18;" (assignment_expression "puVar6[1] = uVar18" (subscript_expression "puVar6[1]" (identifier "puVar6") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar18")) (; ";")) (expression_statement "puVar6[2] = uVar16;" (assignment_expression "puVar6[2] = uVar16" (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "puVar6[3] = uVar15;" (assignment_expression "puVar6[3] = uVar15" (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar15")) (; ";")) (expression_statement "puVar4 = puVar6 + 4;" (assignment_expression "puVar4 = puVar6 + 4" (identifier "puVar4") (= "=") (binary_expression "puVar6 + 4" (identifier "puVar6") (+ "+") (number_literal "4"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar12 != auStack_88)" (( "(") (binary_expression "puVar12 != auStack_88" (identifier "puVar12") (!= "!=") (identifier "auStack_88")) () ")")) (; ";")) (expression_statement "uVar16 = puVar11[5];" (assignment_expression "uVar16 = puVar11[5]" (identifier "uVar16") (= "=") (subscript_expression "puVar11[5]" (identifier "puVar11") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "uVar15 = puVar11[6];" (assignment_expression "uVar15 = puVar11[6]" (identifier "uVar15") (= "=") (subscript_expression "puVar11[6]" (identifier "puVar11") ([ "[") (number_literal "6") (] "]"))) (; ";")) (expression_statement "iVar13 = param_1[5];" (assignment_expression "iVar13 = param_1[5]" (identifier "iVar13") (= "=") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]"))) (; ";")) (expression_statement "puVar6[4] = *puVar12;" (assignment_expression "puVar6[4] = *puVar12" (subscript_expression "puVar6[4]" (identifier "puVar6") ([ "[") (number_literal "4") (] "]")) (= "=") (pointer_expression "*puVar12" (* "*") (identifier "puVar12"))) (; ";")) (expression_statement "puVar6[5] = uVar16;" (assignment_expression "puVar6[5] = uVar16" (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "uVar16")) (; ";")) (expression_statement "puVar6[6] = uVar15;" (assignment_expression "puVar6[6] = uVar15" (subscript_expression "puVar6[6]" (identifier "puVar6") ([ "[") (number_literal "6") (] "]")) (= "=") (identifier "uVar15")) (; ";")) (if_statement "if (iVar13 != 0) {\n    (**(code **)(puVar3 + 0x8526c))();\n  }" (if "if") (parenthesized_expression "(iVar13 != 0)" (( "(") (binary_expression "iVar13 != 0" (identifier "iVar13") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    (**(code **)(puVar3 + 0x8526c))();\n  }" ({ "{") (expression_statement "(**(code **)(puVar3 + 0x8526c))();" (call_expression "(**(code **)(puVar3 + 0x8526c))()" (parenthesized_expression "(**(code **)(puVar3 + 0x8526c))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x8526c)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x8526c)" (* "*") (cast_expression "(code **)(puVar3 + 0x8526c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x8526c)" (( "(") (binary_expression "puVar3 + 0x8526c" (identifier "puVar3") (+ "+") (number_literal "0x8526c")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar26 = 0;" (assignment_expression "iVar26 = 0" (identifier "iVar26") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar15 = conf_get_filename(param_1[7],0x77);" (assignment_expression "uVar15 = conf_get_filename(param_1[7],0x77)" (identifier "uVar15") (= "=") (call_expression "conf_get_filename(param_1[7],0x77)" (identifier "conf_get_filename") (argument_list "(param_1[7],0x77)" (( "(") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (, ",") (number_literal "0x77") () ")")))) (; ";")) (expression_statement "conf_get_str(param_1[7],0);" (call_expression "conf_get_str(param_1[7],0)" (identifier "conf_get_str") (argument_list "(param_1[7],0)" (( "(") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (, ",") (number_literal "0") () ")"))) (; ";")) (expression_statement "conf_get_int(param_1[7],1);" (call_expression "conf_get_int(param_1[7],1)" (identifier "conf_get_int") (argument_list "(param_1[7],1)" (( "(") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (, ",") (number_literal "1") () ")"))) (; ";")) (expression_statement "iVar13 = safemalloc(0x1000,1);" (assignment_expression "iVar13 = safemalloc(0x1000,1)" (identifier "iVar13") (= "=") (call_expression "safemalloc(0x1000,1)" (identifier "safemalloc") (argument_list "(0x1000,1)" (( "(") (number_literal "0x1000") (, ",") (number_literal "1") () ")")))) (; ";")) (expression_statement "iVar21 = 0x1000;" (assignment_expression "iVar21 = 0x1000" (identifier "iVar21") (= "=") (number_literal "0x1000")) (; ";")) (expression_statement "pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);" (assignment_expression "pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15)" (identifier "pcVar7") (= "=") (cast_expression "(char *)(**(code **)(puVar3 + 0x854e0))(uVar15)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar3 + 0x854e0))(uVar15)" (parenthesized_expression "(**(code **)(puVar3 + 0x854e0))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x854e0)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x854e0)" (* "*") (cast_expression "(code **)(puVar3 + 0x854e0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x854e0)" (( "(") (binary_expression "puVar3 + 0x854e0" (identifier "puVar3") (+ "+") (number_literal "0x854e0")) () ")"))))) () ")")) (argument_list "(uVar15)" (( "(") (identifier "uVar15") () ")"))))) (; ";")) (expression_statement "cVar10 = *pcVar7;" (assignment_expression "cVar10 = *pcVar7" (identifier "cVar10") (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "iVar23 = *(int *)(puVar3 + 0x85230);" (assignment_expression "iVar23 = *(int *)(puVar3 + 0x85230)" (identifier "iVar23") (= "=") (pointer_expression "*(int *)(puVar3 + 0x85230)" (* "*") (cast_expression "(int *)(puVar3 + 0x85230)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x85230)" (( "(") (binary_expression "puVar3 + 0x85230" (identifier "puVar3") (+ "+") (number_literal "0x85230")) () ")"))))) (; ";")) (while_statement "while (cVar10 != '\0') {\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }" (while "while") (parenthesized_expression "(cVar10 != '\0')" (( "(") (binary_expression "cVar10 != '\0'" (identifier "cVar10") (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    pcVar14 = pcVar7 + 1;\n    if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }\n  }" ({ "{") (expression_statement "pcVar14 = pcVar7 + 1;" (assignment_expression "pcVar14 = pcVar7 + 1" (identifier "pcVar14") (= "=") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (cVar10 == '&') {\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }\n    else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }" (if "if") (parenthesized_expression "(cVar10 == '&')" (( "(") (binary_expression "cVar10 == '&'" (identifier "cVar10") (== "==") (char_literal "'&'" (' "'") (character "&") (' "'"))) () ")")) (compound_statement "{\n      bVar1 = pcVar7[1];\n      if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }\n      if (iVar26 < iVar21) break;\n      iVar24 = -1;\n      bVar2 = true;\n      iVar19 = 0;\n      iVar22 = iVar26;\nLAB_00031188:\n      iVar22 = iVar22 * 5;\n      if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }\n      iVar21 = (iVar22 >> 2) + 0x200;\n      iVar13 = saferealloc(iVar13,iVar21,1);\n      if (iVar19 != 0) goto LAB_000310dc;\n      cVar10 = *pcVar14;\n      pcVar7 = pcVar14;\n    }" ({ "{") (expression_statement "bVar1 = pcVar7[1];" (assignment_expression "bVar1 = pcVar7[1]" (identifier "bVar1") (= "=") (subscript_expression "pcVar7[1]" (identifier "pcVar7") ([ "[") (number_literal "1") (] "]"))) (; ";")) (if_statement "if (bVar1 != 0) {\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }" (if "if") (parenthesized_expression "(bVar1 != 0)" (( "(") (binary_expression "bVar1 != 0" (identifier "bVar1") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        pcVar14 = pcVar7 + 2;\n        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();\n        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;\n        if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }\n        acStack_4c[0] = '&';\n        if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }\n        goto LAB_000310c8;\n      }" ({ "{") (expression_statement "pcVar14 = pcVar7 + 2;" (assignment_expression "pcVar14 = pcVar7 + 2" (identifier "pcVar14") (= "=") (binary_expression "pcVar7 + 2" (identifier "pcVar7") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();" (assignment_expression "piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))()" (identifier "piVar8") (= "=") (cast_expression "(int *)(**(code **)(puVar3 + 0x861d4))()" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "(**(code **)(puVar3 + 0x861d4))()" (parenthesized_expression "(**(code **)(puVar3 + 0x861d4))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x861d4)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x861d4)" (* "*") (cast_expression "(code **)(puVar3 + 0x861d4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x861d4)" (( "(") (binary_expression "puVar3 + 0x861d4" (identifier "puVar3") (+ "+") (number_literal "0x861d4")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;" (assignment_expression "uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100" (identifier "uVar9") (= "=") (binary_expression "*(int *)(*piVar8 + (uint)bVar1 * 4) - 100" (pointer_expression "*(int *)(*piVar8 + (uint)bVar1 * 4)" (* "*") (cast_expression "(int *)(*piVar8 + (uint)bVar1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*piVar8 + (uint)bVar1 * 4)" (( "(") (binary_expression "*piVar8 + (uint)bVar1 * 4" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (+ "+") (binary_expression "(uint)bVar1 * 4" (cast_expression "(uint)bVar1" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar1")) (* "*") (number_literal "4"))) () ")")))) (- "-") (number_literal "100"))) (; ";")) (if_statement "if (uVar9 < 0x16) {\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }" (if "if") (parenthesized_expression "(uVar9 < 0x16)" (( "(") (binary_expression "uVar9 < 0x16" (identifier "uVar9") (< "<") (number_literal "0x16")) () ")")) (compound_statement "{\n                    \n                    \n          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();\n          return;\n        }" ({ "{") (expression_statement "(*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();" (call_expression "(*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))()" (parenthesized_expression "(*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))" (( "(") (pointer_expression "*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)))" (* "*") (cast_expression "(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)))" (( "(") (binary_expression "puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))" (identifier "puVar3") (+ "+") (cast_expression "(int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))" (( "(") (binary_expression "&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4)" (pointer_expression "&UNK_0008d1d0" (& "&") (identifier "UNK_0008d1d0")) (+ "+") (pointer_expression "*(int *)(iVar23 + 0x4c70 + uVar9 * 4)" (* "*") (cast_expression "(int *)(iVar23 + 0x4c70 + uVar9 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar23 + 0x4c70 + uVar9 * 4)" (( "(") (binary_expression "iVar23 + 0x4c70 + uVar9 * 4" (binary_expression "iVar23 + 0x4c70" (identifier "iVar23") (+ "+") (number_literal "0x4c70")) (+ "+") (binary_expression "uVar9 * 4" (identifier "uVar9") (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "acStack_4c[0] = '&';" (assignment_expression "acStack_4c[0] = '&'" (subscript_expression "acStack_4c[0]" (identifier "acStack_4c") ([ "[") (number_literal "0") (] "]")) (= "=") (char_literal "'&'" (' "'") (character "&") (' "'"))) (; ";")) (if_statement "if (bVar1 == 0x26) {\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }\n        else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }" (if "if") (parenthesized_expression "(bVar1 == 0x26)" (( "(") (binary_expression "bVar1 == 0x26" (identifier "bVar1") (== "==") (number_literal "0x26")) () ")")) (compound_statement "{\n          iVar24 = 0;\n          bVar2 = true;\n          iVar19 = 1;\n        }" ({ "{") (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" (identifier "iVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }" (else "else") (compound_statement "{\n          acStack_4c[1] = bVar1;\n          iVar24 = 1;\n          bVar2 = true;\n          iVar19 = 2;\n        }" ({ "{") (expression_statement "acStack_4c[1] = bVar1;" (assignment_expression "acStack_4c[1] = bVar1" (subscript_expression "acStack_4c[1]" (identifier "acStack_4c") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "bVar1")) (; ";")) (expression_statement "iVar24 = 1;" (assignment_expression "iVar24 = 1" (identifier "iVar24") (= "=") (number_literal "1")) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "iVar19 = 2;" (assignment_expression "iVar19 = 2" (identifier "iVar19") (= "=") (number_literal "2")) (; ";")) (} "}")))) (goto_statement "goto LAB_000310c8;" (goto "goto") (statement_identifier "LAB_000310c8") (; ";")) (} "}"))) (if_statement "if (iVar26 < iVar21) break;" (if "if") (parenthesized_expression "(iVar26 < iVar21)" (( "(") (binary_expression "iVar26 < iVar21" (identifier "iVar26") (< "<") (identifier "iVar21")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar24 = -1;" (assignment_expression "iVar24 = -1" (identifier "iVar24") (= "=") (number_literal "-1")) (; ";")) (expression_statement "bVar2 = true;" (assignment_expression "bVar2 = true" (identifier "bVar2") (= "=") (true "true")) (; ";")) (expression_statement "iVar19 = 0;" (assignment_expression "iVar19 = 0" (identifier "iVar19") (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar22 = iVar26;" (assignment_expression "iVar22 = iVar26" (identifier "iVar22") (= "=") (identifier "iVar26")) (; ";")) (labeled_statement "LAB_00031188:\n      iVar22 = iVar22 * 5;" (statement_identifier "LAB_00031188") (: ":") (expression_statement "iVar22 = iVar22 * 5;" (assignment_expression "iVar22 = iVar22 * 5" (identifier "iVar22") (= "=") (binary_expression "iVar22 * 5" (identifier "iVar22") (* "*") (number_literal "5"))) (; ";"))) (if_statement "if (iVar22 < 0) {\n        iVar22 = iVar22 + 3;\n      }" (if "if") (parenthesized_expression "(iVar22 < 0)" (( "(") (binary_expression "iVar22 < 0" (identifier "iVar22") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar22 = iVar22 + 3;\n      }" ({ "{") (expression_statement "iVar22 = iVar22 + 3;" (assignment_expression "iVar22 = iVar22 + 3" (identifier "iVar22") (= "=") (binary_expression "iVar22 + 3" (identifier "iVar22") (+ "+") (number_literal "3"))) (; ";")) (} "}"))) (expression_statement "iVar21 = (iVar22 >> 2) + 0x200;" (assignment_expression "iVar21 = (iVar22 >> 2) + 0x200" (identifier "iVar21") (= "=") (binary_expression "(iVar22 >> 2) + 0x200" (parenthesized_expression "(iVar22 >> 2)" (( "(") (binary_expression "iVar22 >> 2" (identifier "iVar22") (>> ">>") (number_literal "2")) () ")")) (+ "+") (number_literal "0x200"))) (; ";")) (expression_statement "iVar13 = saferealloc(iVar13,iVar21,1);" (assignment_expression "iVar13 = saferealloc(iVar13,iVar21,1)" (identifier "iVar13") (= "=") (call_expression "saferealloc(iVar13,iVar21,1)" (identifier "saferealloc") (argument_list "(iVar13,iVar21,1)" (( "(") (identifier "iVar13") (, ",") (identifier "iVar21") (, ",") (number_literal "1") () ")")))) (; ";")) (if_statement "if (iVar19 != 0) goto LAB_000310dc;" (if "if") (parenthesized_expression "(iVar19 != 0)" (( "(") (binary_expression "iVar19 != 0" (identifier "iVar19") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_000310dc;" (goto "goto") (statement_identifier "LAB_000310dc") (; ";"))) (expression_statement "cVar10 = *pcVar14;" (assignment_expression "cVar10 = *pcVar14" (identifier "cVar10") (= "=") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14"))) (; ";")) (expression_statement "pcVar7 = pcVar14;" (assignment_expression "pcVar7 = pcVar14" (identifier "pcVar7") (= "=") (identifier "pcVar14")) (; ";")) (} "}")) (else_clause "else {\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }" (else "else") (compound_statement "{\n      iVar24 = 0;\n      acStack_4c[0] = cVar10;\n      bVar2 = false;\n      iVar19 = 1;\nLAB_000310c8:\n      iVar22 = iVar26 + iVar19;\n      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;\nLAB_000310dc:\n      pcVar7 = acStack_4c;\n      pcVar20 = (char *)(iVar13 + iVar26);\n      do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));\nLAB_00031148:\n      cVar10 = *pcVar14;\n      if (iVar24 < 0) {\n        iVar24 = 0;\n      }\n      iVar26 = iVar24 + iVar26 + 1;\n      pcVar7 = pcVar14;\n    }" ({ "{") (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" (identifier "iVar24") (= "=") (number_literal "0")) (; ";")) (expression_statement "acStack_4c[0] = cVar10;" (assignment_expression "acStack_4c[0] = cVar10" (subscript_expression "acStack_4c[0]" (identifier "acStack_4c") ([ "[") (number_literal "0") (] "]")) (= "=") (identifier "cVar10")) (; ";")) (expression_statement "bVar2 = false;" (assignment_expression "bVar2 = false" (identifier "bVar2") (= "=") (false "false")) (; ";")) (expression_statement "iVar19 = 1;" (assignment_expression "iVar19 = 1" (identifier "iVar19") (= "=") (number_literal "1")) (; ";")) (labeled_statement "LAB_000310c8:\n      iVar22 = iVar26 + iVar19;" (statement_identifier "LAB_000310c8") (: ":") (expression_statement "iVar22 = iVar26 + iVar19;" (assignment_expression "iVar22 = iVar26 + iVar19" (identifier "iVar22") (= "=") (binary_expression "iVar26 + iVar19" (identifier "iVar26") (+ "+") (identifier "iVar19"))) (; ";"))) (if_statement "if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;" (if "if") (parenthesized_expression "(iVar21 <= iVar26 + iVar19)" (( "(") (binary_expression "iVar21 <= iVar26 + iVar19" (identifier "iVar21") (<= "<=") (binary_expression "iVar26 + iVar19" (identifier "iVar26") (+ "+") (identifier "iVar19"))) () ")")) (goto_statement "goto LAB_00031188;" (goto "goto") (statement_identifier "LAB_00031188") (; ";"))) (labeled_statement "LAB_000310dc:\n      pcVar7 = acStack_4c;" (statement_identifier "LAB_000310dc") (: ":") (expression_statement "pcVar7 = acStack_4c;" (assignment_expression "pcVar7 = acStack_4c" (identifier "pcVar7") (= "=") (identifier "acStack_4c")) (; ";"))) (expression_statement "pcVar20 = (char *)(iVar13 + iVar26);" (assignment_expression "pcVar20 = (char *)(iVar13 + iVar26)" (identifier "pcVar20") (= "=") (cast_expression "(char *)(iVar13 + iVar26)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + iVar26)" (( "(") (binary_expression "iVar13 + iVar26" (identifier "iVar13") (+ "+") (identifier "iVar26")) () ")")))) (; ";")) (do_statement "do {\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));" (do "do") (compound_statement "{\n        while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }\n        *pcVar20 = *pcVar7;\n        pcVar20 = pcVar20 + 1;\n        pcVar7 = pcVar17;\n      }" ({ "{") (while_statement "while( true ) {\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n          pcVar17 = pcVar7 + 1;\n          if (!bVar2) break;\n          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);\n          *pcVar20 = cVar10;\n          pcVar7 = pcVar17;\n          pcVar20 = pcVar20 + 1;\n          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;\n        }" ({ "{") (expression_statement "pcVar17 = pcVar7 + 1;" (assignment_expression "pcVar17 = pcVar7 + 1" (identifier "pcVar17") (= "=") (binary_expression "pcVar7 + 1" (identifier "pcVar7") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (!bVar2) break;" (if "if") (parenthesized_expression "(!bVar2)" (( "(") (unary_expression "!bVar2" (! "!") (identifier "bVar2")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);" (assignment_expression "cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7)" (identifier "cVar10") (= "=") (call_expression "(**(code **)(puVar3 + 0x854f0))((int)*pcVar7)" (parenthesized_expression "(**(code **)(puVar3 + 0x854f0))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x854f0)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x854f0)" (* "*") (cast_expression "(code **)(puVar3 + 0x854f0)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x854f0)" (( "(") (binary_expression "puVar3 + 0x854f0" (identifier "puVar3") (+ "+") (number_literal "0x854f0")) () ")"))))) () ")")) (argument_list "((int)*pcVar7)" (( "(") (cast_expression "(int)*pcVar7" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) () ")")))) (; ";")) (expression_statement "*pcVar20 = cVar10;" (assignment_expression "*pcVar20 = cVar10" (pointer_expression "*pcVar20" (* "*") (identifier "pcVar20")) (= "=") (identifier "cVar10")) (; ";")) (expression_statement "pcVar7 = pcVar17;" (assignment_expression "pcVar7 = pcVar17" (identifier "pcVar7") (= "=") (identifier "pcVar17")) (; ";")) (expression_statement "pcVar20 = pcVar20 + 1;" (assignment_expression "pcVar20 = pcVar20 + 1" (identifier "pcVar20") (= "=") (binary_expression "pcVar20 + 1" (identifier "pcVar20") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;" (if "if") (parenthesized_expression "((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1)" (( "(") (binary_expression "(int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1" (cast_expression "(int)(acStack_4c + iVar24 + (1 - (int)pcVar17))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(acStack_4c + iVar24 + (1 - (int)pcVar17))" (( "(") (binary_expression "acStack_4c + iVar24 + (1 - (int)pcVar17)" (binary_expression "acStack_4c + iVar24" (identifier "acStack_4c") (+ "+") (identifier "iVar24")) (+ "+") (parenthesized_expression "(1 - (int)pcVar17)" (( "(") (binary_expression "1 - (int)pcVar17" (number_literal "1") (- "-") (cast_expression "(int)pcVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar17"))) () ")"))) () ")"))) (< "<") (number_literal "1")) () ")")) (goto_statement "goto LAB_00031148;" (goto "goto") (statement_identifier "LAB_00031148") (; ";"))) (} "}"))) (expression_statement "*pcVar20 = *pcVar7;" (assignment_expression "*pcVar20 = *pcVar7" (pointer_expression "*pcVar20" (* "*") (identifier "pcVar20")) (= "=") (pointer_expression "*pcVar7" (* "*") (identifier "pcVar7"))) (; ";")) (expression_statement "pcVar20 = pcVar20 + 1;" (assignment_expression "pcVar20 = pcVar20 + 1" (identifier "pcVar20") (= "=") (binary_expression "pcVar20 + 1" (identifier "pcVar20") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar7 = pcVar17;" (assignment_expression "pcVar7 = pcVar17" (identifier "pcVar7") (= "=") (identifier "pcVar17")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)))" (( "(") (binary_expression "0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17))" (number_literal "0") (< "<") (cast_expression "(int)(acStack_4c + iVar24 + (1 - (int)pcVar17))" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "(acStack_4c + iVar24 + (1 - (int)pcVar17))" (( "(") (binary_expression "acStack_4c + iVar24 + (1 - (int)pcVar17)" (binary_expression "acStack_4c + iVar24" (identifier "acStack_4c") (+ "+") (identifier "iVar24")) (+ "+") (parenthesized_expression "(1 - (int)pcVar17)" (( "(") (binary_expression "1 - (int)pcVar17" (number_literal "1") (- "-") (cast_expression "(int)pcVar17" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "pcVar17"))) () ")"))) () ")")))) () ")")) (; ";")) (labeled_statement "LAB_00031148:\n      cVar10 = *pcVar14;" (statement_identifier "LAB_00031148") (: ":") (expression_statement "cVar10 = *pcVar14;" (assignment_expression "cVar10 = *pcVar14" (identifier "cVar10") (= "=") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14"))) (; ";"))) (if_statement "if (iVar24 < 0) {\n        iVar24 = 0;\n      }" (if "if") (parenthesized_expression "(iVar24 < 0)" (( "(") (binary_expression "iVar24 < 0" (identifier "iVar24") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        iVar24 = 0;\n      }" ({ "{") (expression_statement "iVar24 = 0;" (assignment_expression "iVar24 = 0" (identifier "iVar24") (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "iVar26 = iVar24 + iVar26 + 1;" (assignment_expression "iVar26 = iVar24 + iVar26 + 1" (identifier "iVar26") (= "=") (binary_expression "iVar24 + iVar26 + 1" (binary_expression "iVar24 + iVar26" (identifier "iVar24") (+ "+") (identifier "iVar26")) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar7 = pcVar14;" (assignment_expression "pcVar7 = pcVar14" (identifier "pcVar7") (= "=") (identifier "pcVar14")) (; ";")) (} "}")))) (} "}"))) (expression_statement "pcVar25 = *(code **)(puVar3 + 0x85264);" (assignment_expression "pcVar25 = *(code **)(puVar3 + 0x85264)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar3 + 0x85264)" (* "*") (cast_expression "(code **)(puVar3 + 0x85264)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x85264)" (( "(") (binary_expression "puVar3 + 0x85264" (identifier "puVar3") (+ "+") (number_literal "0x85264")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)(iVar13 + iVar26) = 0;" (assignment_expression "*(undefined1 *)(iVar13 + iVar26) = 0" (pointer_expression "*(undefined1 *)(iVar13 + iVar26)" (* "*") (cast_expression "(undefined1 *)(iVar13 + iVar26)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar13 + iVar26)" (( "(") (binary_expression "iVar13 + iVar26" (identifier "iVar13") (+ "+") (identifier "iVar26")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "iVar21 = (*pcVar25)(iVar13);" (assignment_expression "iVar21 = (*pcVar25)(iVar13)" (identifier "iVar21") (= "=") (call_expression "(*pcVar25)(iVar13)" (parenthesized_expression "(*pcVar25)" (( "(") (pointer_expression "*pcVar25" (* "*") (identifier "pcVar25")) () ")")) (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")")))) (; ";")) (expression_statement "safefree(iVar13);" (call_expression "safefree(iVar13)" (identifier "safefree") (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "param_1[5] = iVar21;" (assignment_expression "param_1[5] = iVar21" (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar21")) (; ";")) (expression_statement "iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);" (assignment_expression "iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0)" (identifier "iVar13") (= "=") (call_expression "(**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0)" (parenthesized_expression "(**(code **)(puVar3 + 0x854e4))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x854e4)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x854e4)" (* "*") (cast_expression "(code **)(puVar3 + 0x854e4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x854e4)" (( "(") (binary_expression "puVar3 + 0x854e4" (identifier "puVar3") (+ "+") (number_literal "0x854e4")) () ")"))))) () ")")) (argument_list "(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0)" (( "(") (identifier "iVar21") (, ",") (binary_expression "*(int *)(puVar3 + 0x85214) + -0x702c" (pointer_expression "*(int *)(puVar3 + 0x85214)" (* "*") (cast_expression "(int *)(puVar3 + 0x85214)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x85214)" (( "(") (binary_expression "puVar3 + 0x85214" (identifier "puVar3") (+ "+") (number_literal "0x85214")) () ")")))) (+ "+") (number_literal "-0x702c")) (, ",") (number_literal "0") () ")")))) (; ";")) (if_statement "if (iVar13 == 0) {\nLAB_00031314:\n    iVar13 = 2;\n  }\n  else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }" (if "if") (parenthesized_expression "(iVar13 == 0)" (( "(") (binary_expression "iVar13 == 0" (identifier "iVar13") (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00031314:\n    iVar13 = 2;\n  }" ({ "{") (labeled_statement "LAB_00031314:\n    iVar13 = 2;" (statement_identifier "LAB_00031314") (: ":") (expression_statement "iVar13 = 2;" (assignment_expression "iVar13 = 2" (identifier "iVar13") (= "=") (number_literal "2")) (; ";"))) (} "}")) (else_clause "else {\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }" (else "else") (compound_statement "{\n    iVar21 = conf_get_int(param_1[7],0x79);\n    (**(code **)(puVar3 + 0x85f20))(iVar13);\n    if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }\n  }" ({ "{") (expression_statement "iVar21 = conf_get_int(param_1[7],0x79);" (assignment_expression "iVar21 = conf_get_int(param_1[7],0x79)" (identifier "iVar21") (= "=") (call_expression "conf_get_int(param_1[7],0x79)" (identifier "conf_get_int") (argument_list "(param_1[7],0x79)" (( "(") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (, ",") (number_literal "0x79") () ")")))) (; ";")) (expression_statement "(**(code **)(puVar3 + 0x85f20))(iVar13);" (call_expression "(**(code **)(puVar3 + 0x85f20))(iVar13)" (parenthesized_expression "(**(code **)(puVar3 + 0x85f20))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x85f20)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x85f20)" (* "*") (cast_expression "(code **)(puVar3 + 0x85f20)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x85f20)" (( "(") (binary_expression "puVar3 + 0x85f20" (identifier "puVar3") (+ "+") (number_literal "0x85f20")) () ")"))))) () ")")) (argument_list "(iVar13)" (( "(") (identifier "iVar13") () ")"))) (; ";")) (if_statement "if (iVar21 == -1) {\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }\n    else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }" (if "if") (parenthesized_expression "(iVar21 == -1)" (( "(") (binary_expression "iVar21 == -1" (identifier "iVar21") (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n      piVar8 = (int *)param_1[6];\n      iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);\n      if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }\n    }" ({ "{") (expression_statement "piVar8 = (int *)param_1[6];" (assignment_expression "piVar8 = (int *)param_1[6]" (identifier "piVar8") (= "=") (cast_expression "(int *)param_1[6]" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);" (assignment_expression "iVar13 = (**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1)" (identifier "iVar13") (= "=") (call_expression "(**(code **)(puVar3 + 0x854f4))\n                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1)" (parenthesized_expression "(**(code **)(puVar3 + 0x854f4))" (( "(") (pointer_expression "**(code **)(puVar3 + 0x854f4)" (* "*") (pointer_expression "*(code **)(puVar3 + 0x854f4)" (* "*") (cast_expression "(code **)(puVar3 + 0x854f4)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x854f4)" (( "(") (binary_expression "puVar3 + 0x854f4" (identifier "puVar3") (+ "+") (number_literal "0x854f4")) () ")"))))) () ")")) (argument_list "(piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1)" (( "(") (identifier "piVar8") (, ",") (subscript_expression "param_1[5]" (identifier "param_1") ([ "[") (number_literal "5") (] "]")) (, ",") (binary_expression "*(int *)(puVar3 + 0x854a8) + 0xab0" (pointer_expression "*(int *)(puVar3 + 0x854a8)" (* "*") (cast_expression "(int *)(puVar3 + 0x854a8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3 + 0x854a8)" (( "(") (binary_expression "puVar3 + 0x854a8" (identifier "puVar3") (+ "+") (number_literal "0x854a8")) () ")")))) (+ "+") (number_literal "0xab0")) (, ",") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar13 < 0) {\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }" (if "if") (parenthesized_expression "(iVar13 < 0)" (( "(") (binary_expression "iVar13 < 0" (identifier "iVar13") (< "<") (number_literal "0")) () ")")) (compound_statement "{\n        param_1[1] = 1;\n        goto LAB_000312d0;\n      }" ({ "{") (expression_statement "param_1[1] = 1;" (assignment_expression "param_1[1] = 1" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_000312d0;" (goto "goto") (statement_identifier "LAB_000312d0") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }" (else "else") (compound_statement "{\n      if (iVar21 == 1) goto LAB_00031314;\n      iVar13 = 1;\n    }" ({ "{") (if_statement "if (iVar21 == 1) goto LAB_00031314;" (if "if") (parenthesized_expression "(iVar21 == 1)" (( "(") (binary_expression "iVar21 == 1" (identifier "iVar21") (== "==") (number_literal "1")) () ")")) (goto_statement "goto LAB_00031314;" (goto "goto") (statement_identifier "LAB_00031314") (; ";"))) (expression_statement "iVar13 = 1;" (assignment_expression "iVar13 = 1" (identifier "iVar13") (= "=") (number_literal "1")) (; ";")) (} "}")))) (} "}")))) (expression_statement "FUN_00030ab0(param_1,iVar13);" (call_expression "FUN_00030ab0(param_1,iVar13)" (identifier "FUN_00030ab0") (argument_list "(param_1,iVar13)" (( "(") (identifier "param_1") (, ",") (identifier "iVar13") () ")"))) (; ";")) (expression_statement "piVar8 = param_1;" (assignment_expression "piVar8 = param_1" (identifier "piVar8") (= "=") (identifier "param_1")) (; ";")) (labeled_statement "LAB_000312d0:\n  if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }" (statement_identifier "LAB_000312d0") (: ":") (if_statement "if (iStack_2c != *piVar5) {\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }" (if "if") (parenthesized_expression "(iStack_2c != *piVar5)" (( "(") (binary_expression "iStack_2c != *piVar5" (identifier "iStack_2c") (!= "!=") (pointer_expression "*piVar5" (* "*") (identifier "piVar5"))) () ")")) (compound_statement "{\n    pcVar25 = *(code **)(puVar3 + 0x85d9c);\n    (*pcVar25)();\n    if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }\n    piVar8[1] = 0;\n    return;\n  }" ({ "{") (expression_statement "pcVar25 = *(code **)(puVar3 + 0x85d9c);" (assignment_expression "pcVar25 = *(code **)(puVar3 + 0x85d9c)" (identifier "pcVar25") (= "=") (pointer_expression "*(code **)(puVar3 + 0x85d9c)" (* "*") (cast_expression "(code **)(puVar3 + 0x85d9c)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(puVar3 + 0x85d9c)" (( "(") (binary_expression "puVar3 + 0x85d9c" (identifier "puVar3") (+ "+") (number_literal "0x85d9c")) () ")"))))) (; ";")) (expression_statement "(*pcVar25)();" (call_expression "(*pcVar25)()" (parenthesized_expression "(*pcVar25)" (( "(") (pointer_expression "*pcVar25" (* "*") (identifier "pcVar25")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if (*piVar8 != 0) {\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }" (if "if") (parenthesized_expression "(*piVar8 != 0)" (( "(") (binary_expression "*piVar8 != 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      (**(code **)(pcVar25 + 0x84ac8))();\n      *piVar8 = 0;\n    }" ({ "{") (expression_statement "(**(code **)(pcVar25 + 0x84ac8))();" (call_expression "(**(code **)(pcVar25 + 0x84ac8))()" (parenthesized_expression "(**(code **)(pcVar25 + 0x84ac8))" (( "(") (pointer_expression "**(code **)(pcVar25 + 0x84ac8)" (* "*") (pointer_expression "*(code **)(pcVar25 + 0x84ac8)" (* "*") (cast_expression "(code **)(pcVar25 + 0x84ac8)" (( "(") (type_descriptor "code **" (type_identifier "code") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(pcVar25 + 0x84ac8)" (( "(") (binary_expression "pcVar25 + 0x84ac8" (identifier "pcVar25") (+ "+") (number_literal "0x84ac8")) () ")"))))) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (expression_statement "*piVar8 = 0;" (assignment_expression "*piVar8 = 0" (pointer_expression "*piVar8" (* "*") (identifier "piVar8")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "piVar8[1] = 0;" (assignment_expression "piVar8[1] = 0" (subscript_expression "piVar8[1]" (identifier "piVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* WARNING: Enum "anon_enum_32": Some values do not have unique names */

void function_1(void *handle)

{
  type_1 *ctx;
  
  if ((*(int *)((int)handle + 4) == 0) && (*(int *)((int)handle + 0x20) != 0)) {
    function_1(handle);
    return;
  }
  return;
}


(translation_unit (function_definition type: (primitive_type) declarator: (function_declarator declarator: (identifier) parameters: (parameter_list (parameter_declaration type: (primitive_type) declarator: (pointer_declarator 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: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (primitive_type) declarator: (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)) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (type_identifier) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (array_declarator declarator: (identifier) size: (number_literal))) (declaration type: (primitive_type) declarator: (identifier)) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (compound_statement (return_statement))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (do_statement body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal))))) condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (number_literal))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (number_literal)))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (number_literal) (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (while_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (escape_sequence)))) body: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (char_literal (character)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (subscript_expression argument: (identifier) index: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (binary_expression left: (cast_expression type: (type_descriptor type: (type_identifier)) value: (identifier)) right: (number_literal)))))) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (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: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (number_literal)) right: (binary_expression left: (identifier) right: (number_literal)))))))))))))) arguments: (argument_list))) (return_statement))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (char_literal (character)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (number_literal)))))) (goto_statement label: (statement_identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (true))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_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: (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: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (false))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (binary_expression left: (identifier) right: (identifier)))) consequence: (goto_statement label: (statement_identifier))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (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: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (unary_expression argument: (identifier))) consequence: (break_statement)) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (cast_expression type: (type_descriptor type: (primitive_type)) value: (pointer_expression argument: (identifier))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (if_statement condition: (parenthesized_expression (binary_expression left: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier))))))) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (pointer_expression argument: (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (identifier) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))) condition: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (parenthesized_expression (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (parenthesized_expression (binary_expression left: (number_literal) right: (cast_expression type: (type_descriptor type: (primitive_type)) value: (identifier)))))))))) (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (binary_expression left: (binary_expression left: (identifier) right: (identifier)) right: (number_literal)))) (expression_statement (assignment_expression left: (identifier) right: (identifier)))))))) (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (assignment_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (identifier))))) right: (number_literal))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list (identifier))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier)))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (number_literal))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (labeled_statement label: (statement_identifier) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))) alternative: (else_clause (compound_statement (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (identifier) arguments: (argument_list (subscript_expression argument: (identifier) index: (number_literal)) (number_literal))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier)))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (subscript_expression argument: (identifier) index: (number_literal))))) (expression_statement (assignment_expression left: (identifier) right: (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list (identifier) (subscript_expression argument: (identifier) index: (number_literal)) (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal)) (identifier))))) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (compound_statement (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (goto_statement label: (statement_identifier))))) alternative: (else_clause (compound_statement (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))) consequence: (goto_statement label: (statement_identifier))) (expression_statement (assignment_expression left: (identifier) right: (number_literal))))))))) (expression_statement (call_expression function: (identifier) arguments: (argument_list (identifier) (identifier)))) (expression_statement (assignment_expression left: (identifier) right: (identifier))) (labeled_statement label: (statement_identifier) (if_statement condition: (parenthesized_expression (binary_expression left: (identifier) right: (pointer_expression argument: (identifier)))) consequence: (compound_statement (expression_statement (assignment_expression left: (identifier) right: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (identifier))) arguments: (argument_list))) (if_statement condition: (parenthesized_expression (binary_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) consequence: (compound_statement (expression_statement (call_expression function: (parenthesized_expression (pointer_expression argument: (pointer_expression argument: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator declarator: (abstract_pointer_declarator))) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))))) arguments: (argument_list))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))))) (expression_statement (assignment_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))) (return_statement)))) (return_statement))))

void MASKED(int *param_1)

{
  byte bVar1;
  bool bVar2;
  undefined *puVar3;
  undefined4 *puVar4;
  int *piVar5;
  undefined4 *puVar6;
  char *pcVar7;
  char cVar10;
  int *piVar8;
  uint uVar9;
  undefined4 *puVar11;
  undefined4 *puVar12;
  int iVar13;
  char *pcVar14;
  undefined4 uVar15;
  undefined4 uVar16;
  char *pcVar17;
  undefined4 uVar18;
  int iVar19;
  char *pcVar20;
  int iVar21;
  int iVar22;
  int iVar23;
  int iVar24;
  code *pcVar25;
  int iVar26;
  undefined4 auStack_a8 [8];
  undefined4 auStack_88 [4];
  undefined4 auStack_78 [11];
  char acStack_4c [32];
  int iStack_2c;
  
  puVar3 = PTR_LAB_000b54a8;
  if ((param_1[1] != 0) || (param_1[8] == 0)) {
    return;
  }
  piVar5 = *(int **)(PTR_LAB_000b54a8 + 0x860f8);
  iStack_2c = *piVar5;
  (**(code **)(PTR_LAB_000b54a8 + 0x854e8))(auStack_a8);
  puVar4 = auStack_78;
  puVar12 = auStack_a8;
  do {
    puVar11 = puVar12;
    puVar6 = puVar4;
    puVar12 = puVar11 + 4;
    uVar18 = puVar11[1];
    uVar16 = puVar11[2];
    uVar15 = puVar11[3];
    *puVar6 = *puVar11;
    puVar6[1] = uVar18;
    puVar6[2] = uVar16;
    puVar6[3] = uVar15;
    puVar4 = puVar6 + 4;
  } while (puVar12 != auStack_88);
  uVar16 = puVar11[5];
  uVar15 = puVar11[6];
  iVar13 = param_1[5];
  puVar6[4] = *puVar12;
  puVar6[5] = uVar16;
  puVar6[6] = uVar15;
  if (iVar13 != 0) {
    (**(code **)(puVar3 + 0x8526c))();
  }
  iVar26 = 0;
  uVar15 = conf_get_filename(param_1[7],0x77);
  conf_get_str(param_1[7],0);
  conf_get_int(param_1[7],1);
  iVar13 = safemalloc(0x1000,1);
  iVar21 = 0x1000;
  pcVar7 = (char *)(**(code **)(puVar3 + 0x854e0))(uVar15);
  cVar10 = *pcVar7;
  iVar23 = *(int *)(puVar3 + 0x85230);
  while (cVar10 != '\0') {
    pcVar14 = pcVar7 + 1;
    if (cVar10 == '&') {
      bVar1 = pcVar7[1];
      if (bVar1 != 0) {
        pcVar14 = pcVar7 + 2;
        piVar8 = (int *)(**(code **)(puVar3 + 0x861d4))();
        uVar9 = *(int *)(*piVar8 + (uint)bVar1 * 4) - 100;
        if (uVar9 < 0x16) {
                    /* WARNING: Could not emulate address calculation at 0x00031218 */
                    /* WARNING: Treating indirect jump as call */
          (*(code *)(puVar3 + (int)(&UNK_0008d1d0 + *(int *)(iVar23 + 0x4c70 + uVar9 * 4))))();
          return;
        }
        acStack_4c[0] = '&';
        if (bVar1 == 0x26) {
          iVar24 = 0;
          bVar2 = true;
          iVar19 = 1;
        }
        else {
          acStack_4c[1] = bVar1;
          iVar24 = 1;
          bVar2 = true;
          iVar19 = 2;
        }
        goto LAB_000310c8;
      }
      if (iVar26 < iVar21) break;
      iVar24 = -1;
      bVar2 = true;
      iVar19 = 0;
      iVar22 = iVar26;
LAB_00031188:
      iVar22 = iVar22 * 5;
      if (iVar22 < 0) {
        iVar22 = iVar22 + 3;
      }
      iVar21 = (iVar22 >> 2) + 0x200;
      iVar13 = saferealloc(iVar13,iVar21,1);
      if (iVar19 != 0) goto LAB_000310dc;
      cVar10 = *pcVar14;
      pcVar7 = pcVar14;
    }
    else {
      iVar24 = 0;
      acStack_4c[0] = cVar10;
      bVar2 = false;
      iVar19 = 1;
LAB_000310c8:
      iVar22 = iVar26 + iVar19;
      if (iVar21 <= iVar26 + iVar19) goto LAB_00031188;
LAB_000310dc:
      pcVar7 = acStack_4c;
      pcVar20 = (char *)(iVar13 + iVar26);
      do {
        while( true ) {
          pcVar17 = pcVar7 + 1;
          if (!bVar2) break;
          cVar10 = (**(code **)(puVar3 + 0x854f0))((int)*pcVar7);
          *pcVar20 = cVar10;
          pcVar7 = pcVar17;
          pcVar20 = pcVar20 + 1;
          if ((int)(acStack_4c + iVar24 + (1 - (int)pcVar17)) < 1) goto LAB_00031148;
        }
        *pcVar20 = *pcVar7;
        pcVar20 = pcVar20 + 1;
        pcVar7 = pcVar17;
      } while (0 < (int)(acStack_4c + iVar24 + (1 - (int)pcVar17)));
LAB_00031148:
      cVar10 = *pcVar14;
      if (iVar24 < 0) {
        iVar24 = 0;
      }
      iVar26 = iVar24 + iVar26 + 1;
      pcVar7 = pcVar14;
    }
  }
  pcVar25 = *(code **)(puVar3 + 0x85264);
  *(undefined1 *)(iVar13 + iVar26) = 0;
  iVar21 = (*pcVar25)(iVar13);
  safefree(iVar13);
  param_1[5] = iVar21;
  iVar13 = (**(code **)(puVar3 + 0x854e4))(iVar21,*(int *)(puVar3 + 0x85214) + -0x702c,0);
  if (iVar13 == 0) {
LAB_00031314:
    iVar13 = 2;
  }
  else {
    iVar21 = conf_get_int(param_1[7],0x79);
    (**(code **)(puVar3 + 0x85f20))(iVar13);
    if (iVar21 == -1) {
      piVar8 = (int *)param_1[6];
      iVar13 = (**(code **)(puVar3 + 0x854f4))
                         (piVar8,param_1[5],*(int *)(puVar3 + 0x854a8) + 0xab0,param_1);
      if (iVar13 < 0) {
        param_1[1] = 1;
        goto LAB_000312d0;
      }
    }
    else {
      if (iVar21 == 1) goto LAB_00031314;
      iVar13 = 1;
    }
  }
  FUN_00030ab0(param_1,iVar13);
  piVar8 = param_1;
LAB_000312d0:
  if (iStack_2c != *piVar5) {
    pcVar25 = *(code **)(puVar3 + 0x85d9c);
    (*pcVar25)();
    if (*piVar8 != 0) {
      (**(code **)(pcVar25 + 0x84ac8))();
      *piVar8 = 0;
    }
    piVar8[1] = 0;
    return;
  }
  return;
}

