
xz_ret xz_dec_lzma2_run(xz_dec_lzma2 *s,xz_buf *b)

{
                    /* WARNING: Subroutine does not return */
  __x86_get_pc_thunk_di();
}



undefined4 FUN_00084c5e(void)

{
  uint uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  undefined1 *puVar11;
  int unaff_EDI;
  undefined4 *puVar12;
  undefined1 *puVar13;
  uint uVar14;
  byte bVar15;
  undefined8 uVar16;
  uint local_2c;
  uint local_24;
  
  bVar15 = 0;
  uVar16 = FUN_00027c55();
  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);
  puVar3 = (undefined4 *)uVar16;
  uVar14 = piVar9[1];
  local_2c = piVar9[2];
  uVar6 = puVar3[0x10];
  do {
    if (uVar14 < local_2c) {
LAB_00084c99:
      do {
      } while (8 < uVar6);
                    /* WARNING: Could not recover jumptable at 0x00084ca9. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();
      return uVar4;
    }
    if (uVar6 != 7) {
      return 0;
    }
    uVar6 = puVar3[0x13];
    iVar7 = *piVar9;
    local_24 = puVar3[0x12];
    uVar5 = piVar9[5] - piVar9[4];
    if (local_24 < uVar5) {
      iVar10 = puVar3[0xb];
      iVar8 = puVar3[8];
      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;
    }
    else {
      iVar10 = puVar3[0xb];
      iVar8 = puVar3[8];
      local_24 = uVar5;
      if (uVar5 < (uint)(iVar10 - iVar8)) {
LAB_00084d8f:
        iVar10 = local_24 + iVar8;
      }
    }
    puVar3[10] = iVar10;
    uVar5 = local_2c - uVar14;
    iVar10 = puVar3[0x1bb9];
    if ((iVar10 == 0) && (uVar6 != 0)) {
joined_r0x00084f76:
      if (0x14 < uVar5) {
        puVar3[3] = iVar7;
        puVar3[4] = uVar14;
        iVar7 = local_2c - 0x15;
        if (uVar6 + 0x15 <= uVar5) {
          iVar7 = uVar14 + uVar6;
        }
        puVar3[5] = iVar7;
        cVar2 = FUN_0008400e();
        if (cVar2 == '\0') {
          return 7;
        }
        uVar14 = puVar3[4];
        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {
          return 7;
        }
        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];
        puVar3[0x13] = uVar6;
        piVar9[1] = uVar14;
        uVar5 = piVar9[2] - uVar14;
        if (0x14 < uVar5) goto LAB_00084e1c;
        iVar7 = *piVar9;
      }
      if (uVar6 < uVar5) {
        uVar5 = uVar6;
      }
      puVar11 = (undefined1 *)(iVar7 + uVar14);
      puVar12 = puVar3 + 0x1bba;
      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {
        *(undefined1 *)puVar12 = *puVar11;
        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;
        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);
      }
      puVar3[0x1bb9] = uVar5;
      piVar9[1] = piVar9[1] + uVar5;
    }
    else {
      if (uVar6 - iVar10 <= uVar5) {
        uVar5 = uVar6 - iVar10;
      }
      if (0x2aU - iVar10 < uVar5) {
        uVar5 = 0x2aU - iVar10;
      }
      puVar12 = puVar3 + 0x1bba;
      puVar11 = (undefined1 *)(iVar7 + uVar14);
      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);
      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {
        *puVar13 = *puVar11;
        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;
        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;
      }
      uVar6 = puVar3[0x1bb9] + uVar5;
      if (uVar6 == puVar3[0x13]) {
        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);
        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {
          *puVar11 = 0;
          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;
        }
        puVar3[5] = puVar3[0x1bb9] + uVar5;
LAB_00084d51:
        puVar3[3] = puVar12;
        puVar3[4] = 0;
        cVar2 = FUN_0008400e();
        if (cVar2 == '\0') {
          return 7;
        }
        uVar1 = puVar3[4];
        uVar14 = puVar3[0x1bb9];
        if (uVar5 + uVar14 < uVar1) {
          return 7;
        }
        uVar6 = puVar3[0x13] - uVar1;
        puVar3[0x13] = uVar6;
        if (uVar14 <= uVar1) {
          uVar14 = (uVar1 + piVar9[1]) - uVar14;
          piVar9[1] = uVar14;
          puVar3[0x1bb9] = 0;
          local_2c = piVar9[2];
          uVar5 = local_2c - uVar14;
          iVar7 = *piVar9;
          goto joined_r0x00084f76;
        }
        puVar3[0x1bb9] = uVar14 - uVar1;
        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);
      }
      else {
        if (0x14 < uVar6) {
          puVar3[5] = uVar6 - 0x15;
          goto LAB_00084d51;
        }
        puVar3[0x1bb9] = uVar6;
        piVar9[1] = piVar9[1] + uVar5;
      }
    }
LAB_00084e1c:
    iVar7 = puVar3[8];
    iVar10 = puVar3[7];
    if (iVar7 == puVar3[0xb]) {
      puVar3[8] = 0;
    }
    puVar11 = (undefined1 *)(puVar3[6] + iVar10);
    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);
    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {
      *puVar13 = *puVar11;
      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;
      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;
    }
    puVar3[7] = puVar3[8];
    iVar8 = (iVar7 - iVar10) + piVar9[4];
    piVar9[4] = iVar8;
    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;
    puVar3[0x12] = iVar7;
    if (iVar7 == 0) {
      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {
        return 7;
      }
      *puVar3 = 0xffffffff;
      puVar3[2] = 5;
      puVar3[0x10] = 0;
      uVar6 = 0;
      if ((uint)piVar9[2] <= (uint)piVar9[1]) {
        return 0;
      }
      goto LAB_00084c99;
    }
    if (piVar9[5] == iVar8) {
      return 0;
    }
    uVar14 = piVar9[1];
    local_2c = piVar9[2];
    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {
      return 0;
    }
    uVar6 = puVar3[0x10];
  } while( true );
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
SUB ESP,0x1c
CALL 0x00027c55
ADD EDI,0x56db6
MOV dword ptr [ESP + 0xc],EDI
MOV EBP,EAX
MOV dword ptr [ESP + 0x4],EDX
MOV ESI,dword ptr [EDX + 0x4]
MOV EDI,dword ptr [EDX + 0x8]
MOV EBX,dword ptr [EAX + 0x40]
MOV dword ptr [ESP],EDI
MOV EDI,ESI
CMP EDI,dword ptr [ESP]
JNC 0x00085425
MOV EDX,EDI
MOV ECX,EBX
MOV EBX,dword ptr [ESP + 0x4]
CMP ECX,0x8
JA 0x00084c99
MOV EAX,dword ptr [ESP + 0xc]
ADD EAX,dword ptr [EAX + ECX*0x4 + 0xfffea98c]
JMP EAX
MOV EAX,dword ptr [ECX + 0x14]
MOV EDX,dword ptr [EBP + 0x48]
SUB EAX,dword ptr [ECX + 0x10]
MOV dword ptr [ESP + 0x8],EAX
CMP EAX,EDX
JA 0x00084d77
MOV EDX,dword ptr [EBP + 0x2c]
MOV ECX,dword ptr [EBP + 0x20]
MOV EAX,EDX
SUB EAX,ECX
CMP dword ptr [ESP + 0x8],EAX
JC 0x00084d8f
MOV dword ptr [EBP + 0x28],EDX
MOV EAX,dword ptr [ESP]
SUB EAX,EDI
MOV EDX,dword ptr [EBP + 0x6ee4]
TEST EDX,EDX
JZ 0x00084d9a
MOV ECX,0x2a
SUB ECX,EDX
SUB EBX,EDX
CMP EBX,EAX
JA 0x00084ee0
CMP EBX,ECX
JA 0x00084eea
LEA EAX,[EBP + 0x6ee8]
MOV dword ptr [ESP],EAX
ADD EDX,EAX
ADD ESI,EDI
MOV EDI,EDX
MOV ECX,EBX
MOVSB.REP ES:EDI,ESI
MOV EDX,dword ptr [EBP + 0x6ee4]
ADD EDX,EBX
CMP EDX,dword ptr [EBP + 0x4c]
JNZ 0x00084ef1
MOV ECX,0x3f
SUB ECX,EDX
ADD EDX,EAX
XOR EAX,EAX
MOV EDI,EDX
STOSB.REP ES:EDI
MOV EAX,dword ptr [EBP + 0x6ee4]
ADD EAX,EBX
MOV dword ptr [EBP + 0x14],EAX
MOV ESI,dword ptr [ESP]
MOV dword ptr [EBP + 0xc],ESI
MOV dword ptr [EBP + 0x10],0x0
MOV EAX,EBP
CALL 0x0008400e
TEST AL,AL
JNZ 0x00084f15
MOV EAX,0x7
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV dword ptr [ESP + 0x8],EDX
MOV EDX,dword ptr [EBP + 0x2c]
MOV ECX,dword ptr [EBP + 0x20]
MOV EAX,EDX
SUB EAX,ECX
CMP dword ptr [ESP + 0x8],EAX
JNC 0x00084ce1
MOV EDX,dword ptr [ESP + 0x8]
ADD EDX,ECX
JMP 0x00084ce1
TEST EBX,EBX
JZ 0x00084cf7
CMP EAX,0x14
JBE 0x00084df9
MOV dword ptr [EBP + 0xc],ESI
MOV dword ptr [EBP + 0x10],EDI
LEA EDX,[EBX + 0x15]
MOV ECX,dword ptr [ESP]
SUB ECX,0x15
CMP EDX,EAX
JA 0x00084dbd
LEA ECX,[EDI + EBX*0x1]
MOV dword ptr [EBP + 0x14],ECX
MOV EAX,EBP
CALL 0x0008400e
TEST AL,AL
JZ 0x00084d6a
MOV EDI,dword ptr [EBP + 0x10]
MOV ECX,dword ptr [ESP + 0x4]
MOV EBX,dword ptr [ECX + 0x4]
MOV EAX,dword ptr [EBP + 0x4c]
MOV EDX,EDI
SUB EDX,EBX
CMP EDX,EAX
JA 0x00084d6a
SUB EBX,EDI
ADD EBX,EAX
MOV dword ptr [EBP + 0x4c],EBX
MOV dword ptr [ECX + 0x4],EDI
MOV EAX,dword ptr [ECX + 0x8]
MOV dword ptr [ESP],EAX
SUB EAX,EDI
CMP EAX,0x14
JA 0x00084e1c
MOV ESI,dword ptr [ECX]
CMP EAX,EBX
JA 0x00084eb4
LEA EDX,[EBP + 0x6ee8]
ADD ESI,EDI
MOV EDI,EDX
MOV ECX,EAX
MOVSB.REP ES:EDI,ESI
MOV dword ptr [EBP + 0x6ee4],EAX
MOV EDI,dword ptr [ESP + 0x4]
ADD dword ptr [EDI + 0x4],EAX
MOV EBX,dword ptr [EBP + 0x20]
MOV EAX,dword ptr [EBP + 0x1c]
CMP EBX,dword ptr [EBP + 0x2c]
JNZ 0x00084e2e
MOV dword ptr [EBP + 0x20],0x0
MOV EDX,EBX
SUB EDX,EAX
MOV ESI,dword ptr [ESP + 0x4]
MOV ECX,dword ptr [ESI + 0x10]
MOV EDI,dword ptr [ESI + 0xc]
ADD EDI,ECX
MOV ECX,dword ptr [EBP + 0x18]
ADD ECX,EAX
MOV ESI,ECX
MOV ECX,EDX
MOVSB.REP ES:EDI,ESI
MOV ECX,dword ptr [EBP + 0x20]
MOV dword ptr [EBP + 0x1c],ECX
MOV ESI,dword ptr [ESP + 0x4]
ADD EDX,dword ptr [ESI + 0x10]
MOV dword ptr [ESI + 0x10],EDX
ADD EAX,dword ptr [EBP + 0x48]
SUB EAX,EBX
MOV dword ptr [EBP + 0x48],EAX
JNZ 0x00084ebb
MOV EDX,dword ptr [EBP + 0x4c]
TEST EDX,EDX
JNZ 0x00084d6a
MOV EAX,dword ptr [EBP + 0x68]
TEST EAX,EAX
JNZ 0x00084d6a
MOV EBX,dword ptr [EBP + 0x4]
TEST EBX,EBX
JNZ 0x00084d6a
MOV dword ptr [EBP],0xffffffff
MOV dword ptr [EBP + 0x8],0x5
MOV dword ptr [EBP + 0x40],0x0
MOV EDI,dword ptr [ESI + 0x4]
MOV EAX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP],EAX
CMP EAX,EDI
JA 0x00084c91
XOR EAX,EAX
ADD ESP,0x1c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,EBX
JMP 0x00084e01
CMP dword ptr [ESI + 0x14],EDX
JZ 0x00084eaa
MOV EDI,dword ptr [ESI + 0x4]
MOV EAX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP],EAX
CMP EDI,EAX
JNZ 0x00084ed8
MOV EAX,dword ptr [EBP + 0x4c]
CMP dword ptr [EBP + 0x6ee4],EAX
JC 0x00084eaa
MOV EBX,dword ptr [EBP + 0x40]
JMP 0x00084c88
MOV EBX,EAX
CMP EBX,ECX
JBE 0x00084d10
MOV EBX,ECX
JMP 0x00084d10
CMP EDX,0x14
JA 0x00084f08
MOV dword ptr [EBP + 0x6ee4],EDX
MOV EAX,dword ptr [ESP + 0x4]
ADD dword ptr [EAX + 0x4],EBX
JMP 0x00084e1c
SUB EDX,0x15
MOV dword ptr [EBP + 0x14],EDX
MOV ESI,EAX
JMP 0x00084d51
MOV EDI,dword ptr [EBP + 0x10]
MOV EAX,dword ptr [EBP + 0x6ee4]
ADD EBX,EAX
CMP EDI,EBX
JA 0x00084d6a
MOV EBX,dword ptr [EBP + 0x4c]
SUB EBX,EDI
MOV dword ptr [EBP + 0x4c],EBX
CMP EDI,EAX
JNC 0x00084f53
SUB EAX,EDI
MOV dword ptr [EBP + 0x6ee4],EAX
PUSH ECX
PUSH EAX
ADD EDI,ESI
PUSH EDI
PUSH ESI
MOV EBX,dword ptr [ESP + 0x1c]
CALL 0x00016260
ADD ESP,0x10
JMP 0x00084e1c
MOV ESI,dword ptr [ESP + 0x4]
ADD EDI,dword ptr [ESI + 0x4]
SUB EDI,EAX
MOV dword ptr [ESI + 0x4],EDI
MOV dword ptr [EBP + 0x6ee4],0x0
MOV EAX,dword ptr [ESI + 0x8]
MOV dword ptr [ESP],EAX
SUB EAX,EDI
MOV ESI,dword ptr [ESI]
CMP EAX,0x14
JBE 0x00084df9
JMP 0x00084da7
CMP EBX,0x7
JNZ 0x00084eaa
MOV EBX,dword ptr [EBP + 0x4c]
MOV EAX,dword ptr [ESP + 0x4]
MOV ESI,dword ptr [EAX]
MOV ECX,EAX
JMP 0x00084cb8
(translation_unit "undefined4 FUN_00084c5e(void)\n\n{\n  uint uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  undefined4 *puVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  byte bVar15;\n  undefined8 uVar16;\n  uint local_2c;\n  uint local_24;\n  \n  bVar15 = 0;\n  uVar16 = FUN_00027c55();\n  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);\n  puVar3 = (undefined4 *)uVar16;\n  uVar14 = piVar9[1];\n  local_2c = piVar9[2];\n  uVar6 = puVar3[0x10];\n  do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    /* WARNING: Could not recover jumptable at 0x00084ca9. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );\n}\n\n" (function_definition "undefined4 FUN_00084c5e(void)\n\n{\n  uint uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  undefined4 *puVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  byte bVar15;\n  undefined8 uVar16;\n  uint local_2c;\n  uint local_24;\n  \n  bVar15 = 0;\n  uVar16 = FUN_00027c55();\n  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);\n  puVar3 = (undefined4 *)uVar16;\n  uVar14 = piVar9[1];\n  local_2c = piVar9[2];\n  uVar6 = puVar3[0x10];\n  do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    /* WARNING: Could not recover jumptable at 0x00084ca9. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );\n}" type_identifier (function_declarator "FUN_00084c5e(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  undefined4 *puVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  byte bVar15;\n  undefined8 uVar16;\n  uint local_2c;\n  uint local_24;\n  \n  bVar15 = 0;\n  uVar16 = FUN_00027c55();\n  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);\n  puVar3 = (undefined4 *)uVar16;\n  uVar14 = piVar9[1];\n  local_2c = piVar9[2];\n  uVar6 = puVar3[0x10];\n  do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    /* WARNING: Could not recover jumptable at 0x00084ca9. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = FUN_00027c55();" (assignment_expression "uVar16 = FUN_00027c55()" identifier = (call_expression "FUN_00027c55()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar9 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "piVar9 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)uVar16;" (assignment_expression "puVar3 = (undefined4 *)uVar16" identifier = (cast_expression "(undefined4 *)uVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar14 = piVar9[1];" (assignment_expression "uVar14 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "local_2c = piVar9[2];" (assignment_expression "local_2c = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar3[0x10];" (assignment_expression "uVar6 = puVar3[0x10]" identifier = (subscript_expression "puVar3[0x10]" identifier [ number_literal ])) ;) (do_statement "do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    /* WARNING: Could not recover jumptable at 0x00084ca9. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );" do (compound_statement "{\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    /* WARNING: Could not recover jumptable at 0x00084ca9. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  }" { (if_statement "if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    /* WARNING: Could not recover jumptable at 0x00084ca9. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }" if (parenthesized_expression "(uVar14 < local_2c)" ( (binary_expression "uVar14 < local_2c" identifier < identifier) )) (compound_statement "{\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    /* WARNING: Could not recover jumptable at 0x00084ca9. Too many branches */\n                    /* WARNING: Treating indirect jump as call */\n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }" { (labeled_statement "LAB_00084c99:\n      do {\n      } while (8 < uVar6);" statement_identifier : (do_statement "do {\n      } while (8 < uVar6);" do (compound_statement "{\n      }" { }) while (parenthesized_expression "(8 < uVar6)" ( (binary_expression "8 < uVar6" number_literal < identifier) )) ;)) comment comment (expression_statement "uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();" (assignment_expression "uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))()" identifier = (call_expression "(*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))()" (parenthesized_expression "(*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))" ( (pointer_expression "*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4))" * (cast_expression "(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4))" ( (binary_expression "unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)" (binary_expression "unaff_EDI + 0x56db6" identifier + number_literal) + (pointer_expression "*(int *)(unaff_EDI + 0x41742 + uVar6 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x41742 + uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x41742 + uVar6 * 4)" ( (binary_expression "unaff_EDI + 0x41742 + uVar6 * 4" (binary_expression "unaff_EDI + 0x41742" identifier + number_literal) + (binary_expression "uVar6 * 4" identifier * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (uVar6 != 7) {\n      return 0;\n    }" if (parenthesized_expression "(uVar6 != 7)" ( (binary_expression "uVar6 != 7" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar6 = puVar3[0x13];" (assignment_expression "uVar6 = puVar3[0x13]" identifier = (subscript_expression "puVar3[0x13]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *piVar9;" (assignment_expression "iVar7 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "local_24 = puVar3[0x12];" (assignment_expression "local_24 = puVar3[0x12]" identifier = (subscript_expression "puVar3[0x12]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = piVar9[5] - piVar9[4];" (assignment_expression "uVar5 = piVar9[5] - piVar9[4]" identifier = (binary_expression "piVar9[5] - piVar9[4]" (subscript_expression "piVar9[5]" identifier [ number_literal ]) - (subscript_expression "piVar9[4]" identifier [ number_literal ]))) ;) (if_statement "if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }" if (parenthesized_expression "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) )) (compound_statement "{\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }" { (expression_statement "iVar10 = puVar3[0xb];" (assignment_expression "iVar10 = puVar3[0xb]" identifier = (subscript_expression "puVar3[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = puVar3[8];" (assignment_expression "iVar8 = puVar3[8]" identifier = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;) (if_statement "if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;" if (parenthesized_expression "(local_24 < (uint)(iVar10 - iVar8))" ( (binary_expression "local_24 < (uint)(iVar10 - iVar8)" identifier < (call_expression "(uint)(iVar10 - iVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 - iVar8)" ( (binary_expression "iVar10 - iVar8" identifier - identifier) )))) )) (goto_statement "goto LAB_00084d8f;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }" else (compound_statement "{\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }" { (expression_statement "iVar10 = puVar3[0xb];" (assignment_expression "iVar10 = puVar3[0xb]" identifier = (subscript_expression "puVar3[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = puVar3[8];" (assignment_expression "iVar8 = puVar3[8]" identifier = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;) (expression_statement "local_24 = uVar5;" (assignment_expression "local_24 = uVar5" identifier = identifier) ;) (if_statement "if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }" if (parenthesized_expression "(uVar5 < (uint)(iVar10 - iVar8))" ( (binary_expression "uVar5 < (uint)(iVar10 - iVar8)" identifier < (call_expression "(uint)(iVar10 - iVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 - iVar8)" ( (binary_expression "iVar10 - iVar8" identifier - identifier) )))) )) (compound_statement "{\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }" { (labeled_statement "LAB_00084d8f:\n        iVar10 = local_24 + iVar8;" statement_identifier : (expression_statement "iVar10 = local_24 + iVar8;" (assignment_expression "iVar10 = local_24 + iVar8" identifier = (binary_expression "local_24 + iVar8" identifier + identifier)) ;)) })) }))) (expression_statement "puVar3[10] = iVar10;" (assignment_expression "puVar3[10] = iVar10" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = local_2c - uVar14;" (assignment_expression "uVar5 = local_2c - uVar14" identifier = (binary_expression "local_2c - uVar14" identifier - identifier)) ;) (expression_statement "iVar10 = puVar3[0x1bb9];" (assignment_expression "iVar10 = puVar3[0x1bb9]" identifier = (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ])) ;) (if_statement "if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }" if (parenthesized_expression "((iVar10 == 0) && (uVar6 != 0))" ( (binary_expression "(iVar10 == 0) && (uVar6 != 0)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) ))) )) (compound_statement "{\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }" { (labeled_statement "joined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }" statement_identifier : (if_statement "if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }" if (parenthesized_expression "(0x14 < uVar5)" ( (binary_expression "0x14 < uVar5" number_literal < identifier) )) (compound_statement "{\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }" { (expression_statement "puVar3[3] = iVar7;" (assignment_expression "puVar3[3] = iVar7" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = uVar14;" (assignment_expression "puVar3[4] = uVar14" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = local_2c - 0x15;" (assignment_expression "iVar7 = local_2c - 0x15" identifier = (binary_expression "local_2c - 0x15" identifier - number_literal)) ;) (if_statement "if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }" if (parenthesized_expression "(uVar6 + 0x15 <= uVar5)" ( (binary_expression "uVar6 + 0x15 <= uVar5" (binary_expression "uVar6 + 0x15" identifier + number_literal) <= identifier) )) (compound_statement "{\n          iVar7 = uVar14 + uVar6;\n        }" { (expression_statement "iVar7 = uVar14 + uVar6;" (assignment_expression "iVar7 = uVar14 + uVar6" identifier = (binary_expression "uVar14 + uVar6" identifier + identifier)) ;) })) (expression_statement "puVar3[5] = iVar7;" (assignment_expression "puVar3[5] = iVar7" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar2 = FUN_0008400e();" (assignment_expression "cVar2 = FUN_0008400e()" identifier = (call_expression "FUN_0008400e()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 == '\0') {\n          return 7;\n        }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return 7;\n        }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar14 = puVar3[4];" (assignment_expression "uVar14 = puVar3[4]" identifier = (subscript_expression "puVar3[4]" identifier [ number_literal ])) ;) (if_statement "if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }" if (parenthesized_expression "((uint)puVar3[0x13] < uVar14 - piVar9[1])" ( (binary_expression "(uint)puVar3[0x13] < uVar14 - piVar9[1]" (cast_expression "(uint)puVar3[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar3[0x13]" identifier [ number_literal ])) < (binary_expression "uVar14 - piVar9[1]" identifier - (subscript_expression "piVar9[1]" identifier [ number_literal ]))) )) (compound_statement "{\n          return 7;\n        }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];" (assignment_expression "uVar6 = (piVar9[1] - uVar14) + puVar3[0x13]" identifier = (binary_expression "(piVar9[1] - uVar14) + puVar3[0x13]" (parenthesized_expression "(piVar9[1] - uVar14)" ( (binary_expression "piVar9[1] - uVar14" (subscript_expression "piVar9[1]" identifier [ number_literal ]) - identifier) )) + (subscript_expression "puVar3[0x13]" identifier [ number_literal ]))) ;) (expression_statement "puVar3[0x13] = uVar6;" (assignment_expression "puVar3[0x13] = uVar6" (subscript_expression "puVar3[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar9[1] = uVar14;" (assignment_expression "piVar9[1] = uVar14" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = piVar9[2] - uVar14;" (assignment_expression "uVar5 = piVar9[2] - uVar14" identifier = (binary_expression "piVar9[2] - uVar14" (subscript_expression "piVar9[2]" identifier [ number_literal ]) - identifier)) ;) (if_statement "if (0x14 < uVar5) goto LAB_00084e1c;" if (parenthesized_expression "(0x14 < uVar5)" ( (binary_expression "0x14 < uVar5" number_literal < identifier) )) (goto_statement "goto LAB_00084e1c;" goto statement_identifier ;)) (expression_statement "iVar7 = *piVar9;" (assignment_expression "iVar7 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) }))) (if_statement "if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }" if (parenthesized_expression "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) )) (compound_statement "{\n        uVar5 = uVar6;\n      }" { (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" identifier = identifier) ;) })) (expression_statement "puVar11 = (undefined1 *)(iVar7 + uVar14);" (assignment_expression "puVar11 = (undefined1 *)(iVar7 + uVar14)" identifier = (cast_expression "(undefined1 *)(iVar7 + uVar14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar14)" ( (binary_expression "iVar7 + uVar14" identifier + identifier) )))) ;) (expression_statement "puVar12 = puVar3 + 0x1bba;" (assignment_expression "puVar12 = puVar3 + 0x1bba" identifier = (binary_expression "puVar3 + 0x1bba" identifier + number_literal)) ;) (for_statement "for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }" for ( (assignment_expression "uVar6 = uVar5" identifier = identifier) ; (binary_expression "uVar6 != 0" identifier != number_literal) ; (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ) (compound_statement "{\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }" { (expression_statement "*(undefined1 *)puVar12 = *puVar11;" (assignment_expression "*(undefined1 *)puVar12 = *puVar11" (pointer_expression "*(undefined1 *)puVar12" * (cast_expression "(undefined1 *)puVar12" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);" (assignment_expression "puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1)" identifier = (cast_expression "(undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + (uint)bVar15 * -2 + 1)" ( (binary_expression "(int)puVar12 + (uint)bVar15 * -2 + 1" (binary_expression "(int)puVar12 + (uint)bVar15 * -2" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) })) (expression_statement "puVar3[0x1bb9] = uVar5;" (assignment_expression "puVar3[0x1bb9] = uVar5" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar9[1] = piVar9[1] + uVar5;" (assignment_expression "piVar9[1] = piVar9[1] + uVar5" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (binary_expression "piVar9[1] + uVar5" (subscript_expression "piVar9[1]" identifier [ number_literal ]) + identifier)) ;) }) (else_clause "else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }" else (compound_statement "{\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }" { (if_statement "if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }" if (parenthesized_expression "(uVar6 - iVar10 <= uVar5)" ( (binary_expression "uVar6 - iVar10 <= uVar5" (binary_expression "uVar6 - iVar10" identifier - identifier) <= identifier) )) (compound_statement "{\n        uVar5 = uVar6 - iVar10;\n      }" { (expression_statement "uVar5 = uVar6 - iVar10;" (assignment_expression "uVar5 = uVar6 - iVar10" identifier = (binary_expression "uVar6 - iVar10" identifier - identifier)) ;) })) (if_statement "if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }" if (parenthesized_expression "(0x2aU - iVar10 < uVar5)" ( (binary_expression "0x2aU - iVar10 < uVar5" (binary_expression "0x2aU - iVar10" number_literal - identifier) < identifier) )) (compound_statement "{\n        uVar5 = 0x2aU - iVar10;\n      }" { (expression_statement "uVar5 = 0x2aU - iVar10;" (assignment_expression "uVar5 = 0x2aU - iVar10" identifier = (binary_expression "0x2aU - iVar10" number_literal - identifier)) ;) })) (expression_statement "puVar12 = puVar3 + 0x1bba;" (assignment_expression "puVar12 = puVar3 + 0x1bba" identifier = (binary_expression "puVar3 + 0x1bba" identifier + number_literal)) ;) (expression_statement "puVar11 = (undefined1 *)(iVar7 + uVar14);" (assignment_expression "puVar11 = (undefined1 *)(iVar7 + uVar14)" identifier = (cast_expression "(undefined1 *)(iVar7 + uVar14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar14)" ( (binary_expression "iVar7 + uVar14" identifier + identifier) )))) ;) (expression_statement "puVar13 = (undefined1 *)(iVar10 + (int)puVar12);" (assignment_expression "puVar13 = (undefined1 *)(iVar10 + (int)puVar12)" identifier = (cast_expression "(undefined1 *)(iVar10 + (int)puVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + (int)puVar12)" ( (binary_expression "iVar10 + (int)puVar12" identifier + (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (for_statement "for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }" for ( (assignment_expression "uVar6 = uVar5" identifier = identifier) ; (binary_expression "uVar6 != 0" identifier != number_literal) ; (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }" { (expression_statement "*puVar13 = *puVar11;" (assignment_expression "*puVar13 = *puVar11" (pointer_expression "*puVar13" * identifier) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar15 * -2 + 1" (binary_expression "puVar13 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "uVar6 = puVar3[0x1bb9] + uVar5;" (assignment_expression "uVar6 = puVar3[0x1bb9] + uVar5" identifier = (binary_expression "puVar3[0x1bb9] + uVar5" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) + identifier)) ;) (if_statement "if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }" if (parenthesized_expression "(uVar6 == puVar3[0x13])" ( (binary_expression "uVar6 == puVar3[0x13]" identifier == (subscript_expression "puVar3[0x13]" identifier [ number_literal ])) )) (compound_statement "{\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }" { (expression_statement "puVar11 = (undefined1 *)(uVar6 + (int)puVar12);" (assignment_expression "puVar11 = (undefined1 *)(uVar6 + (int)puVar12)" identifier = (cast_expression "(undefined1 *)(uVar6 + (int)puVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + (int)puVar12)" ( (binary_expression "uVar6 + (int)puVar12" identifier + (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (for_statement "for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }" for ( (assignment_expression "iVar7 = 0x3f - uVar6" identifier = (binary_expression "0x3f - uVar6" number_literal - identifier)) ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ) (compound_statement "{\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }" { (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar3[5] = puVar3[0x1bb9] + uVar5;" (assignment_expression "puVar3[5] = puVar3[0x1bb9] + uVar5" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = (binary_expression "puVar3[0x1bb9] + uVar5" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) + identifier)) ;) (labeled_statement "LAB_00084d51:\n        puVar3[3] = puVar12;" statement_identifier : (expression_statement "puVar3[3] = puVar12;" (assignment_expression "puVar3[3] = puVar12" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "cVar2 = FUN_0008400e();" (assignment_expression "cVar2 = FUN_0008400e()" identifier = (call_expression "FUN_0008400e()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 == '\0') {\n          return 7;\n        }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return 7;\n        }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar1 = puVar3[4];" (assignment_expression "uVar1 = puVar3[4]" identifier = (subscript_expression "puVar3[4]" identifier [ number_literal ])) ;) (expression_statement "uVar14 = puVar3[0x1bb9];" (assignment_expression "uVar14 = puVar3[0x1bb9]" identifier = (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ])) ;) (if_statement "if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }" if (parenthesized_expression "(uVar5 + uVar14 < uVar1)" ( (binary_expression "uVar5 + uVar14 < uVar1" (binary_expression "uVar5 + uVar14" identifier + identifier) < identifier) )) (compound_statement "{\n          return 7;\n        }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar6 = puVar3[0x13] - uVar1;" (assignment_expression "uVar6 = puVar3[0x13] - uVar1" identifier = (binary_expression "puVar3[0x13] - uVar1" (subscript_expression "puVar3[0x13]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "puVar3[0x13] = uVar6;" (assignment_expression "puVar3[0x13] = uVar6" (subscript_expression "puVar3[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }" if (parenthesized_expression "(uVar14 <= uVar1)" ( (binary_expression "uVar14 <= uVar1" identifier <= identifier) )) (compound_statement "{\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }" { (expression_statement "uVar14 = (uVar1 + piVar9[1]) - uVar14;" (assignment_expression "uVar14 = (uVar1 + piVar9[1]) - uVar14" identifier = (binary_expression "(uVar1 + piVar9[1]) - uVar14" (parenthesized_expression "(uVar1 + piVar9[1])" ( (binary_expression "uVar1 + piVar9[1]" identifier + (subscript_expression "piVar9[1]" identifier [ number_literal ])) )) - identifier)) ;) (expression_statement "piVar9[1] = uVar14;" (assignment_expression "piVar9[1] = uVar14" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[0x1bb9] = 0;" (assignment_expression "puVar3[0x1bb9] = 0" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_2c = piVar9[2];" (assignment_expression "local_2c = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = local_2c - uVar14;" (assignment_expression "uVar5 = local_2c - uVar14" identifier = (binary_expression "local_2c - uVar14" identifier - identifier)) ;) (expression_statement "iVar7 = *piVar9;" (assignment_expression "iVar7 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (goto_statement "goto joined_r0x00084f76;" goto statement_identifier ;) })) (expression_statement "puVar3[0x1bb9] = uVar14 - uVar1;" (assignment_expression "puVar3[0x1bb9] = uVar14 - uVar1" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) = (binary_expression "uVar14 - uVar1" identifier - identifier)) ;) (expression_statement "memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);" (call_expression "memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1)" identifier (argument_list "(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1)" ( identifier , (cast_expression "(void *)(uVar1 + (int)puVar12)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + (int)puVar12)" ( (binary_expression "uVar1 + (int)puVar12" identifier + (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ))) , (binary_expression "uVar14 - uVar1" identifier - identifier) ))) ;) }) (else_clause "else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }" else (compound_statement "{\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }" { (if_statement "if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }" if (parenthesized_expression "(0x14 < uVar6)" ( (binary_expression "0x14 < uVar6" number_literal < identifier) )) (compound_statement "{\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }" { (expression_statement "puVar3[5] = uVar6 - 0x15;" (assignment_expression "puVar3[5] = uVar6 - 0x15" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = (binary_expression "uVar6 - 0x15" identifier - number_literal)) ;) (goto_statement "goto LAB_00084d51;" goto statement_identifier ;) })) (expression_statement "puVar3[0x1bb9] = uVar6;" (assignment_expression "puVar3[0x1bb9] = uVar6" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar9[1] = piVar9[1] + uVar5;" (assignment_expression "piVar9[1] = piVar9[1] + uVar5" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (binary_expression "piVar9[1] + uVar5" (subscript_expression "piVar9[1]" identifier [ number_literal ]) + identifier)) ;) }))) }))) (labeled_statement "LAB_00084e1c:\n    iVar7 = puVar3[8];" statement_identifier : (expression_statement "iVar7 = puVar3[8];" (assignment_expression "iVar7 = puVar3[8]" identifier = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;)) (expression_statement "iVar10 = puVar3[7];" (assignment_expression "iVar10 = puVar3[7]" identifier = (subscript_expression "puVar3[7]" identifier [ number_literal ])) ;) (if_statement "if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }" if (parenthesized_expression "(iVar7 == puVar3[0xb])" ( (binary_expression "iVar7 == puVar3[0xb]" identifier == (subscript_expression "puVar3[0xb]" identifier [ number_literal ])) )) (compound_statement "{\n      puVar3[8] = 0;\n    }" { (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar11 = (undefined1 *)(puVar3[6] + iVar10);" (assignment_expression "puVar11 = (undefined1 *)(puVar3[6] + iVar10)" identifier = (cast_expression "(undefined1 *)(puVar3[6] + iVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3[6] + iVar10)" ( (binary_expression "puVar3[6] + iVar10" (subscript_expression "puVar3[6]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);" (assignment_expression "puVar13 = (undefined1 *)(piVar9[3] + piVar9[4])" identifier = (cast_expression "(undefined1 *)(piVar9[3] + piVar9[4])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar9[3] + piVar9[4])" ( (binary_expression "piVar9[3] + piVar9[4]" (subscript_expression "piVar9[3]" identifier [ number_literal ]) + (subscript_expression "piVar9[4]" identifier [ number_literal ])) )))) ;) (for_statement "for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }" for ( (assignment_expression "iVar8 = iVar7 - iVar10" identifier = (binary_expression "iVar7 - iVar10" identifier - identifier)) ; (binary_expression "iVar8 != 0" identifier != number_literal) ; (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ) (compound_statement "{\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }" { (expression_statement "*puVar13 = *puVar11;" (assignment_expression "*puVar13 = *puVar11" (pointer_expression "*puVar13" * identifier) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar15 * -2 + 1" (binary_expression "puVar13 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar3[7] = puVar3[8];" (assignment_expression "puVar3[7] = puVar3[8]" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = (iVar7 - iVar10) + piVar9[4];" (assignment_expression "iVar8 = (iVar7 - iVar10) + piVar9[4]" identifier = (binary_expression "(iVar7 - iVar10) + piVar9[4]" (parenthesized_expression "(iVar7 - iVar10)" ( (binary_expression "iVar7 - iVar10" identifier - identifier) )) + (subscript_expression "piVar9[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar9[4] = iVar8;" (assignment_expression "piVar9[4] = iVar8" (subscript_expression "piVar9[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = (iVar10 + puVar3[0x12]) - iVar7;" (assignment_expression "iVar7 = (iVar10 + puVar3[0x12]) - iVar7" identifier = (binary_expression "(iVar10 + puVar3[0x12]) - iVar7" (parenthesized_expression "(iVar10 + puVar3[0x12])" ( (binary_expression "iVar10 + puVar3[0x12]" identifier + (subscript_expression "puVar3[0x12]" identifier [ number_literal ])) )) - identifier)) ;) (expression_statement "puVar3[0x12] = iVar7;" (assignment_expression "puVar3[0x12] = iVar7" (subscript_expression "puVar3[0x12]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }" { (if_statement "if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }" if (parenthesized_expression "(((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0))" ( (binary_expression "((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)" (parenthesized_expression "((puVar3[0x13] != 0) || (puVar3[0x1a] != 0))" ( (binary_expression "(puVar3[0x13] != 0) || (puVar3[0x1a] != 0)" (parenthesized_expression "(puVar3[0x13] != 0)" ( (binary_expression "puVar3[0x13] != 0" (subscript_expression "puVar3[0x13]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(puVar3[0x1a] != 0)" ( (binary_expression "puVar3[0x1a] != 0" (subscript_expression "puVar3[0x1a]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "(puVar3[1] != 0)" ( (binary_expression "puVar3[1] != 0" (subscript_expression "puVar3[1]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "*puVar3 = 0xffffffff;" (assignment_expression "*puVar3 = 0xffffffff" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "puVar3[2] = 5;" (assignment_expression "puVar3[2] = 5" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0x10] = 0;" (assignment_expression "puVar3[0x10] = 0" (subscript_expression "puVar3[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (if_statement "if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }" if (parenthesized_expression "((uint)piVar9[2] <= (uint)piVar9[1])" ( (binary_expression "(uint)piVar9[2] <= (uint)piVar9[1]" (cast_expression "(uint)piVar9[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar9[2]" identifier [ number_literal ])) <= (cast_expression "(uint)piVar9[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00084c99;" goto statement_identifier ;) })) (if_statement "if (piVar9[5] == iVar8) {\n      return 0;\n    }" if (parenthesized_expression "(piVar9[5] == iVar8)" ( (binary_expression "piVar9[5] == iVar8" (subscript_expression "piVar9[5]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar14 = piVar9[1];" (assignment_expression "uVar14 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "local_2c = piVar9[2];" (assignment_expression "local_2c = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (if_statement "if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }" if (parenthesized_expression "((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13]))" ( (binary_expression "(uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])" (parenthesized_expression "(uVar14 == local_2c)" ( (binary_expression "uVar14 == local_2c" identifier == identifier) )) && (parenthesized_expression "((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])" ( (binary_expression "(uint)puVar3[0x1bb9] < (uint)puVar3[0x13]" (cast_expression "(uint)puVar3[0x1bb9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ])) < (cast_expression "(uint)puVar3[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar3[0x13]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar6 = puVar3[0x10];" (assignment_expression "uVar6 = puVar3[0x10]" identifier = (subscript_expression "puVar3[0x10]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit "xz_ret xz_dec_lzma2_run(xz_dec_lzma2 *s,xz_buf *b)\n\n{\n                    /* WARNING: Subroutine does not return */\n  __x86_get_pc_thunk_di();\n}\n\n" (function_definition "xz_ret xz_dec_lzma2_run(xz_dec_lzma2 *s,xz_buf *b)\n\n{\n                    /* WARNING: Subroutine does not return */\n  __x86_get_pc_thunk_di();\n}" type_identifier (function_declarator "xz_dec_lzma2_run(xz_dec_lzma2 *s,xz_buf *b)" identifier (parameter_list "(xz_dec_lzma2 *s,xz_buf *b)" ( (parameter_declaration "xz_dec_lzma2 *s" type_identifier (pointer_declarator "*s" * identifier)) , (parameter_declaration "xz_buf *b" type_identifier (pointer_declarator "*b" * identifier)) ))) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n  __x86_get_pc_thunk_di();\n}" { comment (expression_statement "__x86_get_pc_thunk_di();" (call_expression "__x86_get_pc_thunk_di()" identifier (argument_list "()" ( ))) ;) })))
(translation_unit "undefined4 FUN_00084c5e(void)\n\n{\n  uint uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  undefined4 *puVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  byte bVar15;\n  undefined8 uVar16;\n  uint local_2c;\n  uint local_24;\n  \n  bVar15 = 0;\n  uVar16 = FUN_00027c55();\n  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);\n  puVar3 = (undefined4 *)uVar16;\n  uVar14 = piVar9[1];\n  local_2c = piVar9[2];\n  uVar6 = puVar3[0x10];\n  do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );\n}\n\n" (function_definition "undefined4 FUN_00084c5e(void)\n\n{\n  uint uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  undefined4 *puVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  byte bVar15;\n  undefined8 uVar16;\n  uint local_2c;\n  uint local_24;\n  \n  bVar15 = 0;\n  uVar16 = FUN_00027c55();\n  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);\n  puVar3 = (undefined4 *)uVar16;\n  uVar14 = piVar9[1];\n  local_2c = piVar9[2];\n  uVar6 = puVar3[0x10];\n  do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );\n}" type_identifier (function_declarator "FUN_00084c5e(void)" identifier (parameter_list "(void)" ( (parameter_declaration "void" primitive_type) ))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  undefined4 *puVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  byte bVar15;\n  undefined8 uVar16;\n  uint local_2c;\n  uint local_24;\n  \n  bVar15 = 0;\n  uVar16 = FUN_00027c55();\n  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);\n  puVar3 = (undefined4 *)uVar16;\n  uVar14 = piVar9[1];\n  local_2c = piVar9[2];\n  uVar6 = puVar3[0x10];\n  do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "char cVar2;" primitive_type identifier ;) (declaration "undefined4 *puVar3;" type_identifier (pointer_declarator "*puVar3" * identifier) ;) (declaration "undefined4 uVar4;" type_identifier identifier ;) (declaration "uint uVar5;" type_identifier identifier ;) (declaration "uint uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int *piVar9;" primitive_type (pointer_declarator "*piVar9" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined1 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "int unaff_EDI;" primitive_type identifier ;) (declaration "undefined4 *puVar12;" type_identifier (pointer_declarator "*puVar12" * identifier) ;) (declaration "undefined1 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "undefined8 uVar16;" type_identifier identifier ;) (declaration "uint local_2c;" type_identifier identifier ;) (declaration "uint local_24;" type_identifier identifier ;) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" identifier = number_literal) ;) (expression_statement "uVar16 = FUN_00027c55();" (assignment_expression "uVar16 = FUN_00027c55()" identifier = (call_expression "FUN_00027c55()" identifier (argument_list "()" ( )))) ;) (expression_statement "piVar9 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "piVar9 = (int *)((ulonglong)uVar16 >> 0x20)" identifier = (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" ( (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" ( (type_descriptor "ulonglong" type_identifier) ) identifier) >> number_literal) )))) ;) (expression_statement "puVar3 = (undefined4 *)uVar16;" (assignment_expression "puVar3 = (undefined4 *)uVar16" identifier = (cast_expression "(undefined4 *)uVar16" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ;) (expression_statement "uVar14 = piVar9[1];" (assignment_expression "uVar14 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "local_2c = piVar9[2];" (assignment_expression "local_2c = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (expression_statement "uVar6 = puVar3[0x10];" (assignment_expression "uVar6 = puVar3[0x10]" identifier = (subscript_expression "puVar3[0x10]" identifier [ number_literal ])) ;) (do_statement "do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );" do (compound_statement "{\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  }" { (if_statement "if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }" if (parenthesized_expression "(uVar14 < local_2c)" ( (binary_expression "uVar14 < local_2c" identifier < identifier) )) (compound_statement "{\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }" { (labeled_statement "LAB_00084c99:\n      do {\n      } while (8 < uVar6);" statement_identifier : (do_statement "do {\n      } while (8 < uVar6);" do (compound_statement "{\n      }" { }) while (parenthesized_expression "(8 < uVar6)" ( (binary_expression "8 < uVar6" number_literal < identifier) )) ;)) (expression_statement "uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();" (assignment_expression "uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))()" identifier = (call_expression "(*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))()" (parenthesized_expression "(*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))" ( (pointer_expression "*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4))" * (cast_expression "(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4))" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4))" ( (binary_expression "unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)" (binary_expression "unaff_EDI + 0x56db6" identifier + number_literal) + (pointer_expression "*(int *)(unaff_EDI + 0x41742 + uVar6 * 4)" * (cast_expression "(int *)(unaff_EDI + 0x41742 + uVar6 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(unaff_EDI + 0x41742 + uVar6 * 4)" ( (binary_expression "unaff_EDI + 0x41742 + uVar6 * 4" (binary_expression "unaff_EDI + 0x41742" identifier + number_literal) + (binary_expression "uVar6 * 4" identifier * number_literal)) ))))) )))) )) (argument_list "()" ( )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (uVar6 != 7) {\n      return 0;\n    }" if (parenthesized_expression "(uVar6 != 7)" ( (binary_expression "uVar6 != 7" identifier != number_literal) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar6 = puVar3[0x13];" (assignment_expression "uVar6 = puVar3[0x13]" identifier = (subscript_expression "puVar3[0x13]" identifier [ number_literal ])) ;) (expression_statement "iVar7 = *piVar9;" (assignment_expression "iVar7 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (expression_statement "local_24 = puVar3[0x12];" (assignment_expression "local_24 = puVar3[0x12]" identifier = (subscript_expression "puVar3[0x12]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = piVar9[5] - piVar9[4];" (assignment_expression "uVar5 = piVar9[5] - piVar9[4]" identifier = (binary_expression "piVar9[5] - piVar9[4]" (subscript_expression "piVar9[5]" identifier [ number_literal ]) - (subscript_expression "piVar9[4]" identifier [ number_literal ]))) ;) (if_statement "if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }" if (parenthesized_expression "(local_24 < uVar5)" ( (binary_expression "local_24 < uVar5" identifier < identifier) )) (compound_statement "{\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }" { (expression_statement "iVar10 = puVar3[0xb];" (assignment_expression "iVar10 = puVar3[0xb]" identifier = (subscript_expression "puVar3[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = puVar3[8];" (assignment_expression "iVar8 = puVar3[8]" identifier = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;) (if_statement "if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;" if (parenthesized_expression "(local_24 < (uint)(iVar10 - iVar8))" ( (binary_expression "local_24 < (uint)(iVar10 - iVar8)" identifier < (call_expression "(uint)(iVar10 - iVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 - iVar8)" ( (binary_expression "iVar10 - iVar8" identifier - identifier) )))) )) (goto_statement "goto LAB_00084d8f;" goto statement_identifier ;)) }) (else_clause "else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }" else (compound_statement "{\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }" { (expression_statement "iVar10 = puVar3[0xb];" (assignment_expression "iVar10 = puVar3[0xb]" identifier = (subscript_expression "puVar3[0xb]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = puVar3[8];" (assignment_expression "iVar8 = puVar3[8]" identifier = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;) (expression_statement "local_24 = uVar5;" (assignment_expression "local_24 = uVar5" identifier = identifier) ;) (if_statement "if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }" if (parenthesized_expression "(uVar5 < (uint)(iVar10 - iVar8))" ( (binary_expression "uVar5 < (uint)(iVar10 - iVar8)" identifier < (call_expression "(uint)(iVar10 - iVar8)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar10 - iVar8)" ( (binary_expression "iVar10 - iVar8" identifier - identifier) )))) )) (compound_statement "{\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }" { (labeled_statement "LAB_00084d8f:\n        iVar10 = local_24 + iVar8;" statement_identifier : (expression_statement "iVar10 = local_24 + iVar8;" (assignment_expression "iVar10 = local_24 + iVar8" identifier = (binary_expression "local_24 + iVar8" identifier + identifier)) ;)) })) }))) (expression_statement "puVar3[10] = iVar10;" (assignment_expression "puVar3[10] = iVar10" (subscript_expression "puVar3[10]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = local_2c - uVar14;" (assignment_expression "uVar5 = local_2c - uVar14" identifier = (binary_expression "local_2c - uVar14" identifier - identifier)) ;) (expression_statement "iVar10 = puVar3[0x1bb9];" (assignment_expression "iVar10 = puVar3[0x1bb9]" identifier = (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ])) ;) (if_statement "if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }" if (parenthesized_expression "((iVar10 == 0) && (uVar6 != 0))" ( (binary_expression "(iVar10 == 0) && (uVar6 != 0)" (parenthesized_expression "(iVar10 == 0)" ( (binary_expression "iVar10 == 0" identifier == number_literal) )) && (parenthesized_expression "(uVar6 != 0)" ( (binary_expression "uVar6 != 0" identifier != number_literal) ))) )) (compound_statement "{\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }" { (labeled_statement "joined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }" statement_identifier : (if_statement "if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }" if (parenthesized_expression "(0x14 < uVar5)" ( (binary_expression "0x14 < uVar5" number_literal < identifier) )) (compound_statement "{\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }" { (expression_statement "puVar3[3] = iVar7;" (assignment_expression "puVar3[3] = iVar7" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[4] = uVar14;" (assignment_expression "puVar3[4] = uVar14" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = local_2c - 0x15;" (assignment_expression "iVar7 = local_2c - 0x15" identifier = (binary_expression "local_2c - 0x15" identifier - number_literal)) ;) (if_statement "if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }" if (parenthesized_expression "(uVar6 + 0x15 <= uVar5)" ( (binary_expression "uVar6 + 0x15 <= uVar5" (binary_expression "uVar6 + 0x15" identifier + number_literal) <= identifier) )) (compound_statement "{\n          iVar7 = uVar14 + uVar6;\n        }" { (expression_statement "iVar7 = uVar14 + uVar6;" (assignment_expression "iVar7 = uVar14 + uVar6" identifier = (binary_expression "uVar14 + uVar6" identifier + identifier)) ;) })) (expression_statement "puVar3[5] = iVar7;" (assignment_expression "puVar3[5] = iVar7" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = identifier) ;) (expression_statement "cVar2 = FUN_0008400e();" (assignment_expression "cVar2 = FUN_0008400e()" identifier = (call_expression "FUN_0008400e()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 == '\0') {\n          return 7;\n        }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return 7;\n        }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar14 = puVar3[4];" (assignment_expression "uVar14 = puVar3[4]" identifier = (subscript_expression "puVar3[4]" identifier [ number_literal ])) ;) (if_statement "if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }" if (parenthesized_expression "((uint)puVar3[0x13] < uVar14 - piVar9[1])" ( (binary_expression "(uint)puVar3[0x13] < uVar14 - piVar9[1]" (cast_expression "(uint)puVar3[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar3[0x13]" identifier [ number_literal ])) < (binary_expression "uVar14 - piVar9[1]" identifier - (subscript_expression "piVar9[1]" identifier [ number_literal ]))) )) (compound_statement "{\n          return 7;\n        }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];" (assignment_expression "uVar6 = (piVar9[1] - uVar14) + puVar3[0x13]" identifier = (binary_expression "(piVar9[1] - uVar14) + puVar3[0x13]" (parenthesized_expression "(piVar9[1] - uVar14)" ( (binary_expression "piVar9[1] - uVar14" (subscript_expression "piVar9[1]" identifier [ number_literal ]) - identifier) )) + (subscript_expression "puVar3[0x13]" identifier [ number_literal ]))) ;) (expression_statement "puVar3[0x13] = uVar6;" (assignment_expression "puVar3[0x13] = uVar6" (subscript_expression "puVar3[0x13]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar9[1] = uVar14;" (assignment_expression "piVar9[1] = uVar14" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "uVar5 = piVar9[2] - uVar14;" (assignment_expression "uVar5 = piVar9[2] - uVar14" identifier = (binary_expression "piVar9[2] - uVar14" (subscript_expression "piVar9[2]" identifier [ number_literal ]) - identifier)) ;) (if_statement "if (0x14 < uVar5) goto LAB_00084e1c;" if (parenthesized_expression "(0x14 < uVar5)" ( (binary_expression "0x14 < uVar5" number_literal < identifier) )) (goto_statement "goto LAB_00084e1c;" goto statement_identifier ;)) (expression_statement "iVar7 = *piVar9;" (assignment_expression "iVar7 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) }))) (if_statement "if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }" if (parenthesized_expression "(uVar6 < uVar5)" ( (binary_expression "uVar6 < uVar5" identifier < identifier) )) (compound_statement "{\n        uVar5 = uVar6;\n      }" { (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" identifier = identifier) ;) })) (expression_statement "puVar11 = (undefined1 *)(iVar7 + uVar14);" (assignment_expression "puVar11 = (undefined1 *)(iVar7 + uVar14)" identifier = (cast_expression "(undefined1 *)(iVar7 + uVar14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar14)" ( (binary_expression "iVar7 + uVar14" identifier + identifier) )))) ;) (expression_statement "puVar12 = puVar3 + 0x1bba;" (assignment_expression "puVar12 = puVar3 + 0x1bba" identifier = (binary_expression "puVar3 + 0x1bba" identifier + number_literal)) ;) (for_statement "for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }" for ( (assignment_expression "uVar6 = uVar5" identifier = identifier) ; (binary_expression "uVar6 != 0" identifier != number_literal) ; (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ) (compound_statement "{\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }" { (expression_statement "*(undefined1 *)puVar12 = *puVar11;" (assignment_expression "*(undefined1 *)puVar12 = *puVar11" (pointer_expression "*(undefined1 *)puVar12" * (cast_expression "(undefined1 *)puVar12" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);" (assignment_expression "puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1)" identifier = (cast_expression "(undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)puVar12 + (uint)bVar15 * -2 + 1)" ( (binary_expression "(int)puVar12 + (uint)bVar15 * -2 + 1" (binary_expression "(int)puVar12 + (uint)bVar15 * -2" (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier) + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal) )))) ;) })) (expression_statement "puVar3[0x1bb9] = uVar5;" (assignment_expression "puVar3[0x1bb9] = uVar5" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar9[1] = piVar9[1] + uVar5;" (assignment_expression "piVar9[1] = piVar9[1] + uVar5" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (binary_expression "piVar9[1] + uVar5" (subscript_expression "piVar9[1]" identifier [ number_literal ]) + identifier)) ;) }) (else_clause "else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }" else (compound_statement "{\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }" { (if_statement "if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }" if (parenthesized_expression "(uVar6 - iVar10 <= uVar5)" ( (binary_expression "uVar6 - iVar10 <= uVar5" (binary_expression "uVar6 - iVar10" identifier - identifier) <= identifier) )) (compound_statement "{\n        uVar5 = uVar6 - iVar10;\n      }" { (expression_statement "uVar5 = uVar6 - iVar10;" (assignment_expression "uVar5 = uVar6 - iVar10" identifier = (binary_expression "uVar6 - iVar10" identifier - identifier)) ;) })) (if_statement "if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }" if (parenthesized_expression "(0x2aU - iVar10 < uVar5)" ( (binary_expression "0x2aU - iVar10 < uVar5" (binary_expression "0x2aU - iVar10" number_literal - identifier) < identifier) )) (compound_statement "{\n        uVar5 = 0x2aU - iVar10;\n      }" { (expression_statement "uVar5 = 0x2aU - iVar10;" (assignment_expression "uVar5 = 0x2aU - iVar10" identifier = (binary_expression "0x2aU - iVar10" number_literal - identifier)) ;) })) (expression_statement "puVar12 = puVar3 + 0x1bba;" (assignment_expression "puVar12 = puVar3 + 0x1bba" identifier = (binary_expression "puVar3 + 0x1bba" identifier + number_literal)) ;) (expression_statement "puVar11 = (undefined1 *)(iVar7 + uVar14);" (assignment_expression "puVar11 = (undefined1 *)(iVar7 + uVar14)" identifier = (cast_expression "(undefined1 *)(iVar7 + uVar14)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + uVar14)" ( (binary_expression "iVar7 + uVar14" identifier + identifier) )))) ;) (expression_statement "puVar13 = (undefined1 *)(iVar10 + (int)puVar12);" (assignment_expression "puVar13 = (undefined1 *)(iVar10 + (int)puVar12)" identifier = (cast_expression "(undefined1 *)(iVar10 + (int)puVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + (int)puVar12)" ( (binary_expression "iVar10 + (int)puVar12" identifier + (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (for_statement "for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }" for ( (assignment_expression "uVar6 = uVar5" identifier = identifier) ; (binary_expression "uVar6 != 0" identifier != number_literal) ; (assignment_expression "uVar6 = uVar6 - 1" identifier = (binary_expression "uVar6 - 1" identifier - number_literal)) ) (compound_statement "{\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }" { (expression_statement "*puVar13 = *puVar11;" (assignment_expression "*puVar13 = *puVar11" (pointer_expression "*puVar13" * identifier) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar15 * -2 + 1" (binary_expression "puVar13 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "uVar6 = puVar3[0x1bb9] + uVar5;" (assignment_expression "uVar6 = puVar3[0x1bb9] + uVar5" identifier = (binary_expression "puVar3[0x1bb9] + uVar5" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) + identifier)) ;) (if_statement "if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }" if (parenthesized_expression "(uVar6 == puVar3[0x13])" ( (binary_expression "uVar6 == puVar3[0x13]" identifier == (subscript_expression "puVar3[0x13]" identifier [ number_literal ])) )) (compound_statement "{\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }" { (expression_statement "puVar11 = (undefined1 *)(uVar6 + (int)puVar12);" (assignment_expression "puVar11 = (undefined1 *)(uVar6 + (int)puVar12)" identifier = (cast_expression "(undefined1 *)(uVar6 + (int)puVar12)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar6 + (int)puVar12)" ( (binary_expression "uVar6 + (int)puVar12" identifier + (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) )))) ;) (for_statement "for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }" for ( (assignment_expression "iVar7 = 0x3f - uVar6" identifier = (binary_expression "0x3f - uVar6" number_literal - identifier)) ; (binary_expression "iVar7 != 0" identifier != number_literal) ; (assignment_expression "iVar7 = iVar7 + -1" identifier = (binary_expression "iVar7 + -1" identifier + number_literal)) ) (compound_statement "{\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }" { (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" * identifier) = number_literal) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar3[5] = puVar3[0x1bb9] + uVar5;" (assignment_expression "puVar3[5] = puVar3[0x1bb9] + uVar5" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = (binary_expression "puVar3[0x1bb9] + uVar5" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) + identifier)) ;) (labeled_statement "LAB_00084d51:\n        puVar3[3] = puVar12;" statement_identifier : (expression_statement "puVar3[3] = puVar12;" (assignment_expression "puVar3[3] = puVar12" (subscript_expression "puVar3[3]" identifier [ number_literal ]) = identifier) ;)) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "cVar2 = FUN_0008400e();" (assignment_expression "cVar2 = FUN_0008400e()" identifier = (call_expression "FUN_0008400e()" identifier (argument_list "()" ( )))) ;) (if_statement "if (cVar2 == '\0') {\n          return 7;\n        }" if (parenthesized_expression "(cVar2 == '\0')" ( (binary_expression "cVar2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n          return 7;\n        }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar1 = puVar3[4];" (assignment_expression "uVar1 = puVar3[4]" identifier = (subscript_expression "puVar3[4]" identifier [ number_literal ])) ;) (expression_statement "uVar14 = puVar3[0x1bb9];" (assignment_expression "uVar14 = puVar3[0x1bb9]" identifier = (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ])) ;) (if_statement "if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }" if (parenthesized_expression "(uVar5 + uVar14 < uVar1)" ( (binary_expression "uVar5 + uVar14 < uVar1" (binary_expression "uVar5 + uVar14" identifier + identifier) < identifier) )) (compound_statement "{\n          return 7;\n        }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "uVar6 = puVar3[0x13] - uVar1;" (assignment_expression "uVar6 = puVar3[0x13] - uVar1" identifier = (binary_expression "puVar3[0x13] - uVar1" (subscript_expression "puVar3[0x13]" identifier [ number_literal ]) - identifier)) ;) (expression_statement "puVar3[0x13] = uVar6;" (assignment_expression "puVar3[0x13] = uVar6" (subscript_expression "puVar3[0x13]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }" if (parenthesized_expression "(uVar14 <= uVar1)" ( (binary_expression "uVar14 <= uVar1" identifier <= identifier) )) (compound_statement "{\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }" { (expression_statement "uVar14 = (uVar1 + piVar9[1]) - uVar14;" (assignment_expression "uVar14 = (uVar1 + piVar9[1]) - uVar14" identifier = (binary_expression "(uVar1 + piVar9[1]) - uVar14" (parenthesized_expression "(uVar1 + piVar9[1])" ( (binary_expression "uVar1 + piVar9[1]" identifier + (subscript_expression "piVar9[1]" identifier [ number_literal ])) )) - identifier)) ;) (expression_statement "piVar9[1] = uVar14;" (assignment_expression "piVar9[1] = uVar14" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar3[0x1bb9] = 0;" (assignment_expression "puVar3[0x1bb9] = 0" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "local_2c = piVar9[2];" (assignment_expression "local_2c = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (expression_statement "uVar5 = local_2c - uVar14;" (assignment_expression "uVar5 = local_2c - uVar14" identifier = (binary_expression "local_2c - uVar14" identifier - identifier)) ;) (expression_statement "iVar7 = *piVar9;" (assignment_expression "iVar7 = *piVar9" identifier = (pointer_expression "*piVar9" * identifier)) ;) (goto_statement "goto joined_r0x00084f76;" goto statement_identifier ;) })) (expression_statement "puVar3[0x1bb9] = uVar14 - uVar1;" (assignment_expression "puVar3[0x1bb9] = uVar14 - uVar1" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) = (binary_expression "uVar14 - uVar1" identifier - identifier)) ;) (expression_statement "memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);" (call_expression "memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1)" identifier (argument_list "(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1)" ( identifier , (cast_expression "(void *)(uVar1 + (int)puVar12)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(uVar1 + (int)puVar12)" ( (binary_expression "uVar1 + (int)puVar12" identifier + (cast_expression "(int)puVar12" ( (type_descriptor "int" primitive_type) ) identifier)) ))) , (binary_expression "uVar14 - uVar1" identifier - identifier) ))) ;) }) (else_clause "else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }" else (compound_statement "{\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }" { (if_statement "if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }" if (parenthesized_expression "(0x14 < uVar6)" ( (binary_expression "0x14 < uVar6" number_literal < identifier) )) (compound_statement "{\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }" { (expression_statement "puVar3[5] = uVar6 - 0x15;" (assignment_expression "puVar3[5] = uVar6 - 0x15" (subscript_expression "puVar3[5]" identifier [ number_literal ]) = (binary_expression "uVar6 - 0x15" identifier - number_literal)) ;) (goto_statement "goto LAB_00084d51;" goto statement_identifier ;) })) (expression_statement "puVar3[0x1bb9] = uVar6;" (assignment_expression "puVar3[0x1bb9] = uVar6" (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ]) = identifier) ;) (expression_statement "piVar9[1] = piVar9[1] + uVar5;" (assignment_expression "piVar9[1] = piVar9[1] + uVar5" (subscript_expression "piVar9[1]" identifier [ number_literal ]) = (binary_expression "piVar9[1] + uVar5" (subscript_expression "piVar9[1]" identifier [ number_literal ]) + identifier)) ;) }))) }))) (labeled_statement "LAB_00084e1c:\n    iVar7 = puVar3[8];" statement_identifier : (expression_statement "iVar7 = puVar3[8];" (assignment_expression "iVar7 = puVar3[8]" identifier = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;)) (expression_statement "iVar10 = puVar3[7];" (assignment_expression "iVar10 = puVar3[7]" identifier = (subscript_expression "puVar3[7]" identifier [ number_literal ])) ;) (if_statement "if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }" if (parenthesized_expression "(iVar7 == puVar3[0xb])" ( (binary_expression "iVar7 == puVar3[0xb]" identifier == (subscript_expression "puVar3[0xb]" identifier [ number_literal ])) )) (compound_statement "{\n      puVar3[8] = 0;\n    }" { (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" identifier [ number_literal ]) = number_literal) ;) })) (expression_statement "puVar11 = (undefined1 *)(puVar3[6] + iVar10);" (assignment_expression "puVar11 = (undefined1 *)(puVar3[6] + iVar10)" identifier = (cast_expression "(undefined1 *)(puVar3[6] + iVar10)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar3[6] + iVar10)" ( (binary_expression "puVar3[6] + iVar10" (subscript_expression "puVar3[6]" identifier [ number_literal ]) + identifier) )))) ;) (expression_statement "puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);" (assignment_expression "puVar13 = (undefined1 *)(piVar9[3] + piVar9[4])" identifier = (cast_expression "(undefined1 *)(piVar9[3] + piVar9[4])" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(piVar9[3] + piVar9[4])" ( (binary_expression "piVar9[3] + piVar9[4]" (subscript_expression "piVar9[3]" identifier [ number_literal ]) + (subscript_expression "piVar9[4]" identifier [ number_literal ])) )))) ;) (for_statement "for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }" for ( (assignment_expression "iVar8 = iVar7 - iVar10" identifier = (binary_expression "iVar7 - iVar10" identifier - identifier)) ; (binary_expression "iVar8 != 0" identifier != number_literal) ; (assignment_expression "iVar8 = iVar8 + -1" identifier = (binary_expression "iVar8 + -1" identifier + number_literal)) ) (compound_statement "{\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }" { (expression_statement "*puVar13 = *puVar11;" (assignment_expression "*puVar13 = *puVar11" (pointer_expression "*puVar13" * identifier) = (pointer_expression "*puVar11" * identifier)) ;) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "puVar13 = puVar13 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar15 * -2 + 1" identifier = (binary_expression "puVar13 + (uint)bVar15 * -2 + 1" (binary_expression "puVar13 + (uint)bVar15 * -2" identifier + (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" ( (type_descriptor "uint" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) })) (expression_statement "puVar3[7] = puVar3[8];" (assignment_expression "puVar3[7] = puVar3[8]" (subscript_expression "puVar3[7]" identifier [ number_literal ]) = (subscript_expression "puVar3[8]" identifier [ number_literal ])) ;) (expression_statement "iVar8 = (iVar7 - iVar10) + piVar9[4];" (assignment_expression "iVar8 = (iVar7 - iVar10) + piVar9[4]" identifier = (binary_expression "(iVar7 - iVar10) + piVar9[4]" (parenthesized_expression "(iVar7 - iVar10)" ( (binary_expression "iVar7 - iVar10" identifier - identifier) )) + (subscript_expression "piVar9[4]" identifier [ number_literal ]))) ;) (expression_statement "piVar9[4] = iVar8;" (assignment_expression "piVar9[4] = iVar8" (subscript_expression "piVar9[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "iVar7 = (iVar10 + puVar3[0x12]) - iVar7;" (assignment_expression "iVar7 = (iVar10 + puVar3[0x12]) - iVar7" identifier = (binary_expression "(iVar10 + puVar3[0x12]) - iVar7" (parenthesized_expression "(iVar10 + puVar3[0x12])" ( (binary_expression "iVar10 + puVar3[0x12]" identifier + (subscript_expression "puVar3[0x12]" identifier [ number_literal ])) )) - identifier)) ;) (expression_statement "puVar3[0x12] = iVar7;" (assignment_expression "puVar3[0x12] = iVar7" (subscript_expression "puVar3[0x12]" identifier [ number_literal ]) = identifier) ;) (if_statement "if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }" { (if_statement "if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }" if (parenthesized_expression "(((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0))" ( (binary_expression "((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)" (parenthesized_expression "((puVar3[0x13] != 0) || (puVar3[0x1a] != 0))" ( (binary_expression "(puVar3[0x13] != 0) || (puVar3[0x1a] != 0)" (parenthesized_expression "(puVar3[0x13] != 0)" ( (binary_expression "puVar3[0x13] != 0" (subscript_expression "puVar3[0x13]" identifier [ number_literal ]) != number_literal) )) || (parenthesized_expression "(puVar3[0x1a] != 0)" ( (binary_expression "puVar3[0x1a] != 0" (subscript_expression "puVar3[0x1a]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "(puVar3[1] != 0)" ( (binary_expression "puVar3[1] != 0" (subscript_expression "puVar3[1]" identifier [ number_literal ]) != number_literal) ))) )) (compound_statement "{\n        return 7;\n      }" { (return_statement "return 7;" return number_literal ;) })) (expression_statement "*puVar3 = 0xffffffff;" (assignment_expression "*puVar3 = 0xffffffff" (pointer_expression "*puVar3" * identifier) = number_literal) ;) (expression_statement "puVar3[2] = 5;" (assignment_expression "puVar3[2] = 5" (subscript_expression "puVar3[2]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "puVar3[0x10] = 0;" (assignment_expression "puVar3[0x10] = 0" (subscript_expression "puVar3[0x10]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) (if_statement "if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }" if (parenthesized_expression "((uint)piVar9[2] <= (uint)piVar9[1])" ( (binary_expression "(uint)piVar9[2] <= (uint)piVar9[1]" (cast_expression "(uint)piVar9[2]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar9[2]" identifier [ number_literal ])) <= (cast_expression "(uint)piVar9[1]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "piVar9[1]" identifier [ number_literal ]))) )) (compound_statement "{\n        return 0;\n      }" { (return_statement "return 0;" return number_literal ;) })) (goto_statement "goto LAB_00084c99;" goto statement_identifier ;) })) (if_statement "if (piVar9[5] == iVar8) {\n      return 0;\n    }" if (parenthesized_expression "(piVar9[5] == iVar8)" ( (binary_expression "piVar9[5] == iVar8" (subscript_expression "piVar9[5]" identifier [ number_literal ]) == identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar14 = piVar9[1];" (assignment_expression "uVar14 = piVar9[1]" identifier = (subscript_expression "piVar9[1]" identifier [ number_literal ])) ;) (expression_statement "local_2c = piVar9[2];" (assignment_expression "local_2c = piVar9[2]" identifier = (subscript_expression "piVar9[2]" identifier [ number_literal ])) ;) (if_statement "if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }" if (parenthesized_expression "((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13]))" ( (binary_expression "(uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])" (parenthesized_expression "(uVar14 == local_2c)" ( (binary_expression "uVar14 == local_2c" identifier == identifier) )) && (parenthesized_expression "((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])" ( (binary_expression "(uint)puVar3[0x1bb9] < (uint)puVar3[0x13]" (cast_expression "(uint)puVar3[0x1bb9]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar3[0x1bb9]" identifier [ number_literal ])) < (cast_expression "(uint)puVar3[0x13]" ( (type_descriptor "uint" type_identifier) ) (subscript_expression "puVar3[0x13]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "uVar6 = puVar3[0x10];" (assignment_expression "uVar6 = puVar3[0x10]" identifier = (subscript_expression "puVar3[0x10]" identifier [ number_literal ])) ;) }) while (parenthesized_expression "( true )" ( true )) ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (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 IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) >> LIT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) 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 ])) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (labeled_statement statement_identifier : (do_statement do (compound_statement { }) while (parenthesized_expression ( (binary_expression LIT < IDENT) )) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + (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 IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - (subscript_expression IDENT [ LIT ]))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - IDENT) )))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - IDENT) )))) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;)) })) }))) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (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)) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (binary_expression IDENT - (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT) )) + (subscript_expression IDENT [ LIT ]))) ;) (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 (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (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) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (for_statement for ( (assignment_expression IDENT = IDENT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT) )))) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT - IDENT) <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression LIT - IDENT) < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression LIT - IDENT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (for_statement for ( (assignment_expression IDENT = IDENT) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT - LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression LIT - IDENT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;)) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) < IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + (subscript_expression IDENT [ LIT ])) )) - IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) , (binary_expression IDENT - IDENT) ))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT - LIT)) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) }))) }))) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + (subscript_expression IDENT [ LIT ])) )))) ;) (for_statement for ( (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ; (binary_expression IDENT != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) * LIT)) + LIT)) ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT - IDENT) )) + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + (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 { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) <= (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (compound_statement { (return_statement return LIT ;) })) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) && (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) < (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) }) while (parenthesized_expression ( BOOL )) ;) })))
(function_definition "undefined4 FUN_00084c5e(void)\n\n{\n  uint uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  undefined4 *puVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  byte bVar15;\n  undefined8 uVar16;\n  uint local_2c;\n  uint local_24;\n  \n  bVar15 = 0;\n  uVar16 = FUN_00027c55();\n  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);\n  puVar3 = (undefined4 *)uVar16;\n  uVar14 = piVar9[1];\n  local_2c = piVar9[2];\n  uVar6 = puVar3[0x10];\n  do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );\n}" (type_identifier "undefined4") (function_declarator "FUN_00084c5e(void)" (identifier "FUN_00084c5e") (parameter_list "(void)" (( "(") (parameter_declaration "void" (primitive_type "void")) () ")"))) (compound_statement "{\n  uint uVar1;\n  char cVar2;\n  undefined4 *puVar3;\n  undefined4 uVar4;\n  uint uVar5;\n  uint uVar6;\n  int iVar7;\n  int iVar8;\n  int *piVar9;\n  int iVar10;\n  undefined1 *puVar11;\n  int unaff_EDI;\n  undefined4 *puVar12;\n  undefined1 *puVar13;\n  uint uVar14;\n  byte bVar15;\n  undefined8 uVar16;\n  uint local_2c;\n  uint local_24;\n  \n  bVar15 = 0;\n  uVar16 = FUN_00027c55();\n  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);\n  puVar3 = (undefined4 *)uVar16;\n  uVar14 = piVar9[1];\n  local_2c = piVar9[2];\n  uVar6 = puVar3[0x10];\n  do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "char cVar2;" (primitive_type "char") (identifier "cVar2") (; ";")) (declaration "undefined4 *puVar3;" (type_identifier "undefined4") (pointer_declarator "*puVar3" (* "*") (identifier "puVar3")) (; ";")) (declaration "undefined4 uVar4;" (type_identifier "undefined4") (identifier "uVar4") (; ";")) (declaration "uint uVar5;" (type_identifier "uint") (identifier "uVar5") (; ";")) (declaration "uint uVar6;" (type_identifier "uint") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int *piVar9;" (primitive_type "int") (pointer_declarator "*piVar9" (* "*") (identifier "piVar9")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined1 *puVar11;" (type_identifier "undefined1") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "int unaff_EDI;" (primitive_type "int") (identifier "unaff_EDI") (; ";")) (declaration "undefined4 *puVar12;" (type_identifier "undefined4") (pointer_declarator "*puVar12" (* "*") (identifier "puVar12")) (; ";")) (declaration "undefined1 *puVar13;" (type_identifier "undefined1") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "byte bVar15;" (type_identifier "byte") (identifier "bVar15") (; ";")) (declaration "undefined8 uVar16;" (type_identifier "undefined8") (identifier "uVar16") (; ";")) (declaration "uint local_2c;" (type_identifier "uint") (identifier "local_2c") (; ";")) (declaration "uint local_24;" (type_identifier "uint") (identifier "local_24") (; ";")) (expression_statement "bVar15 = 0;" (assignment_expression "bVar15 = 0" (identifier "bVar15") (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar16 = FUN_00027c55();" (assignment_expression "uVar16 = FUN_00027c55()" (identifier "uVar16") (= "=") (call_expression "FUN_00027c55()" (identifier "FUN_00027c55") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "piVar9 = (int *)((ulonglong)uVar16 >> 0x20);" (assignment_expression "piVar9 = (int *)((ulonglong)uVar16 >> 0x20)" (identifier "piVar9") (= "=") (cast_expression "(int *)((ulonglong)uVar16 >> 0x20)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((ulonglong)uVar16 >> 0x20)" (( "(") (binary_expression "(ulonglong)uVar16 >> 0x20" (cast_expression "(ulonglong)uVar16" (( "(") (type_descriptor "ulonglong" (type_identifier "ulonglong")) () ")") (identifier "uVar16")) (>> ">>") (number_literal "0x20")) () ")")))) (; ";")) (expression_statement "puVar3 = (undefined4 *)uVar16;" (assignment_expression "puVar3 = (undefined4 *)uVar16" (identifier "puVar3") (= "=") (cast_expression "(undefined4 *)uVar16" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "uVar16"))) (; ";")) (expression_statement "uVar14 = piVar9[1];" (assignment_expression "uVar14 = piVar9[1]" (identifier "uVar14") (= "=") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_2c = piVar9[2];" (assignment_expression "local_2c = piVar9[2]" (identifier "local_2c") (= "=") (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar6 = puVar3[0x10];" (assignment_expression "uVar6 = puVar3[0x10]" (identifier "uVar6") (= "=") (subscript_expression "puVar3[0x10]" (identifier "puVar3") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (do_statement "do {\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  } while( true );" (do "do") (compound_statement "{\n    if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }\n    if (uVar6 != 7) {\n      return 0;\n    }\n    uVar6 = puVar3[0x13];\n    iVar7 = *piVar9;\n    local_24 = puVar3[0x12];\n    uVar5 = piVar9[5] - piVar9[4];\n    if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }\n    puVar3[10] = iVar10;\n    uVar5 = local_2c - uVar14;\n    iVar10 = puVar3[0x1bb9];\n    if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }\nLAB_00084e1c:\n    iVar7 = puVar3[8];\n    iVar10 = puVar3[7];\n    if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }\n    puVar11 = (undefined1 *)(puVar3[6] + iVar10);\n    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);\n    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }\n    puVar3[7] = puVar3[8];\n    iVar8 = (iVar7 - iVar10) + piVar9[4];\n    piVar9[4] = iVar8;\n    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;\n    puVar3[0x12] = iVar7;\n    if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }\n    if (piVar9[5] == iVar8) {\n      return 0;\n    }\n    uVar14 = piVar9[1];\n    local_2c = piVar9[2];\n    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }\n    uVar6 = puVar3[0x10];\n  }" ({ "{") (if_statement "if (uVar14 < local_2c) {\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }" (if "if") (parenthesized_expression "(uVar14 < local_2c)" (( "(") (binary_expression "uVar14 < local_2c" (identifier "uVar14") (< "<") (identifier "local_2c")) () ")")) (compound_statement "{\nLAB_00084c99:\n      do {\n      } while (8 < uVar6);\n                    \n                    \n      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();\n      return uVar4;\n    }" ({ "{") (labeled_statement "LAB_00084c99:\n      do {\n      } while (8 < uVar6);" (statement_identifier "LAB_00084c99") (: ":") (do_statement "do {\n      } while (8 < uVar6);" (do "do") (compound_statement "{\n      }" ({ "{") (} "}")) (while "while") (parenthesized_expression "(8 < uVar6)" (( "(") (binary_expression "8 < uVar6" (number_literal "8") (< "<") (identifier "uVar6")) () ")")) (; ";"))) (expression_statement "uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();" (assignment_expression "uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))()" (identifier "uVar4") (= "=") (call_expression "(*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))()" (parenthesized_expression "(*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))" (( "(") (pointer_expression "*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4))" (* "*") (cast_expression "(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4))" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4))" (( "(") (binary_expression "unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)" (binary_expression "unaff_EDI + 0x56db6" (identifier "unaff_EDI") (+ "+") (number_literal "0x56db6")) (+ "+") (pointer_expression "*(int *)(unaff_EDI + 0x41742 + uVar6 * 4)" (* "*") (cast_expression "(int *)(unaff_EDI + 0x41742 + uVar6 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(unaff_EDI + 0x41742 + uVar6 * 4)" (( "(") (binary_expression "unaff_EDI + 0x41742 + uVar6 * 4" (binary_expression "unaff_EDI + 0x41742" (identifier "unaff_EDI") (+ "+") (number_literal "0x41742")) (+ "+") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4"))) () ")"))))) () ")")))) () ")")) (argument_list "()" (( "(") () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (if_statement "if (uVar6 != 7) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(uVar6 != 7)" (( "(") (binary_expression "uVar6 != 7" (identifier "uVar6") (!= "!=") (number_literal "7")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar6 = puVar3[0x13];" (assignment_expression "uVar6 = puVar3[0x13]" (identifier "uVar6") (= "=") (subscript_expression "puVar3[0x13]" (identifier "puVar3") ([ "[") (number_literal "0x13") (] "]"))) (; ";")) (expression_statement "iVar7 = *piVar9;" (assignment_expression "iVar7 = *piVar9" (identifier "iVar7") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (expression_statement "local_24 = puVar3[0x12];" (assignment_expression "local_24 = puVar3[0x12]" (identifier "local_24") (= "=") (subscript_expression "puVar3[0x12]" (identifier "puVar3") ([ "[") (number_literal "0x12") (] "]"))) (; ";")) (expression_statement "uVar5 = piVar9[5] - piVar9[4];" (assignment_expression "uVar5 = piVar9[5] - piVar9[4]" (identifier "uVar5") (= "=") (binary_expression "piVar9[5] - piVar9[4]" (subscript_expression "piVar9[5]" (identifier "piVar9") ([ "[") (number_literal "5") (] "]")) (- "-") (subscript_expression "piVar9[4]" (identifier "piVar9") ([ "[") (number_literal "4") (] "]")))) (; ";")) (if_statement "if (local_24 < uVar5) {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }\n    else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }" (if "if") (parenthesized_expression "(local_24 < uVar5)" (( "(") (binary_expression "local_24 < uVar5" (identifier "local_24") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;\n    }" ({ "{") (expression_statement "iVar10 = puVar3[0xb];" (assignment_expression "iVar10 = puVar3[0xb]" (identifier "iVar10") (= "=") (subscript_expression "puVar3[0xb]" (identifier "puVar3") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "iVar8 = puVar3[8];" (assignment_expression "iVar8 = puVar3[8]" (identifier "iVar8") (= "=") (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]"))) (; ";")) (if_statement "if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;" (if "if") (parenthesized_expression "(local_24 < (uint)(iVar10 - iVar8))" (( "(") (binary_expression "local_24 < (uint)(iVar10 - iVar8)" (identifier "local_24") (< "<") (call_expression "(uint)(iVar10 - iVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar10 - iVar8)" (( "(") (binary_expression "iVar10 - iVar8" (identifier "iVar10") (- "-") (identifier "iVar8")) () ")")))) () ")")) (goto_statement "goto LAB_00084d8f;" (goto "goto") (statement_identifier "LAB_00084d8f") (; ";"))) (} "}")) (else_clause "else {\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }" (else "else") (compound_statement "{\n      iVar10 = puVar3[0xb];\n      iVar8 = puVar3[8];\n      local_24 = uVar5;\n      if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }\n    }" ({ "{") (expression_statement "iVar10 = puVar3[0xb];" (assignment_expression "iVar10 = puVar3[0xb]" (identifier "iVar10") (= "=") (subscript_expression "puVar3[0xb]" (identifier "puVar3") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "iVar8 = puVar3[8];" (assignment_expression "iVar8 = puVar3[8]" (identifier "iVar8") (= "=") (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "local_24 = uVar5;" (assignment_expression "local_24 = uVar5" (identifier "local_24") (= "=") (identifier "uVar5")) (; ";")) (if_statement "if (uVar5 < (uint)(iVar10 - iVar8)) {\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }" (if "if") (parenthesized_expression "(uVar5 < (uint)(iVar10 - iVar8))" (( "(") (binary_expression "uVar5 < (uint)(iVar10 - iVar8)" (identifier "uVar5") (< "<") (call_expression "(uint)(iVar10 - iVar8)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar10 - iVar8)" (( "(") (binary_expression "iVar10 - iVar8" (identifier "iVar10") (- "-") (identifier "iVar8")) () ")")))) () ")")) (compound_statement "{\nLAB_00084d8f:\n        iVar10 = local_24 + iVar8;\n      }" ({ "{") (labeled_statement "LAB_00084d8f:\n        iVar10 = local_24 + iVar8;" (statement_identifier "LAB_00084d8f") (: ":") (expression_statement "iVar10 = local_24 + iVar8;" (assignment_expression "iVar10 = local_24 + iVar8" (identifier "iVar10") (= "=") (binary_expression "local_24 + iVar8" (identifier "local_24") (+ "+") (identifier "iVar8"))) (; ";"))) (} "}"))) (} "}")))) (expression_statement "puVar3[10] = iVar10;" (assignment_expression "puVar3[10] = iVar10" (subscript_expression "puVar3[10]" (identifier "puVar3") ([ "[") (number_literal "10") (] "]")) (= "=") (identifier "iVar10")) (; ";")) (expression_statement "uVar5 = local_2c - uVar14;" (assignment_expression "uVar5 = local_2c - uVar14" (identifier "uVar5") (= "=") (binary_expression "local_2c - uVar14" (identifier "local_2c") (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "iVar10 = puVar3[0x1bb9];" (assignment_expression "iVar10 = puVar3[0x1bb9]" (identifier "iVar10") (= "=") (subscript_expression "puVar3[0x1bb9]" (identifier "puVar3") ([ "[") (number_literal "0x1bb9") (] "]"))) (; ";")) (if_statement "if ((iVar10 == 0) && (uVar6 != 0)) {\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }\n    else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }" (if "if") (parenthesized_expression "((iVar10 == 0) && (uVar6 != 0))" (( "(") (binary_expression "(iVar10 == 0) && (uVar6 != 0)" (parenthesized_expression "(iVar10 == 0)" (( "(") (binary_expression "iVar10 == 0" (identifier "iVar10") (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar6 != 0)" (( "(") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\njoined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }\n      if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar12 = puVar3 + 0x1bba;\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }\n      puVar3[0x1bb9] = uVar5;\n      piVar9[1] = piVar9[1] + uVar5;\n    }" ({ "{") (labeled_statement "joined_r0x00084f76:\n      if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }" (statement_identifier "joined_r0x00084f76") (: ":") (if_statement "if (0x14 < uVar5) {\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }" (if "if") (parenthesized_expression "(0x14 < uVar5)" (( "(") (binary_expression "0x14 < uVar5" (number_literal "0x14") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n        puVar3[3] = iVar7;\n        puVar3[4] = uVar14;\n        iVar7 = local_2c - 0x15;\n        if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }\n        puVar3[5] = iVar7;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar14 = puVar3[4];\n        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }\n        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];\n        puVar3[0x13] = uVar6;\n        piVar9[1] = uVar14;\n        uVar5 = piVar9[2] - uVar14;\n        if (0x14 < uVar5) goto LAB_00084e1c;\n        iVar7 = *piVar9;\n      }" ({ "{") (expression_statement "puVar3[3] = iVar7;" (assignment_expression "puVar3[3] = iVar7" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "puVar3[4] = uVar14;" (assignment_expression "puVar3[4] = uVar14" (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "iVar7 = local_2c - 0x15;" (assignment_expression "iVar7 = local_2c - 0x15" (identifier "iVar7") (= "=") (binary_expression "local_2c - 0x15" (identifier "local_2c") (- "-") (number_literal "0x15"))) (; ";")) (if_statement "if (uVar6 + 0x15 <= uVar5) {\n          iVar7 = uVar14 + uVar6;\n        }" (if "if") (parenthesized_expression "(uVar6 + 0x15 <= uVar5)" (( "(") (binary_expression "uVar6 + 0x15 <= uVar5" (binary_expression "uVar6 + 0x15" (identifier "uVar6") (+ "+") (number_literal "0x15")) (<= "<=") (identifier "uVar5")) () ")")) (compound_statement "{\n          iVar7 = uVar14 + uVar6;\n        }" ({ "{") (expression_statement "iVar7 = uVar14 + uVar6;" (assignment_expression "iVar7 = uVar14 + uVar6" (identifier "iVar7") (= "=") (binary_expression "uVar14 + uVar6" (identifier "uVar14") (+ "+") (identifier "uVar6"))) (; ";")) (} "}"))) (expression_statement "puVar3[5] = iVar7;" (assignment_expression "puVar3[5] = iVar7" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "cVar2 = FUN_0008400e();" (assignment_expression "cVar2 = FUN_0008400e()" (identifier "cVar2") (= "=") (call_expression "FUN_0008400e()" (identifier "FUN_0008400e") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar2 == '\0') {\n          return 7;\n        }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          return 7;\n        }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "uVar14 = puVar3[4];" (assignment_expression "uVar14 = puVar3[4]" (identifier "uVar14") (= "=") (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (if_statement "if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {\n          return 7;\n        }" (if "if") (parenthesized_expression "((uint)puVar3[0x13] < uVar14 - piVar9[1])" (( "(") (binary_expression "(uint)puVar3[0x13] < uVar14 - piVar9[1]" (cast_expression "(uint)puVar3[0x13]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar3[0x13]" (identifier "puVar3") ([ "[") (number_literal "0x13") (] "]"))) (< "<") (binary_expression "uVar14 - piVar9[1]" (identifier "uVar14") (- "-") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n          return 7;\n        }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];" (assignment_expression "uVar6 = (piVar9[1] - uVar14) + puVar3[0x13]" (identifier "uVar6") (= "=") (binary_expression "(piVar9[1] - uVar14) + puVar3[0x13]" (parenthesized_expression "(piVar9[1] - uVar14)" (( "(") (binary_expression "piVar9[1] - uVar14" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (- "-") (identifier "uVar14")) () ")")) (+ "+") (subscript_expression "puVar3[0x13]" (identifier "puVar3") ([ "[") (number_literal "0x13") (] "]")))) (; ";")) (expression_statement "puVar3[0x13] = uVar6;" (assignment_expression "puVar3[0x13] = uVar6" (subscript_expression "puVar3[0x13]" (identifier "puVar3") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "piVar9[1] = uVar14;" (assignment_expression "piVar9[1] = uVar14" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "uVar5 = piVar9[2] - uVar14;" (assignment_expression "uVar5 = piVar9[2] - uVar14" (identifier "uVar5") (= "=") (binary_expression "piVar9[2] - uVar14" (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]")) (- "-") (identifier "uVar14"))) (; ";")) (if_statement "if (0x14 < uVar5) goto LAB_00084e1c;" (if "if") (parenthesized_expression "(0x14 < uVar5)" (( "(") (binary_expression "0x14 < uVar5" (number_literal "0x14") (< "<") (identifier "uVar5")) () ")")) (goto_statement "goto LAB_00084e1c;" (goto "goto") (statement_identifier "LAB_00084e1c") (; ";"))) (expression_statement "iVar7 = *piVar9;" (assignment_expression "iVar7 = *piVar9" (identifier "iVar7") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (} "}")))) (if_statement "if (uVar6 < uVar5) {\n        uVar5 = uVar6;\n      }" (if "if") (parenthesized_expression "(uVar6 < uVar5)" (( "(") (binary_expression "uVar6 < uVar5" (identifier "uVar6") (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n        uVar5 = uVar6;\n      }" ({ "{") (expression_statement "uVar5 = uVar6;" (assignment_expression "uVar5 = uVar6" (identifier "uVar5") (= "=") (identifier "uVar6")) (; ";")) (} "}"))) (expression_statement "puVar11 = (undefined1 *)(iVar7 + uVar14);" (assignment_expression "puVar11 = (undefined1 *)(iVar7 + uVar14)" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)(iVar7 + uVar14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + uVar14)" (( "(") (binary_expression "iVar7 + uVar14" (identifier "iVar7") (+ "+") (identifier "uVar14")) () ")")))) (; ";")) (expression_statement "puVar12 = puVar3 + 0x1bba;" (assignment_expression "puVar12 = puVar3 + 0x1bba" (identifier "puVar12") (= "=") (binary_expression "puVar3 + 0x1bba" (identifier "puVar3") (+ "+") (number_literal "0x1bba"))) (; ";")) (for_statement "for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }" (for "for") (( "(") (assignment_expression "uVar6 = uVar5" (identifier "uVar6") (= "=") (identifier "uVar5")) (; ";") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        *(undefined1 *)puVar12 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);\n      }" ({ "{") (expression_statement "*(undefined1 *)puVar12 = *puVar11;" (assignment_expression "*(undefined1 *)puVar12 = *puVar11" (pointer_expression "*(undefined1 *)puVar12" (* "*") (cast_expression "(undefined1 *)puVar12" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar12"))) (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" (identifier "puVar11") (+ "+") (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);" (assignment_expression "puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1)" (identifier "puVar12") (= "=") (cast_expression "(undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)puVar12 + (uint)bVar15 * -2 + 1)" (( "(") (binary_expression "(int)puVar12 + (uint)bVar15 * -2 + 1" (binary_expression "(int)puVar12 + (uint)bVar15 * -2" (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12")) (+ "+") (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1")) () ")")))) (; ";")) (} "}"))) (expression_statement "puVar3[0x1bb9] = uVar5;" (assignment_expression "puVar3[0x1bb9] = uVar5" (subscript_expression "puVar3[0x1bb9]" (identifier "puVar3") ([ "[") (number_literal "0x1bb9") (] "]")) (= "=") (identifier "uVar5")) (; ";")) (expression_statement "piVar9[1] = piVar9[1] + uVar5;" (assignment_expression "piVar9[1] = piVar9[1] + uVar5" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "piVar9[1] + uVar5" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "uVar5"))) (; ";")) (} "}")) (else_clause "else {\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }" (else "else") (compound_statement "{\n      if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }\n      if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }\n      puVar12 = puVar3 + 0x1bba;\n      puVar11 = (undefined1 *)(iVar7 + uVar14);\n      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);\n      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }\n      uVar6 = puVar3[0x1bb9] + uVar5;\n      if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }\n    }" ({ "{") (if_statement "if (uVar6 - iVar10 <= uVar5) {\n        uVar5 = uVar6 - iVar10;\n      }" (if "if") (parenthesized_expression "(uVar6 - iVar10 <= uVar5)" (( "(") (binary_expression "uVar6 - iVar10 <= uVar5" (binary_expression "uVar6 - iVar10" (identifier "uVar6") (- "-") (identifier "iVar10")) (<= "<=") (identifier "uVar5")) () ")")) (compound_statement "{\n        uVar5 = uVar6 - iVar10;\n      }" ({ "{") (expression_statement "uVar5 = uVar6 - iVar10;" (assignment_expression "uVar5 = uVar6 - iVar10" (identifier "uVar5") (= "=") (binary_expression "uVar6 - iVar10" (identifier "uVar6") (- "-") (identifier "iVar10"))) (; ";")) (} "}"))) (if_statement "if (0x2aU - iVar10 < uVar5) {\n        uVar5 = 0x2aU - iVar10;\n      }" (if "if") (parenthesized_expression "(0x2aU - iVar10 < uVar5)" (( "(") (binary_expression "0x2aU - iVar10 < uVar5" (binary_expression "0x2aU - iVar10" (number_literal "0x2aU") (- "-") (identifier "iVar10")) (< "<") (identifier "uVar5")) () ")")) (compound_statement "{\n        uVar5 = 0x2aU - iVar10;\n      }" ({ "{") (expression_statement "uVar5 = 0x2aU - iVar10;" (assignment_expression "uVar5 = 0x2aU - iVar10" (identifier "uVar5") (= "=") (binary_expression "0x2aU - iVar10" (number_literal "0x2aU") (- "-") (identifier "iVar10"))) (; ";")) (} "}"))) (expression_statement "puVar12 = puVar3 + 0x1bba;" (assignment_expression "puVar12 = puVar3 + 0x1bba" (identifier "puVar12") (= "=") (binary_expression "puVar3 + 0x1bba" (identifier "puVar3") (+ "+") (number_literal "0x1bba"))) (; ";")) (expression_statement "puVar11 = (undefined1 *)(iVar7 + uVar14);" (assignment_expression "puVar11 = (undefined1 *)(iVar7 + uVar14)" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)(iVar7 + uVar14)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + uVar14)" (( "(") (binary_expression "iVar7 + uVar14" (identifier "iVar7") (+ "+") (identifier "uVar14")) () ")")))) (; ";")) (expression_statement "puVar13 = (undefined1 *)(iVar10 + (int)puVar12);" (assignment_expression "puVar13 = (undefined1 *)(iVar10 + (int)puVar12)" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)(iVar10 + (int)puVar12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + (int)puVar12)" (( "(") (binary_expression "iVar10 + (int)puVar12" (identifier "iVar10") (+ "+") (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12"))) () ")")))) (; ";")) (for_statement "for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }" (for "for") (( "(") (assignment_expression "uVar6 = uVar5" (identifier "uVar6") (= "=") (identifier "uVar5")) (; ";") (binary_expression "uVar6 != 0" (identifier "uVar6") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "uVar6 = uVar6 - 1" (identifier "uVar6") (= "=") (binary_expression "uVar6 - 1" (identifier "uVar6") (- "-") (number_literal "1"))) () ")") (compound_statement "{\n        *puVar13 = *puVar11;\n        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n      }" ({ "{") (expression_statement "*puVar13 = *puVar11;" (assignment_expression "*puVar13 = *puVar11" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" (identifier "puVar11") (+ "+") (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar13 = puVar13 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar15 * -2 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + (uint)bVar15 * -2 + 1" (binary_expression "puVar13 + (uint)bVar15 * -2" (identifier "puVar13") (+ "+") (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar6 = puVar3[0x1bb9] + uVar5;" (assignment_expression "uVar6 = puVar3[0x1bb9] + uVar5" (identifier "uVar6") (= "=") (binary_expression "puVar3[0x1bb9] + uVar5" (subscript_expression "puVar3[0x1bb9]" (identifier "puVar3") ([ "[") (number_literal "0x1bb9") (] "]")) (+ "+") (identifier "uVar5"))) (; ";")) (if_statement "if (uVar6 == puVar3[0x13]) {\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }\n      else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }" (if "if") (parenthesized_expression "(uVar6 == puVar3[0x13])" (( "(") (binary_expression "uVar6 == puVar3[0x13]" (identifier "uVar6") (== "==") (subscript_expression "puVar3[0x13]" (identifier "puVar3") ([ "[") (number_literal "0x13") (] "]"))) () ")")) (compound_statement "{\n        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);\n        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }\n        puVar3[5] = puVar3[0x1bb9] + uVar5;\nLAB_00084d51:\n        puVar3[3] = puVar12;\n        puVar3[4] = 0;\n        cVar2 = FUN_0008400e();\n        if (cVar2 == '\0') {\n          return 7;\n        }\n        uVar1 = puVar3[4];\n        uVar14 = puVar3[0x1bb9];\n        if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }\n        uVar6 = puVar3[0x13] - uVar1;\n        puVar3[0x13] = uVar6;\n        if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }\n        puVar3[0x1bb9] = uVar14 - uVar1;\n        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);\n      }" ({ "{") (expression_statement "puVar11 = (undefined1 *)(uVar6 + (int)puVar12);" (assignment_expression "puVar11 = (undefined1 *)(uVar6 + (int)puVar12)" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)(uVar6 + (int)puVar12)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar6 + (int)puVar12)" (( "(") (binary_expression "uVar6 + (int)puVar12" (identifier "uVar6") (+ "+") (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12"))) () ")")))) (; ";")) (for_statement "for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }" (for "for") (( "(") (assignment_expression "iVar7 = 0x3f - uVar6" (identifier "iVar7") (= "=") (binary_expression "0x3f - uVar6" (number_literal "0x3f") (- "-") (identifier "uVar6"))) (; ";") (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar7 = iVar7 + -1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -1" (identifier "iVar7") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n          *puVar11 = 0;\n          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n        }" ({ "{") (expression_statement "*puVar11 = 0;" (assignment_expression "*puVar11 = 0" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (number_literal "0")) (; ";")) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" (identifier "puVar11") (+ "+") (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar3[5] = puVar3[0x1bb9] + uVar5;" (assignment_expression "puVar3[5] = puVar3[0x1bb9] + uVar5" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "puVar3[0x1bb9] + uVar5" (subscript_expression "puVar3[0x1bb9]" (identifier "puVar3") ([ "[") (number_literal "0x1bb9") (] "]")) (+ "+") (identifier "uVar5"))) (; ";")) (labeled_statement "LAB_00084d51:\n        puVar3[3] = puVar12;" (statement_identifier "LAB_00084d51") (: ":") (expression_statement "puVar3[3] = puVar12;" (assignment_expression "puVar3[3] = puVar12" (subscript_expression "puVar3[3]" (identifier "puVar3") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "puVar12")) (; ";"))) (expression_statement "puVar3[4] = 0;" (assignment_expression "puVar3[4] = 0" (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "cVar2 = FUN_0008400e();" (assignment_expression "cVar2 = FUN_0008400e()" (identifier "cVar2") (= "=") (call_expression "FUN_0008400e()" (identifier "FUN_0008400e") (argument_list "()" (( "(") () ")")))) (; ";")) (if_statement "if (cVar2 == '\0') {\n          return 7;\n        }" (if "if") (parenthesized_expression "(cVar2 == '\0')" (( "(") (binary_expression "cVar2 == '\0'" (identifier "cVar2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n          return 7;\n        }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "uVar1 = puVar3[4];" (assignment_expression "uVar1 = puVar3[4]" (identifier "uVar1") (= "=") (subscript_expression "puVar3[4]" (identifier "puVar3") ([ "[") (number_literal "4") (] "]"))) (; ";")) (expression_statement "uVar14 = puVar3[0x1bb9];" (assignment_expression "uVar14 = puVar3[0x1bb9]" (identifier "uVar14") (= "=") (subscript_expression "puVar3[0x1bb9]" (identifier "puVar3") ([ "[") (number_literal "0x1bb9") (] "]"))) (; ";")) (if_statement "if (uVar5 + uVar14 < uVar1) {\n          return 7;\n        }" (if "if") (parenthesized_expression "(uVar5 + uVar14 < uVar1)" (( "(") (binary_expression "uVar5 + uVar14 < uVar1" (binary_expression "uVar5 + uVar14" (identifier "uVar5") (+ "+") (identifier "uVar14")) (< "<") (identifier "uVar1")) () ")")) (compound_statement "{\n          return 7;\n        }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "uVar6 = puVar3[0x13] - uVar1;" (assignment_expression "uVar6 = puVar3[0x13] - uVar1" (identifier "uVar6") (= "=") (binary_expression "puVar3[0x13] - uVar1" (subscript_expression "puVar3[0x13]" (identifier "puVar3") ([ "[") (number_literal "0x13") (] "]")) (- "-") (identifier "uVar1"))) (; ";")) (expression_statement "puVar3[0x13] = uVar6;" (assignment_expression "puVar3[0x13] = uVar6" (subscript_expression "puVar3[0x13]" (identifier "puVar3") ([ "[") (number_literal "0x13") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (if_statement "if (uVar14 <= uVar1) {\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }" (if "if") (parenthesized_expression "(uVar14 <= uVar1)" (( "(") (binary_expression "uVar14 <= uVar1" (identifier "uVar14") (<= "<=") (identifier "uVar1")) () ")")) (compound_statement "{\n          uVar14 = (uVar1 + piVar9[1]) - uVar14;\n          piVar9[1] = uVar14;\n          puVar3[0x1bb9] = 0;\n          local_2c = piVar9[2];\n          uVar5 = local_2c - uVar14;\n          iVar7 = *piVar9;\n          goto joined_r0x00084f76;\n        }" ({ "{") (expression_statement "uVar14 = (uVar1 + piVar9[1]) - uVar14;" (assignment_expression "uVar14 = (uVar1 + piVar9[1]) - uVar14" (identifier "uVar14") (= "=") (binary_expression "(uVar1 + piVar9[1]) - uVar14" (parenthesized_expression "(uVar1 + piVar9[1])" (( "(") (binary_expression "uVar1 + piVar9[1]" (identifier "uVar1") (+ "+") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]"))) () ")")) (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "piVar9[1] = uVar14;" (assignment_expression "piVar9[1] = uVar14" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar14")) (; ";")) (expression_statement "puVar3[0x1bb9] = 0;" (assignment_expression "puVar3[0x1bb9] = 0" (subscript_expression "puVar3[0x1bb9]" (identifier "puVar3") ([ "[") (number_literal "0x1bb9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "local_2c = piVar9[2];" (assignment_expression "local_2c = piVar9[2]" (identifier "local_2c") (= "=") (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "uVar5 = local_2c - uVar14;" (assignment_expression "uVar5 = local_2c - uVar14" (identifier "uVar5") (= "=") (binary_expression "local_2c - uVar14" (identifier "local_2c") (- "-") (identifier "uVar14"))) (; ";")) (expression_statement "iVar7 = *piVar9;" (assignment_expression "iVar7 = *piVar9" (identifier "iVar7") (= "=") (pointer_expression "*piVar9" (* "*") (identifier "piVar9"))) (; ";")) (goto_statement "goto joined_r0x00084f76;" (goto "goto") (statement_identifier "joined_r0x00084f76") (; ";")) (} "}"))) (expression_statement "puVar3[0x1bb9] = uVar14 - uVar1;" (assignment_expression "puVar3[0x1bb9] = uVar14 - uVar1" (subscript_expression "puVar3[0x1bb9]" (identifier "puVar3") ([ "[") (number_literal "0x1bb9") (] "]")) (= "=") (binary_expression "uVar14 - uVar1" (identifier "uVar14") (- "-") (identifier "uVar1"))) (; ";")) (expression_statement "memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);" (call_expression "memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1)" (identifier "memmove") (argument_list "(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1)" (( "(") (identifier "puVar12") (, ",") (cast_expression "(void *)(uVar1 + (int)puVar12)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(uVar1 + (int)puVar12)" (( "(") (binary_expression "uVar1 + (int)puVar12" (identifier "uVar1") (+ "+") (cast_expression "(int)puVar12" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "puVar12"))) () ")"))) (, ",") (binary_expression "uVar14 - uVar1" (identifier "uVar14") (- "-") (identifier "uVar1")) () ")"))) (; ";")) (} "}")) (else_clause "else {\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }" (else "else") (compound_statement "{\n        if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }\n        puVar3[0x1bb9] = uVar6;\n        piVar9[1] = piVar9[1] + uVar5;\n      }" ({ "{") (if_statement "if (0x14 < uVar6) {\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }" (if "if") (parenthesized_expression "(0x14 < uVar6)" (( "(") (binary_expression "0x14 < uVar6" (number_literal "0x14") (< "<") (identifier "uVar6")) () ")")) (compound_statement "{\n          puVar3[5] = uVar6 - 0x15;\n          goto LAB_00084d51;\n        }" ({ "{") (expression_statement "puVar3[5] = uVar6 - 0x15;" (assignment_expression "puVar3[5] = uVar6 - 0x15" (subscript_expression "puVar3[5]" (identifier "puVar3") ([ "[") (number_literal "5") (] "]")) (= "=") (binary_expression "uVar6 - 0x15" (identifier "uVar6") (- "-") (number_literal "0x15"))) (; ";")) (goto_statement "goto LAB_00084d51;" (goto "goto") (statement_identifier "LAB_00084d51") (; ";")) (} "}"))) (expression_statement "puVar3[0x1bb9] = uVar6;" (assignment_expression "puVar3[0x1bb9] = uVar6" (subscript_expression "puVar3[0x1bb9]" (identifier "puVar3") ([ "[") (number_literal "0x1bb9") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "piVar9[1] = piVar9[1] + uVar5;" (assignment_expression "piVar9[1] = piVar9[1] + uVar5" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (= "=") (binary_expression "piVar9[1] + uVar5" (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "uVar5"))) (; ";")) (} "}")))) (} "}")))) (labeled_statement "LAB_00084e1c:\n    iVar7 = puVar3[8];" (statement_identifier "LAB_00084e1c") (: ":") (expression_statement "iVar7 = puVar3[8];" (assignment_expression "iVar7 = puVar3[8]" (identifier "iVar7") (= "=") (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]"))) (; ";"))) (expression_statement "iVar10 = puVar3[7];" (assignment_expression "iVar10 = puVar3[7]" (identifier "iVar10") (= "=") (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]"))) (; ";")) (if_statement "if (iVar7 == puVar3[0xb]) {\n      puVar3[8] = 0;\n    }" (if "if") (parenthesized_expression "(iVar7 == puVar3[0xb])" (( "(") (binary_expression "iVar7 == puVar3[0xb]" (identifier "iVar7") (== "==") (subscript_expression "puVar3[0xb]" (identifier "puVar3") ([ "[") (number_literal "0xb") (] "]"))) () ")")) (compound_statement "{\n      puVar3[8] = 0;\n    }" ({ "{") (expression_statement "puVar3[8] = 0;" (assignment_expression "puVar3[8] = 0" (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "puVar11 = (undefined1 *)(puVar3[6] + iVar10);" (assignment_expression "puVar11 = (undefined1 *)(puVar3[6] + iVar10)" (identifier "puVar11") (= "=") (cast_expression "(undefined1 *)(puVar3[6] + iVar10)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar3[6] + iVar10)" (( "(") (binary_expression "puVar3[6] + iVar10" (subscript_expression "puVar3[6]" (identifier "puVar3") ([ "[") (number_literal "6") (] "]")) (+ "+") (identifier "iVar10")) () ")")))) (; ";")) (expression_statement "puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);" (assignment_expression "puVar13 = (undefined1 *)(piVar9[3] + piVar9[4])" (identifier "puVar13") (= "=") (cast_expression "(undefined1 *)(piVar9[3] + piVar9[4])" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(piVar9[3] + piVar9[4])" (( "(") (binary_expression "piVar9[3] + piVar9[4]" (subscript_expression "piVar9[3]" (identifier "piVar9") ([ "[") (number_literal "3") (] "]")) (+ "+") (subscript_expression "piVar9[4]" (identifier "piVar9") ([ "[") (number_literal "4") (] "]"))) () ")")))) (; ";")) (for_statement "for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }" (for "for") (( "(") (assignment_expression "iVar8 = iVar7 - iVar10" (identifier "iVar8") (= "=") (binary_expression "iVar7 - iVar10" (identifier "iVar7") (- "-") (identifier "iVar10"))) (; ";") (binary_expression "iVar8 != 0" (identifier "iVar8") (!= "!=") (number_literal "0")) (; ";") (assignment_expression "iVar8 = iVar8 + -1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + -1" (identifier "iVar8") (+ "+") (number_literal "-1"))) () ")") (compound_statement "{\n      *puVar13 = *puVar11;\n      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;\n      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;\n    }" ({ "{") (expression_statement "*puVar13 = *puVar11;" (assignment_expression "*puVar13 = *puVar11" (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (= "=") (pointer_expression "*puVar11" (* "*") (identifier "puVar11"))) (; ";")) (expression_statement "puVar11 = puVar11 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar11 = puVar11 + (uint)bVar15 * -2 + 1" (identifier "puVar11") (= "=") (binary_expression "puVar11 + (uint)bVar15 * -2 + 1" (binary_expression "puVar11 + (uint)bVar15 * -2" (identifier "puVar11") (+ "+") (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar13 = puVar13 + (uint)bVar15 * -2 + 1;" (assignment_expression "puVar13 = puVar13 + (uint)bVar15 * -2 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + (uint)bVar15 * -2 + 1" (binary_expression "puVar13 + (uint)bVar15 * -2" (identifier "puVar13") (+ "+") (binary_expression "(uint)bVar15 * -2" (cast_expression "(uint)bVar15" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (identifier "bVar15")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar3[7] = puVar3[8];" (assignment_expression "puVar3[7] = puVar3[8]" (subscript_expression "puVar3[7]" (identifier "puVar3") ([ "[") (number_literal "7") (] "]")) (= "=") (subscript_expression "puVar3[8]" (identifier "puVar3") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "iVar8 = (iVar7 - iVar10) + piVar9[4];" (assignment_expression "iVar8 = (iVar7 - iVar10) + piVar9[4]" (identifier "iVar8") (= "=") (binary_expression "(iVar7 - iVar10) + piVar9[4]" (parenthesized_expression "(iVar7 - iVar10)" (( "(") (binary_expression "iVar7 - iVar10" (identifier "iVar7") (- "-") (identifier "iVar10")) () ")")) (+ "+") (subscript_expression "piVar9[4]" (identifier "piVar9") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "piVar9[4] = iVar8;" (assignment_expression "piVar9[4] = iVar8" (subscript_expression "piVar9[4]" (identifier "piVar9") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "iVar7 = (iVar10 + puVar3[0x12]) - iVar7;" (assignment_expression "iVar7 = (iVar10 + puVar3[0x12]) - iVar7" (identifier "iVar7") (= "=") (binary_expression "(iVar10 + puVar3[0x12]) - iVar7" (parenthesized_expression "(iVar10 + puVar3[0x12])" (( "(") (binary_expression "iVar10 + puVar3[0x12]" (identifier "iVar10") (+ "+") (subscript_expression "puVar3[0x12]" (identifier "puVar3") ([ "[") (number_literal "0x12") (] "]"))) () ")")) (- "-") (identifier "iVar7"))) (; ";")) (expression_statement "puVar3[0x12] = iVar7;" (assignment_expression "puVar3[0x12] = iVar7" (subscript_expression "puVar3[0x12]" (identifier "puVar3") ([ "[") (number_literal "0x12") (] "]")) (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (iVar7 == 0) {\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }\n      *puVar3 = 0xffffffff;\n      puVar3[2] = 5;\n      puVar3[0x10] = 0;\n      uVar6 = 0;\n      if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }\n      goto LAB_00084c99;\n    }" ({ "{") (if_statement "if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {\n        return 7;\n      }" (if "if") (parenthesized_expression "(((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0))" (( "(") (binary_expression "((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)" (parenthesized_expression "((puVar3[0x13] != 0) || (puVar3[0x1a] != 0))" (( "(") (binary_expression "(puVar3[0x13] != 0) || (puVar3[0x1a] != 0)" (parenthesized_expression "(puVar3[0x13] != 0)" (( "(") (binary_expression "puVar3[0x13] != 0" (subscript_expression "puVar3[0x13]" (identifier "puVar3") ([ "[") (number_literal "0x13") (] "]")) (!= "!=") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(puVar3[0x1a] != 0)" (( "(") (binary_expression "puVar3[0x1a] != 0" (subscript_expression "puVar3[0x1a]" (identifier "puVar3") ([ "[") (number_literal "0x1a") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "(puVar3[1] != 0)" (( "(") (binary_expression "puVar3[1] != 0" (subscript_expression "puVar3[1]" (identifier "puVar3") ([ "[") (number_literal "1") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        return 7;\n      }" ({ "{") (return_statement "return 7;" (return "return") (number_literal "7") (; ";")) (} "}"))) (expression_statement "*puVar3 = 0xffffffff;" (assignment_expression "*puVar3 = 0xffffffff" (pointer_expression "*puVar3" (* "*") (identifier "puVar3")) (= "=") (number_literal "0xffffffff")) (; ";")) (expression_statement "puVar3[2] = 5;" (assignment_expression "puVar3[2] = 5" (subscript_expression "puVar3[2]" (identifier "puVar3") ([ "[") (number_literal "2") (] "]")) (= "=") (number_literal "5")) (; ";")) (expression_statement "puVar3[0x10] = 0;" (assignment_expression "puVar3[0x10] = 0" (subscript_expression "puVar3[0x10]" (identifier "puVar3") ([ "[") (number_literal "0x10") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((uint)piVar9[2] <= (uint)piVar9[1]) {\n        return 0;\n      }" (if "if") (parenthesized_expression "((uint)piVar9[2] <= (uint)piVar9[1])" (( "(") (binary_expression "(uint)piVar9[2] <= (uint)piVar9[1]" (cast_expression "(uint)piVar9[2]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]"))) (<= "<=") (cast_expression "(uint)piVar9[1]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]")))) () ")")) (compound_statement "{\n        return 0;\n      }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (goto_statement "goto LAB_00084c99;" (goto "goto") (statement_identifier "LAB_00084c99") (; ";")) (} "}"))) (if_statement "if (piVar9[5] == iVar8) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(piVar9[5] == iVar8)" (( "(") (binary_expression "piVar9[5] == iVar8" (subscript_expression "piVar9[5]" (identifier "piVar9") ([ "[") (number_literal "5") (] "]")) (== "==") (identifier "iVar8")) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar14 = piVar9[1];" (assignment_expression "uVar14 = piVar9[1]" (identifier "uVar14") (= "=") (subscript_expression "piVar9[1]" (identifier "piVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "local_2c = piVar9[2];" (assignment_expression "local_2c = piVar9[2]" (identifier "local_2c") (= "=") (subscript_expression "piVar9[2]" (identifier "piVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {\n      return 0;\n    }" (if "if") (parenthesized_expression "((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13]))" (( "(") (binary_expression "(uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])" (parenthesized_expression "(uVar14 == local_2c)" (( "(") (binary_expression "uVar14 == local_2c" (identifier "uVar14") (== "==") (identifier "local_2c")) () ")")) (&& "&&") (parenthesized_expression "((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])" (( "(") (binary_expression "(uint)puVar3[0x1bb9] < (uint)puVar3[0x13]" (cast_expression "(uint)puVar3[0x1bb9]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar3[0x1bb9]" (identifier "puVar3") ([ "[") (number_literal "0x1bb9") (] "]"))) (< "<") (cast_expression "(uint)puVar3[0x13]" (( "(") (type_descriptor "uint" (type_identifier "uint")) () ")") (subscript_expression "puVar3[0x13]" (identifier "puVar3") ([ "[") (number_literal "0x13") (] "]")))) () ")"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "uVar6 = puVar3[0x10];" (assignment_expression "uVar6 = puVar3[0x10]" (identifier "uVar6") (= "=") (subscript_expression "puVar3[0x10]" (identifier "puVar3") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))

type_1 function_1(type_2 *s,type_3 *b)

{
                    /* WARNING: Subroutine does not return */
  var_1();
}


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

undefined4 MASKED(void)

{
  uint uVar1;
  char cVar2;
  undefined4 *puVar3;
  undefined4 uVar4;
  uint uVar5;
  uint uVar6;
  int iVar7;
  int iVar8;
  int *piVar9;
  int iVar10;
  undefined1 *puVar11;
  int unaff_EDI;
  undefined4 *puVar12;
  undefined1 *puVar13;
  uint uVar14;
  byte bVar15;
  undefined8 uVar16;
  uint local_2c;
  uint local_24;
  
  bVar15 = 0;
  uVar16 = FUN_00027c55();
  piVar9 = (int *)((ulonglong)uVar16 >> 0x20);
  puVar3 = (undefined4 *)uVar16;
  uVar14 = piVar9[1];
  local_2c = piVar9[2];
  uVar6 = puVar3[0x10];
  do {
    if (uVar14 < local_2c) {
LAB_00084c99:
      do {
      } while (8 < uVar6);
                    /* WARNING: Could not recover jumptable at 0x00084ca9. Too many branches */
                    /* WARNING: Treating indirect jump as call */
      uVar4 = (*(code *)(unaff_EDI + 0x56db6 + *(int *)(unaff_EDI + 0x41742 + uVar6 * 4)))();
      return uVar4;
    }
    if (uVar6 != 7) {
      return 0;
    }
    uVar6 = puVar3[0x13];
    iVar7 = *piVar9;
    local_24 = puVar3[0x12];
    uVar5 = piVar9[5] - piVar9[4];
    if (local_24 < uVar5) {
      iVar10 = puVar3[0xb];
      iVar8 = puVar3[8];
      if (local_24 < (uint)(iVar10 - iVar8)) goto LAB_00084d8f;
    }
    else {
      iVar10 = puVar3[0xb];
      iVar8 = puVar3[8];
      local_24 = uVar5;
      if (uVar5 < (uint)(iVar10 - iVar8)) {
LAB_00084d8f:
        iVar10 = local_24 + iVar8;
      }
    }
    puVar3[10] = iVar10;
    uVar5 = local_2c - uVar14;
    iVar10 = puVar3[0x1bb9];
    if ((iVar10 == 0) && (uVar6 != 0)) {
joined_r0x00084f76:
      if (0x14 < uVar5) {
        puVar3[3] = iVar7;
        puVar3[4] = uVar14;
        iVar7 = local_2c - 0x15;
        if (uVar6 + 0x15 <= uVar5) {
          iVar7 = uVar14 + uVar6;
        }
        puVar3[5] = iVar7;
        cVar2 = FUN_0008400e();
        if (cVar2 == '\0') {
          return 7;
        }
        uVar14 = puVar3[4];
        if ((uint)puVar3[0x13] < uVar14 - piVar9[1]) {
          return 7;
        }
        uVar6 = (piVar9[1] - uVar14) + puVar3[0x13];
        puVar3[0x13] = uVar6;
        piVar9[1] = uVar14;
        uVar5 = piVar9[2] - uVar14;
        if (0x14 < uVar5) goto LAB_00084e1c;
        iVar7 = *piVar9;
      }
      if (uVar6 < uVar5) {
        uVar5 = uVar6;
      }
      puVar11 = (undefined1 *)(iVar7 + uVar14);
      puVar12 = puVar3 + 0x1bba;
      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {
        *(undefined1 *)puVar12 = *puVar11;
        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;
        puVar12 = (undefined4 *)((int)puVar12 + (uint)bVar15 * -2 + 1);
      }
      puVar3[0x1bb9] = uVar5;
      piVar9[1] = piVar9[1] + uVar5;
    }
    else {
      if (uVar6 - iVar10 <= uVar5) {
        uVar5 = uVar6 - iVar10;
      }
      if (0x2aU - iVar10 < uVar5) {
        uVar5 = 0x2aU - iVar10;
      }
      puVar12 = puVar3 + 0x1bba;
      puVar11 = (undefined1 *)(iVar7 + uVar14);
      puVar13 = (undefined1 *)(iVar10 + (int)puVar12);
      for (uVar6 = uVar5; uVar6 != 0; uVar6 = uVar6 - 1) {
        *puVar13 = *puVar11;
        puVar11 = puVar11 + (uint)bVar15 * -2 + 1;
        puVar13 = puVar13 + (uint)bVar15 * -2 + 1;
      }
      uVar6 = puVar3[0x1bb9] + uVar5;
      if (uVar6 == puVar3[0x13]) {
        puVar11 = (undefined1 *)(uVar6 + (int)puVar12);
        for (iVar7 = 0x3f - uVar6; iVar7 != 0; iVar7 = iVar7 + -1) {
          *puVar11 = 0;
          puVar11 = puVar11 + (uint)bVar15 * -2 + 1;
        }
        puVar3[5] = puVar3[0x1bb9] + uVar5;
LAB_00084d51:
        puVar3[3] = puVar12;
        puVar3[4] = 0;
        cVar2 = FUN_0008400e();
        if (cVar2 == '\0') {
          return 7;
        }
        uVar1 = puVar3[4];
        uVar14 = puVar3[0x1bb9];
        if (uVar5 + uVar14 < uVar1) {
          return 7;
        }
        uVar6 = puVar3[0x13] - uVar1;
        puVar3[0x13] = uVar6;
        if (uVar14 <= uVar1) {
          uVar14 = (uVar1 + piVar9[1]) - uVar14;
          piVar9[1] = uVar14;
          puVar3[0x1bb9] = 0;
          local_2c = piVar9[2];
          uVar5 = local_2c - uVar14;
          iVar7 = *piVar9;
          goto joined_r0x00084f76;
        }
        puVar3[0x1bb9] = uVar14 - uVar1;
        memmove(puVar12,(void *)(uVar1 + (int)puVar12),uVar14 - uVar1);
      }
      else {
        if (0x14 < uVar6) {
          puVar3[5] = uVar6 - 0x15;
          goto LAB_00084d51;
        }
        puVar3[0x1bb9] = uVar6;
        piVar9[1] = piVar9[1] + uVar5;
      }
    }
LAB_00084e1c:
    iVar7 = puVar3[8];
    iVar10 = puVar3[7];
    if (iVar7 == puVar3[0xb]) {
      puVar3[8] = 0;
    }
    puVar11 = (undefined1 *)(puVar3[6] + iVar10);
    puVar13 = (undefined1 *)(piVar9[3] + piVar9[4]);
    for (iVar8 = iVar7 - iVar10; iVar8 != 0; iVar8 = iVar8 + -1) {
      *puVar13 = *puVar11;
      puVar11 = puVar11 + (uint)bVar15 * -2 + 1;
      puVar13 = puVar13 + (uint)bVar15 * -2 + 1;
    }
    puVar3[7] = puVar3[8];
    iVar8 = (iVar7 - iVar10) + piVar9[4];
    piVar9[4] = iVar8;
    iVar7 = (iVar10 + puVar3[0x12]) - iVar7;
    puVar3[0x12] = iVar7;
    if (iVar7 == 0) {
      if (((puVar3[0x13] != 0) || (puVar3[0x1a] != 0)) || (puVar3[1] != 0)) {
        return 7;
      }
      *puVar3 = 0xffffffff;
      puVar3[2] = 5;
      puVar3[0x10] = 0;
      uVar6 = 0;
      if ((uint)piVar9[2] <= (uint)piVar9[1]) {
        return 0;
      }
      goto LAB_00084c99;
    }
    if (piVar9[5] == iVar8) {
      return 0;
    }
    uVar14 = piVar9[1];
    local_2c = piVar9[2];
    if ((uVar14 == local_2c) && ((uint)puVar3[0x1bb9] < (uint)puVar3[0x13])) {
      return 0;
    }
    uVar6 = puVar3[0x10];
  } while( true );
}

