
/* DWARF original prototype: void output_section_init(Orphan_section_placement * this, string *
   name, Output_section * os, Elements_iterator location) */

void __thiscall
gold::Orphan_section_placement::output_section_init
          (Orphan_section_placement *this,string *name,Output_section *os,Elements_iterator location
          )

{
  bool bVar1;
  char *pcVar2;
  _List_node_base *p_Var3;
  int iVar4;
  long lVar5;
  int iVar6;
  byte *pbVar7;
  byte *pbVar8;
  byte *pbVar9;
  Orphan_section_placement *pOVar10;
  bool bVar11;
  bool bVar12;
  bool bVar13;
  byte bVar14;
  
  bVar14 = 0;
  bVar1 = this->first_init_;
  this->first_init_ = false;
  if ((os != (Output_section *)0x0) && ((os->flags_ & 2) != 0)) {
    this->places_[6].location._M_node = location._M_node;
    this->places_[6].have_location = true;
  }
  iVar6 = 0;
  pOVar10 = this;
  do {
    pcVar2 = pOVar10->places_[0].name;
    if ((pcVar2 != (char *)0x0) && (iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)
       ) {
      if (this->places_[iVar6].have_location != false) {
        return;
      }
      this->places_[iVar6].location._M_node = location._M_node;
      this->places_[iVar6].have_location = true;
      if (iVar6 != 5) {
        return;
      }
      this->places_[9].have_location = false;
      return;
    }
    iVar6 = iVar6 + 1;
    pOVar10 = (Orphan_section_placement *)(pOVar10->places_ + 1);
  } while (iVar6 != 0xb);
  if ((((this->places_[7].have_location != true) && (os != (Output_section *)0x0)) &&
      ((os->type_ == 9 || (os->type_ == 4)))) && ((os->flags_ & 2) != 0)) {
    this->places_[7].location._M_node = location._M_node;
    this->places_[7].have_location = true;
  }
  if (this->places_[9].have_location == false) {
    iVar6 = std::string::compare((string *)name,".comment");
    bVar11 = false;
    bVar13 = iVar6 == 0;
    if (!bVar13) {
      pbVar8 = (byte *)(name->_M_dataplus)._M_p;
      lVar5 = 6;
      pbVar7 = pbVar8;
      pbVar9 = &DAT_00310869;
      do {
        if (lVar5 == 0) break;
        lVar5 = lVar5 + -1;
        bVar11 = *pbVar7 < *pbVar9;
        bVar13 = *pbVar7 == *pbVar9;
        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;
        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;
      } while (bVar13);
      bVar12 = false;
      bVar11 = (!bVar11 && !bVar13) == bVar11;
      if (!bVar11) {
        lVar5 = 7;
        pbVar7 = pbVar8;
        pbVar9 = (byte *)".zdebug";
        do {
          if (lVar5 == 0) break;
          lVar5 = lVar5 + -1;
          bVar12 = *pbVar7 < *pbVar9;
          bVar11 = *pbVar7 == *pbVar9;
          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;
          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;
        } while (bVar11);
        bVar13 = false;
        bVar11 = (!bVar12 && !bVar11) == bVar12;
        if (!bVar11) {
          lVar5 = 0x11;
          pbVar7 = pbVar8;
          pbVar9 = (byte *)".gnu.linkonce.wi.";
          do {
            if (lVar5 == 0) break;
            lVar5 = lVar5 + -1;
            bVar13 = *pbVar7 < *pbVar9;
            bVar11 = *pbVar7 == *pbVar9;
            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;
            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;
          } while (bVar11);
          bVar12 = false;
          bVar11 = (!bVar13 && !bVar11) == bVar13;
          if (!bVar11) {
            lVar5 = 5;
            pbVar7 = pbVar8;
            pbVar9 = (byte *)".line";
            do {
              if (lVar5 == 0) break;
              lVar5 = lVar5 + -1;
              bVar12 = *pbVar7 < *pbVar9;
              bVar11 = *pbVar7 == *pbVar9;
              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;
              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;
            } while (bVar11);
            bVar13 = false;
            bVar11 = (!bVar12 && !bVar11) == bVar12;
            if (!bVar11) {
              lVar5 = 5;
              pbVar7 = pbVar8;
              pbVar9 = (byte *)".stab";
              do {
                if (lVar5 == 0) break;
                lVar5 = lVar5 + -1;
                bVar13 = *pbVar7 < *pbVar9;
                bVar11 = *pbVar7 == *pbVar9;
                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;
                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;
              } while (bVar11);
              bVar12 = false;
              bVar11 = (!bVar13 && !bVar11) == bVar13;
              if (!bVar11) {
                lVar5 = 4;
                pbVar7 = &DAT_0031141d;
                do {
                  if (lVar5 == 0) break;
                  lVar5 = lVar5 + -1;
                  bVar12 = *pbVar8 < *pbVar7;
                  bVar11 = *pbVar8 == *pbVar7;
                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;
                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;
                } while (bVar11);
                if ((!bVar12 && !bVar11) != bVar12) {
                  return;
                }
              }
            }
          }
        }
      }
    }
    if (bVar1 == false) {
      p_Var3 = (location._M_node)->_M_prev;
      this->places_[9].have_location = true;
      this->places_[9].location._M_node = p_Var3;
    }
  }
  return;
}



void FUN_00204300(long *param_1,undefined8 *param_2,long param_3,long param_4)

{
  int iVar1;
  long lVar2;
  long lVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  byte *pbVar7;
  long *plVar8;
  bool bVar9;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  
  bVar12 = 0;
  lVar2 = param_1[0x21];
  *(undefined1 *)(param_1 + 0x21) = 0;
  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {
    param_1[0x14] = param_4;
    *(undefined1 *)(param_1 + 0x13) = 1;
  }
  iVar4 = 0;
  plVar8 = param_1;
  do {
    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {
      lVar2 = (long)iVar4;
      if ((char)param_1[lVar2 * 3 + 1] != '\0') {
        return;
      }
      param_1[lVar2 * 3 + 2] = param_4;
      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;
      if (iVar4 != 5) {
        return;
      }
      *(undefined1 *)(param_1 + 0x1c) = 0;
      return;
    }
    iVar4 = iVar4 + 1;
    plVar8 = plVar8 + 3;
  } while (iVar4 != 0xb);
  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&
      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&
     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {
    param_1[0x17] = param_4;
    *(undefined1 *)(param_1 + 0x16) = 1;
  }
  if ((char)param_1[0x1c] == '\0') {
    iVar4 = FUN_0027fb00(param_2,".comment");
    bVar9 = false;
    bVar11 = iVar4 == 0;
    if (!bVar11) {
      pbVar6 = (byte *)*param_2;
      lVar3 = 6;
      pbVar5 = pbVar6;
      pbVar7 = &DAT_00310869;
      do {
        if (lVar3 == 0) break;
        lVar3 = lVar3 + -1;
        bVar9 = *pbVar5 < *pbVar7;
        bVar11 = *pbVar5 == *pbVar7;
        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
      } while (bVar11);
      bVar10 = false;
      bVar9 = (!bVar9 && !bVar11) == bVar9;
      if (!bVar9) {
        lVar3 = 7;
        pbVar5 = pbVar6;
        pbVar7 = (byte *)".zdebug";
        do {
          if (lVar3 == 0) break;
          lVar3 = lVar3 + -1;
          bVar10 = *pbVar5 < *pbVar7;
          bVar9 = *pbVar5 == *pbVar7;
          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
        } while (bVar9);
        bVar11 = false;
        bVar9 = (!bVar10 && !bVar9) == bVar10;
        if (!bVar9) {
          lVar3 = 0x11;
          pbVar5 = pbVar6;
          pbVar7 = (byte *)".gnu.linkonce.wi.";
          do {
            if (lVar3 == 0) break;
            lVar3 = lVar3 + -1;
            bVar11 = *pbVar5 < *pbVar7;
            bVar9 = *pbVar5 == *pbVar7;
            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
          } while (bVar9);
          bVar10 = false;
          bVar9 = (!bVar11 && !bVar9) == bVar11;
          if (!bVar9) {
            lVar3 = 5;
            pbVar5 = pbVar6;
            pbVar7 = (byte *)".line";
            do {
              if (lVar3 == 0) break;
              lVar3 = lVar3 + -1;
              bVar10 = *pbVar5 < *pbVar7;
              bVar9 = *pbVar5 == *pbVar7;
              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
            } while (bVar9);
            bVar11 = false;
            bVar9 = (!bVar10 && !bVar9) == bVar10;
            if (!bVar9) {
              lVar3 = 5;
              pbVar5 = pbVar6;
              pbVar7 = (byte *)".stab";
              do {
                if (lVar3 == 0) break;
                lVar3 = lVar3 + -1;
                bVar11 = *pbVar5 < *pbVar7;
                bVar9 = *pbVar5 == *pbVar7;
                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
              } while (bVar9);
              bVar10 = false;
              bVar9 = (!bVar11 && !bVar9) == bVar11;
              if (!bVar9) {
                lVar3 = 4;
                pbVar5 = &DAT_0031141d;
                do {
                  if (lVar3 == 0) break;
                  lVar3 = lVar3 + -1;
                  bVar10 = *pbVar6 < *pbVar5;
                  bVar9 = *pbVar6 == *pbVar5;
                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;
                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
                } while (bVar9);
                if ((!bVar10 && !bVar9) != bVar10) {
                  return;
                }
              }
            }
          }
        }
      }
    }
    if ((char)lVar2 == '\0') {
      lVar2 = *(long *)(param_4 + 8);
      *(undefined1 *)(param_1 + 0x1c) = 1;
      param_1[0x1d] = lVar2;
    }
  }
  return;
}


PUSH R15
PUSH R14
MOV R14,RCX
PUSH R13
MOV R13,RDX
PUSH R12
MOV R12,RSI
PUSH RBP
MOV RBP,RDI
PUSH RBX
SUB RSP,0x18
MOVZX EAX,byte ptr [RDI + 0x108]
MOV byte ptr [RDI + 0x108],0x0
MOV byte ptr [RSP + 0xf],AL
TEST RDX,RDX
JZ 0x00204337
TEST byte ptr [RDX + 0x70],0x2
JNZ 0x002043b0
MOV R15,RBP
XOR EBX,EBX
NOP dword ptr [RAX]
MOV RSI,qword ptr [R15]
TEST RSI,RSI
JZ 0x00204358
MOV RDI,R12
CALL 0x0027fb00
TEST EAX,EAX
JZ 0x00204400
ADD EBX,0x1
ADD R15,0x18
CMP EBX,0xb
JNZ 0x00204340
CMP byte ptr [RBP + 0xb0],0x1
JZ 0x00204398
TEST R13,R13
JZ 0x00204398
MOV EAX,dword ptr [R13 + 0x6c]
CMP EAX,0x9
JZ 0x00204380
CMP EAX,0x4
JNZ 0x00204398
TEST byte ptr [R13 + 0x70],0x2
JZ 0x00204398
MOV qword ptr [RBP + 0xb8],R14
MOV byte ptr [RBP + 0xb0],0x1
NOP dword ptr [RAX]
CMP byte ptr [RBP + 0xe0],0x0
JZ 0x002043c8
ADD RSP,0x18
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV qword ptr [RBP + 0xa0],RCX
MOV byte ptr [RDI + 0x98],0x1
JMP 0x00204337
LEA RSI,[0x31c84b]
MOV RDI,R12
CALL 0x0027fb00
TEST EAX,EAX
JNZ 0x00204438
CMP byte ptr [RSP + 0xf],0x0
JNZ 0x002043a1
MOV RAX,qword ptr [R14 + 0x8]
MOV byte ptr [RBP + 0xe0],0x1
MOV qword ptr [RBP + 0xe8],RAX
JMP 0x002043a1
MOVSXD RAX,EBX
LEA RAX,[RAX + RAX*0x2]
SHL RAX,0x3
LEA RDX,[RBP + RAX*0x1]
CMP byte ptr [RDX + 0x8],0x0
JNZ 0x002043a1
MOV qword ptr [RBP + RAX*0x1 + 0x10],R14
MOV byte ptr [RDX + 0x8],0x1
CMP EBX,0x5
JNZ 0x002043a1
MOV byte ptr [RBP + 0xe0],0x0
JMP 0x002043a1
MOV RDX,qword ptr [R12]
MOV ECX,0x6
LEA RDI,[0x310869]
MOV RSI,RDX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x002043db
MOV ECX,0x7
LEA RDI,[0x310768]
MOV RSI,RDX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x002043db
MOV ECX,0x11
LEA RDI,[0x311405]
MOV RSI,RDX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x002043db
MOV ECX,0x5
LEA RDI,[0x311417]
MOV RSI,RDX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x002043db
MOV ECX,0x5
LEA RDI,[0x3108a4]
MOV RSI,RDX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JZ 0x002043db
MOV ECX,0x4
LEA RDI,[0x31141d]
MOV RSI,RDX
CMPSB.REPE RDI,RSI
SETA AL
SBB AL,0x0
TEST AL,AL
JNZ 0x002043a1
JMP 0x002043db
(translation_unit "void FUN_00204300(long *param_1,undefined8 *param_2,long param_3,long param_4)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  lVar2 = param_1[0x21];\n  *(undefined1 *)(param_1 + 0x21) = 0;\n  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }\n  iVar4 = 0;\n  plVar8 = param_1;\n  do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);\n  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }\n  if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00204300(long *param_1,undefined8 *param_2,long param_3,long param_4)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  lVar2 = param_1[0x21];\n  *(undefined1 *)(param_1 + 0x21) = 0;\n  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }\n  iVar4 = 0;\n  plVar8 = param_1;\n  do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);\n  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }\n  if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00204300(long *param_1,undefined8 *param_2,long param_3,long param_4)" identifier (parameter_list "(long *param_1,undefined8 *param_2,long param_3,long param_4)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  lVar2 = param_1[0x21];\n  *(undefined1 *)(param_1 + 0x21) = 0;\n  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }\n  iVar4 = 0;\n  plVar8 = param_1;\n  do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);\n  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }\n  if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "lVar2 = param_1[0x21];" (assignment_expression "lVar2 = param_1[0x21]" identifier = (subscript_expression "param_1[0x21]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(param_1 + 0x21) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x21) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x21)" * (cast_expression "(undefined1 *)(param_1 + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }" if (parenthesized_expression "((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0))" ( (binary_expression "(param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(param_3 + 0x70) & 2) != 0)" ( (binary_expression "(*(byte *)(param_3 + 0x70) & 2) != 0" (parenthesized_expression "(*(byte *)(param_3 + 0x70) & 2)" ( (binary_expression "*(byte *)(param_3 + 0x70) & 2" (pointer_expression "*(byte *)(param_3 + 0x70)" * (cast_expression "(byte *)(param_3 + 0x70)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x70)" ( (binary_expression "param_3 + 0x70" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }" { (expression_statement "param_1[0x14] = param_4;" (assignment_expression "param_1[0x14] = param_4" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x13) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x13) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x13)" * (cast_expression "(undefined1 *)(param_1 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13)" ( (binary_expression "param_1 + 0x13" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "plVar8 = param_1;" (assignment_expression "plVar8 = param_1" identifier = identifier) ;) (do_statement "do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);" do (compound_statement "{\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  }" { (if_statement "if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }" if (parenthesized_expression "((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0))" ( (binary_expression "(*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)" (parenthesized_expression "(*plVar8 != 0)" ( (binary_expression "*plVar8 != 0" (pointer_expression "*plVar8" * identifier) != number_literal) )) && (parenthesized_expression "(iVar1 = FUN_0027fb00(param_2), iVar1 == 0)" ( (comma_expression "iVar1 = FUN_0027fb00(param_2), iVar1 == 0" (assignment_expression "iVar1 = FUN_0027fb00(param_2)" identifier = (call_expression "FUN_0027fb00(param_2)" identifier (argument_list "(param_2)" ( identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }" { (expression_statement "lVar2 = (long)iVar4;" (assignment_expression "lVar2 = (long)iVar4" identifier = (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }" if (parenthesized_expression "((char)param_1[lVar2 * 3 + 1] != '\0')" ( (binary_expression "(char)param_1[lVar2 * 3 + 1] != '\0'" (cast_expression "(char)param_1[lVar2 * 3 + 1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[lVar2 * 3 + 1]" identifier [ (binary_expression "lVar2 * 3 + 1" (binary_expression "lVar2 * 3" identifier * number_literal) + number_literal) ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "param_1[lVar2 * 3 + 2] = param_4;" (assignment_expression "param_1[lVar2 * 3 + 2] = param_4" (subscript_expression "param_1[lVar2 * 3 + 2]" identifier [ (binary_expression "lVar2 * 3 + 2" (binary_expression "lVar2 * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;" (assignment_expression "*(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1" (pointer_expression "*(undefined1 *)(param_1 + lVar2 * 3 + 1)" * (cast_expression "(undefined1 *)(param_1 + lVar2 * 3 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar2 * 3 + 1)" ( (binary_expression "param_1 + lVar2 * 3 + 1" (binary_expression "param_1 + lVar2 * 3" identifier + (binary_expression "lVar2 * 3" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar4 != 5) {\n        return;\n      }" if (parenthesized_expression "(iVar4 != 5)" ( (binary_expression "iVar4 != 5" identifier != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "*(undefined1 *)(param_1 + 0x1c) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x1c) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x1c)" * (cast_expression "(undefined1 *)(param_1 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "plVar8 = plVar8 + 3;" (assignment_expression "plVar8 = plVar8 + 3" identifier = (binary_expression "plVar8 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0xb)" ( (binary_expression "iVar4 != 0xb" identifier != number_literal) )) ;) (if_statement "if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }" if (parenthesized_expression "(((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0))" ( (binary_expression "((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)" (parenthesized_expression "((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4))))" ( (binary_expression "(((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))" (parenthesized_expression "(((char)param_1[0x16] != '\x01') && (param_3 != 0))" ( (binary_expression "((char)param_1[0x16] != '\x01') && (param_3 != 0)" (parenthesized_expression "((char)param_1[0x16] != '\x01')" ( (binary_expression "(char)param_1[0x16] != '\x01'" (cast_expression "(char)param_1[0x16]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x16]" identifier [ number_literal ])) != (char_literal "'\x01'" ' escape_sequence ')) )) && (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) ))) )) && (parenthesized_expression "((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))" ( (parenthesized_expression "(*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4))" ( (binary_expression "*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)" (binary_expression "*(int *)(param_3 + 0x6c) == 9" (pointer_expression "*(int *)(param_3 + 0x6c)" * (cast_expression "(int *)(param_3 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x6c)" ( (binary_expression "param_3 + 0x6c" identifier + number_literal) )))) == number_literal) || (parenthesized_expression "(*(int *)(param_3 + 0x6c) == 4)" ( (binary_expression "*(int *)(param_3 + 0x6c) == 4" (pointer_expression "*(int *)(param_3 + 0x6c)" * (cast_expression "(int *)(param_3 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x6c)" ( (binary_expression "param_3 + 0x6c" identifier + number_literal) )))) == number_literal) ))) )) ))) )) && (parenthesized_expression "((*(byte *)(param_3 + 0x70) & 2) != 0)" ( (binary_expression "(*(byte *)(param_3 + 0x70) & 2) != 0" (parenthesized_expression "(*(byte *)(param_3 + 0x70) & 2)" ( (binary_expression "*(byte *)(param_3 + 0x70) & 2" (pointer_expression "*(byte *)(param_3 + 0x70)" * (cast_expression "(byte *)(param_3 + 0x70)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x70)" ( (binary_expression "param_3 + 0x70" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }" { (expression_statement "param_1[0x17] = param_4;" (assignment_expression "param_1[0x17] = param_4" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x16) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x16) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x16)" * (cast_expression "(undefined1 *)(param_1 + 0x16)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }" if (parenthesized_expression "((char)param_1[0x1c] == '\0')" ( (binary_expression "(char)param_1[0x1c] == '\0'" (cast_expression "(char)param_1[0x1c]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }" { (expression_statement "iVar4 = FUN_0027fb00(param_2,".comment");" (assignment_expression "iVar4 = FUN_0027fb00(param_2,".comment")" identifier = (call_expression "FUN_0027fb00(param_2,".comment")" identifier (argument_list "(param_2,".comment")" ( identifier , (string_literal "".comment"" " string_content ") )))) ;) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "bVar11 = iVar4 == 0;" (assignment_expression "bVar11 = iVar4 == 0" identifier = (binary_expression "iVar4 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (compound_statement "{\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }" { (expression_statement "pbVar6 = (byte *)*param_2;" (assignment_expression "pbVar6 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "lVar3 = 6;" (assignment_expression "lVar3 = 6" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = &DAT_00310869;" (assignment_expression "pbVar7 = &DAT_00310869" identifier = (pointer_expression "&DAT_00310869" & identifier)) ;) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar5 < *pbVar7;" (assignment_expression "bVar9 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar11 = *pbVar5 == *pbVar7;" (assignment_expression "bVar11 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar9 && !bVar11) == bVar9;" (assignment_expression "bVar9 = (!bVar9 && !bVar11) == bVar9" identifier = (binary_expression "(!bVar9 && !bVar11) == bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }" { (expression_statement "lVar3 = 7;" (assignment_expression "lVar3 = 7" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".zdebug";" (assignment_expression "pbVar7 = (byte *)".zdebug"" identifier = (cast_expression "(byte *)".zdebug"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".zdebug"" " string_content "))) ;) (do_statement "do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);" do (compound_statement "{\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar5 < *pbVar7;" (assignment_expression "bVar10 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar10 && !bVar9) == bVar10;" (assignment_expression "bVar9 = (!bVar10 && !bVar9) == bVar10" identifier = (binary_expression "(!bVar10 && !bVar9) == bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }" { (expression_statement "lVar3 = 0x11;" (assignment_expression "lVar3 = 0x11" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".gnu.linkonce.wi.";" (assignment_expression "pbVar7 = (byte *)".gnu.linkonce.wi."" identifier = (cast_expression "(byte *)".gnu.linkonce.wi."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gnu.linkonce.wi."" " string_content "))) ;) (do_statement "do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);" do (compound_statement "{\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar5 < *pbVar7;" (assignment_expression "bVar11 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar11 && !bVar9) == bVar11;" (assignment_expression "bVar9 = (!bVar11 && !bVar9) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" ( (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }" { (expression_statement "lVar3 = 5;" (assignment_expression "lVar3 = 5" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".line";" (assignment_expression "pbVar7 = (byte *)".line"" identifier = (cast_expression "(byte *)".line"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".line"" " string_content "))) ;) (do_statement "do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);" do (compound_statement "{\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar5 < *pbVar7;" (assignment_expression "bVar10 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar10 && !bVar9) == bVar10;" (assignment_expression "bVar9 = (!bVar10 && !bVar9) == bVar10" identifier = (binary_expression "(!bVar10 && !bVar9) == bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }" { (expression_statement "lVar3 = 5;" (assignment_expression "lVar3 = 5" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".stab";" (assignment_expression "pbVar7 = (byte *)".stab"" identifier = (cast_expression "(byte *)".stab"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".stab"" " string_content "))) ;) (do_statement "do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);" do (compound_statement "{\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar5 < *pbVar7;" (assignment_expression "bVar11 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar11 && !bVar9) == bVar11;" (assignment_expression "bVar9 = (!bVar11 && !bVar9) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" ( (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }" { (expression_statement "lVar3 = 4;" (assignment_expression "lVar3 = 4" identifier = number_literal) ;) (expression_statement "pbVar5 = &DAT_0031141d;" (assignment_expression "pbVar5 = &DAT_0031141d" identifier = (pointer_expression "&DAT_0031141d" & identifier)) ;) (do_statement "do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);" do (compound_statement "{\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar6 < *pbVar5;" (assignment_expression "bVar10 = *pbVar6 < *pbVar5" identifier = (binary_expression "*pbVar6 < *pbVar5" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar5;" (assignment_expression "bVar9 = *pbVar6 == *pbVar5" identifier = (binary_expression "*pbVar6 == *pbVar5" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }" if (parenthesized_expression "((!bVar10 && !bVar9) != bVar10)" ( (binary_expression "(!bVar10 && !bVar9) != bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) != identifier) )) (compound_statement "{\n                  return;\n                }" { (return_statement "return;" return ;) })) })) })) })) })) })) })) (if_statement "if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }" if (parenthesized_expression "((char)lVar2 == '\0')" ( (binary_expression "(char)lVar2 == '\0'" (cast_expression "(char)lVar2" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }" { (expression_statement "lVar2 = *(long *)(param_4 + 8);" (assignment_expression "lVar2 = *(long *)(param_4 + 8)" identifier = (pointer_expression "*(long *)(param_4 + 8)" * (cast_expression "(long *)(param_4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x1c) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x1c) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x1c)" * (cast_expression "(undefined1 *)(param_1 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x1d] = lVar2;" (assignment_expression "param_1[0x1d] = lVar2" (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) = identifier) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "/* DWARF original prototype: void output_section_init(Orphan_section_placement * this, string *\n   name, Output_section * os, Elements_iterator location) */\n\nvoid __thiscall\ngold::Orphan_section_placement::output_section_init\n          (Orphan_section_placement *this,string *name,Output_section *os,Elements_iterator location\n          )\n\n{\n  bool bVar1;\n  char *pcVar2;\n  _List_node_base *p_Var3;\n  int iVar4;\n  long lVar5;\n  int iVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  Orphan_section_placement *pOVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  bVar1 = this->first_init_;\n  this->first_init_ = false;\n  if ((os != (Output_section *)0x0) && ((os->flags_ & 2) != 0)) {\n    this->places_[6].location._M_node = location._M_node;\n    this->places_[6].have_location = true;\n  }\n  iVar6 = 0;\n  pOVar10 = this;\n  do {\n    pcVar2 = pOVar10->places_[0].name;\n    if ((pcVar2 != (char *)0x0) && (iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)\n       ) {\n      if (this->places_[iVar6].have_location != false) {\n        return;\n      }\n      this->places_[iVar6].location._M_node = location._M_node;\n      this->places_[iVar6].have_location = true;\n      if (iVar6 != 5) {\n        return;\n      }\n      this->places_[9].have_location = false;\n      return;\n    }\n    iVar6 = iVar6 + 1;\n    pOVar10 = (Orphan_section_placement *)(pOVar10->places_ + 1);\n  } while (iVar6 != 0xb);\n  if ((((this->places_[7].have_location != true) && (os != (Output_section *)0x0)) &&\n      ((os->type_ == 9 || (os->type_ == 4)))) && ((os->flags_ & 2) != 0)) {\n    this->places_[7].location._M_node = location._M_node;\n    this->places_[7].have_location = true;\n  }\n  if (this->places_[9].have_location == false) {\n    iVar6 = std::string::compare((string *)name,".comment");\n    bVar11 = false;\n    bVar13 = iVar6 == 0;\n    if (!bVar13) {\n      pbVar8 = (byte *)(name->_M_dataplus)._M_p;\n      lVar5 = 6;\n      pbVar7 = pbVar8;\n      pbVar9 = &DAT_00310869;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar11 = *pbVar7 < *pbVar9;\n        bVar13 = *pbVar7 == *pbVar9;\n        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (!bVar11) {\n        lVar5 = 7;\n        pbVar7 = pbVar8;\n        pbVar9 = (byte *)".zdebug";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);\n        bVar13 = false;\n        bVar11 = (!bVar12 && !bVar11) == bVar12;\n        if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if (bVar1 == false) {\n      p_Var3 = (location._M_node)->_M_prev;\n      this->places_[9].have_location = true;\n      this->places_[9].location._M_node = p_Var3;\n    }\n  }\n  return;\n}\n\n" comment (function_definition "void __thiscall\ngold::Orphan_section_placement::output_section_init\n          (Orphan_section_placement *this,string *name,Output_section *os,Elements_iterator location\n          )\n\n{\n  bool bVar1;\n  char *pcVar2;\n  _List_node_base *p_Var3;\n  int iVar4;\n  long lVar5;\n  int iVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  Orphan_section_placement *pOVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  bVar1 = this->first_init_;\n  this->first_init_ = false;\n  if ((os != (Output_section *)0x0) && ((os->flags_ & 2) != 0)) {\n    this->places_[6].location._M_node = location._M_node;\n    this->places_[6].have_location = true;\n  }\n  iVar6 = 0;\n  pOVar10 = this;\n  do {\n    pcVar2 = pOVar10->places_[0].name;\n    if ((pcVar2 != (char *)0x0) && (iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)\n       ) {\n      if (this->places_[iVar6].have_location != false) {\n        return;\n      }\n      this->places_[iVar6].location._M_node = location._M_node;\n      this->places_[iVar6].have_location = true;\n      if (iVar6 != 5) {\n        return;\n      }\n      this->places_[9].have_location = false;\n      return;\n    }\n    iVar6 = iVar6 + 1;\n    pOVar10 = (Orphan_section_placement *)(pOVar10->places_ + 1);\n  } while (iVar6 != 0xb);\n  if ((((this->places_[7].have_location != true) && (os != (Output_section *)0x0)) &&\n      ((os->type_ == 9 || (os->type_ == 4)))) && ((os->flags_ & 2) != 0)) {\n    this->places_[7].location._M_node = location._M_node;\n    this->places_[7].have_location = true;\n  }\n  if (this->places_[9].have_location == false) {\n    iVar6 = std::string::compare((string *)name,".comment");\n    bVar11 = false;\n    bVar13 = iVar6 == 0;\n    if (!bVar13) {\n      pbVar8 = (byte *)(name->_M_dataplus)._M_p;\n      lVar5 = 6;\n      pbVar7 = pbVar8;\n      pbVar9 = &DAT_00310869;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar11 = *pbVar7 < *pbVar9;\n        bVar13 = *pbVar7 == *pbVar9;\n        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (!bVar11) {\n        lVar5 = 7;\n        pbVar7 = pbVar8;\n        pbVar9 = (byte *)".zdebug";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);\n        bVar13 = false;\n        bVar11 = (!bVar12 && !bVar11) == bVar12;\n        if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if (bVar1 == false) {\n      p_Var3 = (location._M_node)->_M_prev;\n      this->places_[9].have_location = true;\n      this->places_[9].location._M_node = p_Var3;\n    }\n  }\n  return;\n}" primitive_type (ms_call_modifier "__thiscall" __thiscall) (ERROR "gold::Orphan_section_placement::" identifier : : identifier : :) (function_declarator "output_section_init\n          (Orphan_section_placement *this,string *name,Output_section *os,Elements_iterator location\n          )" identifier (parameter_list "(Orphan_section_placement *this,string *name,Output_section *os,Elements_iterator location\n          )" ( (parameter_declaration "Orphan_section_placement *this" type_identifier (pointer_declarator "*this" * identifier)) , (parameter_declaration "string *name" type_identifier (pointer_declarator "*name" * identifier)) , (parameter_declaration "Output_section *os" type_identifier (pointer_declarator "*os" * identifier)) , (parameter_declaration "Elements_iterator location" type_identifier identifier) ))) (compound_statement "{\n  bool bVar1;\n  char *pcVar2;\n  _List_node_base *p_Var3;\n  int iVar4;\n  long lVar5;\n  int iVar6;\n  byte *pbVar7;\n  byte *pbVar8;\n  byte *pbVar9;\n  Orphan_section_placement *pOVar10;\n  bool bVar11;\n  bool bVar12;\n  bool bVar13;\n  byte bVar14;\n  \n  bVar14 = 0;\n  bVar1 = this->first_init_;\n  this->first_init_ = false;\n  if ((os != (Output_section *)0x0) && ((os->flags_ & 2) != 0)) {\n    this->places_[6].location._M_node = location._M_node;\n    this->places_[6].have_location = true;\n  }\n  iVar6 = 0;\n  pOVar10 = this;\n  do {\n    pcVar2 = pOVar10->places_[0].name;\n    if ((pcVar2 != (char *)0x0) && (iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)\n       ) {\n      if (this->places_[iVar6].have_location != false) {\n        return;\n      }\n      this->places_[iVar6].location._M_node = location._M_node;\n      this->places_[iVar6].have_location = true;\n      if (iVar6 != 5) {\n        return;\n      }\n      this->places_[9].have_location = false;\n      return;\n    }\n    iVar6 = iVar6 + 1;\n    pOVar10 = (Orphan_section_placement *)(pOVar10->places_ + 1);\n  } while (iVar6 != 0xb);\n  if ((((this->places_[7].have_location != true) && (os != (Output_section *)0x0)) &&\n      ((os->type_ == 9 || (os->type_ == 4)))) && ((os->flags_ & 2) != 0)) {\n    this->places_[7].location._M_node = location._M_node;\n    this->places_[7].have_location = true;\n  }\n  if (this->places_[9].have_location == false) {\n    iVar6 = std::string::compare((string *)name,".comment");\n    bVar11 = false;\n    bVar13 = iVar6 == 0;\n    if (!bVar13) {\n      pbVar8 = (byte *)(name->_M_dataplus)._M_p;\n      lVar5 = 6;\n      pbVar7 = pbVar8;\n      pbVar9 = &DAT_00310869;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar11 = *pbVar7 < *pbVar9;\n        bVar13 = *pbVar7 == *pbVar9;\n        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (!bVar11) {\n        lVar5 = 7;\n        pbVar7 = pbVar8;\n        pbVar9 = (byte *)".zdebug";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);\n        bVar13 = false;\n        bVar11 = (!bVar12 && !bVar11) == bVar12;\n        if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if (bVar1 == false) {\n      p_Var3 = (location._M_node)->_M_prev;\n      this->places_[9].have_location = true;\n      this->places_[9].location._M_node = p_Var3;\n    }\n  }\n  return;\n}" { (declaration "bool bVar1;" primitive_type identifier ;) (declaration "char *pcVar2;" primitive_type (pointer_declarator "*pcVar2" * identifier) ;) (declaration "_List_node_base *p_Var3;" type_identifier (pointer_declarator "*p_Var3" * identifier) ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar6;" primitive_type identifier ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "byte *pbVar8;" type_identifier (pointer_declarator "*pbVar8" * identifier) ;) (declaration "byte *pbVar9;" type_identifier (pointer_declarator "*pbVar9" * identifier) ;) (declaration "Orphan_section_placement *pOVar10;" type_identifier (pointer_declarator "*pOVar10" * identifier) ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "bool bVar12;" primitive_type identifier ;) (declaration "bool bVar13;" primitive_type identifier ;) (declaration "byte bVar14;" type_identifier identifier ;) (expression_statement "bVar14 = 0;" (assignment_expression "bVar14 = 0" identifier = number_literal) ;) (expression_statement "bVar1 = this->first_init_;" (assignment_expression "bVar1 = this->first_init_" identifier = (field_expression "this->first_init_" identifier -> field_identifier)) ;) (expression_statement "this->first_init_ = false;" (assignment_expression "this->first_init_ = false" (field_expression "this->first_init_" identifier -> field_identifier) = false) ;) (if_statement "if ((os != (Output_section *)0x0) && ((os->flags_ & 2) != 0)) {\n    this->places_[6].location._M_node = location._M_node;\n    this->places_[6].have_location = true;\n  }" if (parenthesized_expression "((os != (Output_section *)0x0) && ((os->flags_ & 2) != 0))" ( (binary_expression "(os != (Output_section *)0x0) && ((os->flags_ & 2) != 0)" (parenthesized_expression "(os != (Output_section *)0x0)" ( (binary_expression "os != (Output_section *)0x0" identifier != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "((os->flags_ & 2) != 0)" ( (binary_expression "(os->flags_ & 2) != 0" (parenthesized_expression "(os->flags_ & 2)" ( (binary_expression "os->flags_ & 2" (field_expression "os->flags_" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    this->places_[6].location._M_node = location._M_node;\n    this->places_[6].have_location = true;\n  }" { (expression_statement "this->places_[6].location._M_node = location._M_node;" (assignment_expression "this->places_[6].location._M_node = location._M_node" (field_expression "this->places_[6].location._M_node" (field_expression "this->places_[6].location" (subscript_expression "this->places_[6]" (field_expression "this->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier) = (field_expression "location._M_node" identifier . field_identifier)) ;) (expression_statement "this->places_[6].have_location = true;" (assignment_expression "this->places_[6].have_location = true" (field_expression "this->places_[6].have_location" (subscript_expression "this->places_[6]" (field_expression "this->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier) = true) ;) })) (expression_statement "iVar6 = 0;" (assignment_expression "iVar6 = 0" identifier = number_literal) ;) (expression_statement "pOVar10 = this;" (assignment_expression "pOVar10 = this" identifier = identifier) ;) (do_statement "do {\n    pcVar2 = pOVar10->places_[0].name;\n    if ((pcVar2 != (char *)0x0) && (iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)\n       ) {\n      if (this->places_[iVar6].have_location != false) {\n        return;\n      }\n      this->places_[iVar6].location._M_node = location._M_node;\n      this->places_[iVar6].have_location = true;\n      if (iVar6 != 5) {\n        return;\n      }\n      this->places_[9].have_location = false;\n      return;\n    }\n    iVar6 = iVar6 + 1;\n    pOVar10 = (Orphan_section_placement *)(pOVar10->places_ + 1);\n  } while (iVar6 != 0xb);" do (compound_statement "{\n    pcVar2 = pOVar10->places_[0].name;\n    if ((pcVar2 != (char *)0x0) && (iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)\n       ) {\n      if (this->places_[iVar6].have_location != false) {\n        return;\n      }\n      this->places_[iVar6].location._M_node = location._M_node;\n      this->places_[iVar6].have_location = true;\n      if (iVar6 != 5) {\n        return;\n      }\n      this->places_[9].have_location = false;\n      return;\n    }\n    iVar6 = iVar6 + 1;\n    pOVar10 = (Orphan_section_placement *)(pOVar10->places_ + 1);\n  }" { (expression_statement "pcVar2 = pOVar10->places_[0].name;" (assignment_expression "pcVar2 = pOVar10->places_[0].name" identifier = (field_expression "pOVar10->places_[0].name" (subscript_expression "pOVar10->places_[0]" (field_expression "pOVar10->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier)) ;) (if_statement "if ((pcVar2 != (char *)0x0) && (iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)\n       ) {\n      if (this->places_[iVar6].have_location != false) {\n        return;\n      }\n      this->places_[iVar6].location._M_node = location._M_node;\n      this->places_[iVar6].have_location = true;\n      if (iVar6 != 5) {\n        return;\n      }\n      this->places_[9].have_location = false;\n      return;\n    }" if (parenthesized_expression "((pcVar2 != (char *)0x0) && (iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)\n       )" ( (binary_expression "(pcVar2 != (char *)0x0) && (iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)" (parenthesized_expression "(pcVar2 != (char *)0x0)" ( (binary_expression "pcVar2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar4 = std::string::compare((string *)name,pcVar2), iVar4 == 0)" ( (ERROR "iVar4 = std::string::" (assignment_expression "iVar4 = std" identifier = identifier) : : identifier : :) (comma_expression "compare((string *)name,pcVar2), iVar4 == 0" (call_expression "compare((string *)name,pcVar2)" identifier (argument_list "((string *)name,pcVar2)" ( (cast_expression "(string *)name" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , identifier ))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      if (this->places_[iVar6].have_location != false) {\n        return;\n      }\n      this->places_[iVar6].location._M_node = location._M_node;\n      this->places_[iVar6].have_location = true;\n      if (iVar6 != 5) {\n        return;\n      }\n      this->places_[9].have_location = false;\n      return;\n    }" { (if_statement "if (this->places_[iVar6].have_location != false) {\n        return;\n      }" if (parenthesized_expression "(this->places_[iVar6].have_location != false)" ( (binary_expression "this->places_[iVar6].have_location != false" (field_expression "this->places_[iVar6].have_location" (subscript_expression "this->places_[iVar6]" (field_expression "this->places_" identifier -> field_identifier) [ identifier ]) . field_identifier) != false) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "this->places_[iVar6].location._M_node = location._M_node;" (assignment_expression "this->places_[iVar6].location._M_node = location._M_node" (field_expression "this->places_[iVar6].location._M_node" (field_expression "this->places_[iVar6].location" (subscript_expression "this->places_[iVar6]" (field_expression "this->places_" identifier -> field_identifier) [ identifier ]) . field_identifier) . field_identifier) = (field_expression "location._M_node" identifier . field_identifier)) ;) (expression_statement "this->places_[iVar6].have_location = true;" (assignment_expression "this->places_[iVar6].have_location = true" (field_expression "this->places_[iVar6].have_location" (subscript_expression "this->places_[iVar6]" (field_expression "this->places_" identifier -> field_identifier) [ identifier ]) . field_identifier) = true) ;) (if_statement "if (iVar6 != 5) {\n        return;\n      }" if (parenthesized_expression "(iVar6 != 5)" ( (binary_expression "iVar6 != 5" identifier != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "this->places_[9].have_location = false;" (assignment_expression "this->places_[9].have_location = false" (field_expression "this->places_[9].have_location" (subscript_expression "this->places_[9]" (field_expression "this->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier) = false) ;) (return_statement "return;" return ;) })) (expression_statement "iVar6 = iVar6 + 1;" (assignment_expression "iVar6 = iVar6 + 1" identifier = (binary_expression "iVar6 + 1" identifier + number_literal)) ;) (expression_statement "pOVar10 = (Orphan_section_placement *)(pOVar10->places_ + 1);" (assignment_expression "pOVar10 = (Orphan_section_placement *)(pOVar10->places_ + 1)" identifier = (cast_expression "(Orphan_section_placement *)(pOVar10->places_ + 1)" ( (type_descriptor "Orphan_section_placement *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pOVar10->places_ + 1)" ( (binary_expression "pOVar10->places_ + 1" (field_expression "pOVar10->places_" identifier -> field_identifier) + number_literal) )))) ;) }) while (parenthesized_expression "(iVar6 != 0xb)" ( (binary_expression "iVar6 != 0xb" identifier != number_literal) )) ;) (if_statement "if ((((this->places_[7].have_location != true) && (os != (Output_section *)0x0)) &&\n      ((os->type_ == 9 || (os->type_ == 4)))) && ((os->flags_ & 2) != 0)) {\n    this->places_[7].location._M_node = location._M_node;\n    this->places_[7].have_location = true;\n  }" if (parenthesized_expression "((((this->places_[7].have_location != true) && (os != (Output_section *)0x0)) &&\n      ((os->type_ == 9 || (os->type_ == 4)))) && ((os->flags_ & 2) != 0))" ( (binary_expression "(((this->places_[7].have_location != true) && (os != (Output_section *)0x0)) &&\n      ((os->type_ == 9 || (os->type_ == 4)))) && ((os->flags_ & 2) != 0)" (parenthesized_expression "(((this->places_[7].have_location != true) && (os != (Output_section *)0x0)) &&\n      ((os->type_ == 9 || (os->type_ == 4))))" ( (binary_expression "((this->places_[7].have_location != true) && (os != (Output_section *)0x0)) &&\n      ((os->type_ == 9 || (os->type_ == 4)))" (parenthesized_expression "((this->places_[7].have_location != true) && (os != (Output_section *)0x0))" ( (binary_expression "(this->places_[7].have_location != true) && (os != (Output_section *)0x0)" (parenthesized_expression "(this->places_[7].have_location != true)" ( (binary_expression "this->places_[7].have_location != true" (field_expression "this->places_[7].have_location" (subscript_expression "this->places_[7]" (field_expression "this->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier) != true) )) && (parenthesized_expression "(os != (Output_section *)0x0)" ( (binary_expression "os != (Output_section *)0x0" identifier != (cast_expression "(Output_section *)0x0" ( (type_descriptor "Output_section *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "((os->type_ == 9 || (os->type_ == 4)))" ( (parenthesized_expression "(os->type_ == 9 || (os->type_ == 4))" ( (binary_expression "os->type_ == 9 || (os->type_ == 4)" (binary_expression "os->type_ == 9" (field_expression "os->type_" identifier -> field_identifier) == number_literal) || (parenthesized_expression "(os->type_ == 4)" ( (binary_expression "os->type_ == 4" (field_expression "os->type_" identifier -> field_identifier) == number_literal) ))) )) ))) )) && (parenthesized_expression "((os->flags_ & 2) != 0)" ( (binary_expression "(os->flags_ & 2) != 0" (parenthesized_expression "(os->flags_ & 2)" ( (binary_expression "os->flags_ & 2" (field_expression "os->flags_" identifier -> field_identifier) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    this->places_[7].location._M_node = location._M_node;\n    this->places_[7].have_location = true;\n  }" { (expression_statement "this->places_[7].location._M_node = location._M_node;" (assignment_expression "this->places_[7].location._M_node = location._M_node" (field_expression "this->places_[7].location._M_node" (field_expression "this->places_[7].location" (subscript_expression "this->places_[7]" (field_expression "this->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier) = (field_expression "location._M_node" identifier . field_identifier)) ;) (expression_statement "this->places_[7].have_location = true;" (assignment_expression "this->places_[7].have_location = true" (field_expression "this->places_[7].have_location" (subscript_expression "this->places_[7]" (field_expression "this->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier) = true) ;) })) (if_statement "if (this->places_[9].have_location == false) {\n    iVar6 = std::string::compare((string *)name,".comment");\n    bVar11 = false;\n    bVar13 = iVar6 == 0;\n    if (!bVar13) {\n      pbVar8 = (byte *)(name->_M_dataplus)._M_p;\n      lVar5 = 6;\n      pbVar7 = pbVar8;\n      pbVar9 = &DAT_00310869;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar11 = *pbVar7 < *pbVar9;\n        bVar13 = *pbVar7 == *pbVar9;\n        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (!bVar11) {\n        lVar5 = 7;\n        pbVar7 = pbVar8;\n        pbVar9 = (byte *)".zdebug";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);\n        bVar13 = false;\n        bVar11 = (!bVar12 && !bVar11) == bVar12;\n        if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if (bVar1 == false) {\n      p_Var3 = (location._M_node)->_M_prev;\n      this->places_[9].have_location = true;\n      this->places_[9].location._M_node = p_Var3;\n    }\n  }" if (parenthesized_expression "(this->places_[9].have_location == false)" ( (binary_expression "this->places_[9].have_location == false" (field_expression "this->places_[9].have_location" (subscript_expression "this->places_[9]" (field_expression "this->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier) == false) )) (compound_statement "{\n    iVar6 = std::string::compare((string *)name,".comment");\n    bVar11 = false;\n    bVar13 = iVar6 == 0;\n    if (!bVar13) {\n      pbVar8 = (byte *)(name->_M_dataplus)._M_p;\n      lVar5 = 6;\n      pbVar7 = pbVar8;\n      pbVar9 = &DAT_00310869;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar11 = *pbVar7 < *pbVar9;\n        bVar13 = *pbVar7 == *pbVar9;\n        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (!bVar11) {\n        lVar5 = 7;\n        pbVar7 = pbVar8;\n        pbVar9 = (byte *)".zdebug";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);\n        bVar13 = false;\n        bVar11 = (!bVar12 && !bVar11) == bVar12;\n        if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if (bVar1 == false) {\n      p_Var3 = (location._M_node)->_M_prev;\n      this->places_[9].have_location = true;\n      this->places_[9].location._M_node = p_Var3;\n    }\n  }" { (ERROR "iVar6 = std::" (assignment_expression "iVar6 = std" identifier = identifier) : :) (labeled_statement "string::compare((string *)name,".comment");" statement_identifier : (ERROR ":" :) (expression_statement "compare((string *)name,".comment");" (call_expression "compare((string *)name,".comment")" identifier (argument_list "((string *)name,".comment")" ( (cast_expression "(string *)name" ( (type_descriptor "string *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) , (string_literal "".comment"" " string_content ") ))) ;)) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar13 = iVar6 == 0;" (assignment_expression "bVar13 = iVar6 == 0" identifier = (binary_expression "iVar6 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar13) {\n      pbVar8 = (byte *)(name->_M_dataplus)._M_p;\n      lVar5 = 6;\n      pbVar7 = pbVar8;\n      pbVar9 = &DAT_00310869;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar11 = *pbVar7 < *pbVar9;\n        bVar13 = *pbVar7 == *pbVar9;\n        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (!bVar11) {\n        lVar5 = 7;\n        pbVar7 = pbVar8;\n        pbVar9 = (byte *)".zdebug";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);\n        bVar13 = false;\n        bVar11 = (!bVar12 && !bVar11) == bVar12;\n        if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(!bVar13)" ( (unary_expression "!bVar13" ! identifier) )) (compound_statement "{\n      pbVar8 = (byte *)(name->_M_dataplus)._M_p;\n      lVar5 = 6;\n      pbVar7 = pbVar8;\n      pbVar9 = &DAT_00310869;\n      do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar11 = *pbVar7 < *pbVar9;\n        bVar13 = *pbVar7 == *pbVar9;\n        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);\n      bVar12 = false;\n      bVar11 = (!bVar11 && !bVar13) == bVar11;\n      if (!bVar11) {\n        lVar5 = 7;\n        pbVar7 = pbVar8;\n        pbVar9 = (byte *)".zdebug";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);\n        bVar13 = false;\n        bVar11 = (!bVar12 && !bVar11) == bVar12;\n        if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }" { (expression_statement "pbVar8 = (byte *)(name->_M_dataplus)._M_p;" (assignment_expression "pbVar8 = (byte *)(name->_M_dataplus)._M_p" identifier = (cast_expression "(byte *)(name->_M_dataplus)._M_p" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(name->_M_dataplus)._M_p" (parenthesized_expression "(name->_M_dataplus)" ( (field_expression "name->_M_dataplus" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "lVar5 = 6;" (assignment_expression "lVar5 = 6" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar8;" (assignment_expression "pbVar7 = pbVar8" identifier = identifier) ;) (expression_statement "pbVar9 = &DAT_00310869;" (assignment_expression "pbVar9 = &DAT_00310869" identifier = (pointer_expression "&DAT_00310869" & identifier)) ;) (do_statement "do {\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar11 = *pbVar7 < *pbVar9;\n        bVar13 = *pbVar7 == *pbVar9;\n        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n      } while (bVar13);" do (compound_statement "{\n        if (lVar5 == 0) break;\n        lVar5 = lVar5 + -1;\n        bVar11 = *pbVar7 < *pbVar9;\n        bVar13 = *pbVar7 == *pbVar9;\n        pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n        pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n      }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar7 < *pbVar9;" (assignment_expression "bVar11 = *pbVar7 < *pbVar9" identifier = (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar13 = *pbVar7 == *pbVar9;" (assignment_expression "bVar13 = *pbVar7 == *pbVar9" identifier = (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar13)" ( identifier )) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar11 = (!bVar11 && !bVar13) == bVar11;" (assignment_expression "bVar11 = (!bVar11 && !bVar13) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar13) == bVar11" (parenthesized_expression "(!bVar11 && !bVar13)" ( (binary_expression "!bVar11 && !bVar13" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar13" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar11) {\n        lVar5 = 7;\n        pbVar7 = pbVar8;\n        pbVar9 = (byte *)".zdebug";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);\n        bVar13 = false;\n        bVar11 = (!bVar12 && !bVar11) == bVar12;\n        if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (compound_statement "{\n        lVar5 = 7;\n        pbVar7 = pbVar8;\n        pbVar9 = (byte *)".zdebug";\n        do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);\n        bVar13 = false;\n        bVar11 = (!bVar12 && !bVar11) == bVar12;\n        if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }" { (expression_statement "lVar5 = 7;" (assignment_expression "lVar5 = 7" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar8;" (assignment_expression "pbVar7 = pbVar8" identifier = identifier) ;) (expression_statement "pbVar9 = (byte *)".zdebug";" (assignment_expression "pbVar9 = (byte *)".zdebug"" identifier = (cast_expression "(byte *)".zdebug"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".zdebug"" " string_content "))) ;) (do_statement "do {\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        } while (bVar11);" do (compound_statement "{\n          if (lVar5 == 0) break;\n          lVar5 = lVar5 + -1;\n          bVar12 = *pbVar7 < *pbVar9;\n          bVar11 = *pbVar7 == *pbVar9;\n          pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n          pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n        }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar7 < *pbVar9;" (assignment_expression "bVar12 = *pbVar7 < *pbVar9" identifier = (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar7 == *pbVar9;" (assignment_expression "bVar11 = *pbVar7 == *pbVar9" identifier = (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar11 = (!bVar12 && !bVar11) == bVar12;" (assignment_expression "bVar11 = (!bVar12 && !bVar11) == bVar12" identifier = (binary_expression "(!bVar12 && !bVar11) == bVar12" (parenthesized_expression "(!bVar12 && !bVar11)" ( (binary_expression "!bVar12 && !bVar11" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar11) {\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (compound_statement "{\n          lVar5 = 0x11;\n          pbVar7 = pbVar8;\n          pbVar9 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);\n          bVar12 = false;\n          bVar11 = (!bVar13 && !bVar11) == bVar13;\n          if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }\n        }" { (expression_statement "lVar5 = 0x11;" (assignment_expression "lVar5 = 0x11" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar8;" (assignment_expression "pbVar7 = pbVar8" identifier = identifier) ;) (expression_statement "pbVar9 = (byte *)".gnu.linkonce.wi.";" (assignment_expression "pbVar9 = (byte *)".gnu.linkonce.wi."" identifier = (cast_expression "(byte *)".gnu.linkonce.wi."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gnu.linkonce.wi."" " string_content "))) ;) (do_statement "do {\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          } while (bVar11);" do (compound_statement "{\n            if (lVar5 == 0) break;\n            lVar5 = lVar5 + -1;\n            bVar13 = *pbVar7 < *pbVar9;\n            bVar11 = *pbVar7 == *pbVar9;\n            pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n            pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n          }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar7 < *pbVar9;" (assignment_expression "bVar13 = *pbVar7 < *pbVar9" identifier = (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar7 == *pbVar9;" (assignment_expression "bVar11 = *pbVar7 == *pbVar9" identifier = (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar11 = (!bVar13 && !bVar11) == bVar13;" (assignment_expression "bVar11 = (!bVar13 && !bVar11) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar11) == bVar13" (parenthesized_expression "(!bVar13 && !bVar11)" ( (binary_expression "!bVar13 && !bVar11" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar11) {\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (compound_statement "{\n            lVar5 = 5;\n            pbVar7 = pbVar8;\n            pbVar9 = (byte *)".line";\n            do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);\n            bVar13 = false;\n            bVar11 = (!bVar12 && !bVar11) == bVar12;\n            if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }\n          }" { (expression_statement "lVar5 = 5;" (assignment_expression "lVar5 = 5" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar8;" (assignment_expression "pbVar7 = pbVar8" identifier = identifier) ;) (expression_statement "pbVar9 = (byte *)".line";" (assignment_expression "pbVar9 = (byte *)".line"" identifier = (cast_expression "(byte *)".line"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".line"" " string_content "))) ;) (do_statement "do {\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            } while (bVar11);" do (compound_statement "{\n              if (lVar5 == 0) break;\n              lVar5 = lVar5 + -1;\n              bVar12 = *pbVar7 < *pbVar9;\n              bVar11 = *pbVar7 == *pbVar9;\n              pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n              pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n            }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar7 < *pbVar9;" (assignment_expression "bVar12 = *pbVar7 < *pbVar9" identifier = (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar7 == *pbVar9;" (assignment_expression "bVar11 = *pbVar7 == *pbVar9" identifier = (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar13 = false;" (assignment_expression "bVar13 = false" identifier = false) ;) (expression_statement "bVar11 = (!bVar12 && !bVar11) == bVar12;" (assignment_expression "bVar11 = (!bVar12 && !bVar11) == bVar12" identifier = (binary_expression "(!bVar12 && !bVar11) == bVar12" (parenthesized_expression "(!bVar12 && !bVar11)" ( (binary_expression "!bVar12 && !bVar11" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar11) {\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (compound_statement "{\n              lVar5 = 5;\n              pbVar7 = pbVar8;\n              pbVar9 = (byte *)".stab";\n              do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);\n              bVar12 = false;\n              bVar11 = (!bVar13 && !bVar11) == bVar13;\n              if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }\n            }" { (expression_statement "lVar5 = 5;" (assignment_expression "lVar5 = 5" identifier = number_literal) ;) (expression_statement "pbVar7 = pbVar8;" (assignment_expression "pbVar7 = pbVar8" identifier = identifier) ;) (expression_statement "pbVar9 = (byte *)".stab";" (assignment_expression "pbVar9 = (byte *)".stab"" identifier = (cast_expression "(byte *)".stab"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".stab"" " string_content "))) ;) (do_statement "do {\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              } while (bVar11);" do (compound_statement "{\n                if (lVar5 == 0) break;\n                lVar5 = lVar5 + -1;\n                bVar13 = *pbVar7 < *pbVar9;\n                bVar11 = *pbVar7 == *pbVar9;\n                pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;\n              }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar13 = *pbVar7 < *pbVar9;" (assignment_expression "bVar13 = *pbVar7 < *pbVar9" identifier = (binary_expression "*pbVar7 < *pbVar9" (pointer_expression "*pbVar7" * identifier) < (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "bVar11 = *pbVar7 == *pbVar9;" (assignment_expression "bVar11 = *pbVar7 == *pbVar9" identifier = (binary_expression "*pbVar7 == *pbVar9" (pointer_expression "*pbVar7" * identifier) == (pointer_expression "*pbVar9" * identifier))) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar9 = pbVar9 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar9 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar9 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar12 = false;" (assignment_expression "bVar12 = false" identifier = false) ;) (expression_statement "bVar11 = (!bVar13 && !bVar11) == bVar13;" (assignment_expression "bVar11 = (!bVar13 && !bVar11) == bVar13" identifier = (binary_expression "(!bVar13 && !bVar11) == bVar13" (parenthesized_expression "(!bVar13 && !bVar11)" ( (binary_expression "!bVar13 && !bVar11" (unary_expression "!bVar13" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar11) {\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (compound_statement "{\n                lVar5 = 4;\n                pbVar7 = &DAT_0031141d;\n                do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);\n                if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }\n              }" { (expression_statement "lVar5 = 4;" (assignment_expression "lVar5 = 4" identifier = number_literal) ;) (expression_statement "pbVar7 = &DAT_0031141d;" (assignment_expression "pbVar7 = &DAT_0031141d" identifier = (pointer_expression "&DAT_0031141d" & identifier)) ;) (do_statement "do {\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                } while (bVar11);" do (compound_statement "{\n                  if (lVar5 == 0) break;\n                  lVar5 = lVar5 + -1;\n                  bVar12 = *pbVar8 < *pbVar7;\n                  bVar11 = *pbVar8 == *pbVar7;\n                  pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;\n                  pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;\n                }" { (if_statement "if (lVar5 == 0) break;" if (parenthesized_expression "(lVar5 == 0)" ( (binary_expression "lVar5 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar5 = lVar5 + -1;" (assignment_expression "lVar5 = lVar5 + -1" identifier = (binary_expression "lVar5 + -1" identifier + number_literal)) ;) (expression_statement "bVar12 = *pbVar8 < *pbVar7;" (assignment_expression "bVar12 = *pbVar8 < *pbVar7" identifier = (binary_expression "*pbVar8 < *pbVar7" (pointer_expression "*pbVar8" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar11 = *pbVar8 == *pbVar7;" (assignment_expression "bVar11 = *pbVar8 == *pbVar7" identifier = (binary_expression "*pbVar8 == *pbVar7" (pointer_expression "*pbVar8" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar8 = pbVar8 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar8 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar8 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar14 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar14 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar14 * -2" identifier + (binary_expression "(ulong)bVar14 * -2" (cast_expression "(ulong)bVar14" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (if_statement "if ((!bVar12 && !bVar11) != bVar12) {\n                  return;\n                }" if (parenthesized_expression "((!bVar12 && !bVar11) != bVar12)" ( (binary_expression "(!bVar12 && !bVar11) != bVar12" (parenthesized_expression "(!bVar12 && !bVar11)" ( (binary_expression "!bVar12 && !bVar11" (unary_expression "!bVar12" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) != identifier) )) (compound_statement "{\n                  return;\n                }" { (return_statement "return;" return ;) })) })) })) })) })) })) })) (if_statement "if (bVar1 == false) {\n      p_Var3 = (location._M_node)->_M_prev;\n      this->places_[9].have_location = true;\n      this->places_[9].location._M_node = p_Var3;\n    }" if (parenthesized_expression "(bVar1 == false)" ( (binary_expression "bVar1 == false" identifier == false) )) (compound_statement "{\n      p_Var3 = (location._M_node)->_M_prev;\n      this->places_[9].have_location = true;\n      this->places_[9].location._M_node = p_Var3;\n    }" { (expression_statement "p_Var3 = (location._M_node)->_M_prev;" (assignment_expression "p_Var3 = (location._M_node)->_M_prev" identifier = (field_expression "(location._M_node)->_M_prev" (parenthesized_expression "(location._M_node)" ( (field_expression "location._M_node" identifier . field_identifier) )) -> field_identifier)) ;) (expression_statement "this->places_[9].have_location = true;" (assignment_expression "this->places_[9].have_location = true" (field_expression "this->places_[9].have_location" (subscript_expression "this->places_[9]" (field_expression "this->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier) = true) ;) (expression_statement "this->places_[9].location._M_node = p_Var3;" (assignment_expression "this->places_[9].location._M_node = p_Var3" (field_expression "this->places_[9].location._M_node" (field_expression "this->places_[9].location" (subscript_expression "this->places_[9]" (field_expression "this->places_" identifier -> field_identifier) [ number_literal ]) . field_identifier) . field_identifier) = identifier) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00204300(long *param_1,undefined8 *param_2,long param_3,long param_4)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  lVar2 = param_1[0x21];\n  *(undefined1 *)(param_1 + 0x21) = 0;\n  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }\n  iVar4 = 0;\n  plVar8 = param_1;\n  do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);\n  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }\n  if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }\n  return;\n}\n\n" (function_definition "void FUN_00204300(long *param_1,undefined8 *param_2,long param_3,long param_4)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  lVar2 = param_1[0x21];\n  *(undefined1 *)(param_1 + 0x21) = 0;\n  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }\n  iVar4 = 0;\n  plVar8 = param_1;\n  do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);\n  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }\n  if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00204300(long *param_1,undefined8 *param_2,long param_3,long param_4)" identifier (parameter_list "(long *param_1,undefined8 *param_2,long param_3,long param_4)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "long param_3" (sized_type_specifier "long" long) identifier) , (parameter_declaration "long param_4" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  lVar2 = param_1[0x21];\n  *(undefined1 *)(param_1 + 0x21) = 0;\n  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }\n  iVar4 = 0;\n  plVar8 = param_1;\n  do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);\n  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }\n  if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }\n  return;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "long lVar2;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "byte *pbVar5;" type_identifier (pointer_declarator "*pbVar5" * identifier) ;) (declaration "byte *pbVar6;" type_identifier (pointer_declarator "*pbVar6" * identifier) ;) (declaration "byte *pbVar7;" type_identifier (pointer_declarator "*pbVar7" * identifier) ;) (declaration "long *plVar8;" (sized_type_specifier "long" long) (pointer_declarator "*plVar8" * identifier) ;) (declaration "bool bVar9;" primitive_type identifier ;) (declaration "bool bVar10;" primitive_type identifier ;) (declaration "bool bVar11;" primitive_type identifier ;) (declaration "byte bVar12;" type_identifier identifier ;) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" identifier = number_literal) ;) (expression_statement "lVar2 = param_1[0x21];" (assignment_expression "lVar2 = param_1[0x21]" identifier = (subscript_expression "param_1[0x21]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(param_1 + 0x21) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x21) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x21)" * (cast_expression "(undefined1 *)(param_1 + 0x21)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x21)" ( (binary_expression "param_1 + 0x21" identifier + number_literal) )))) = number_literal) ;) (if_statement "if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }" if (parenthesized_expression "((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0))" ( (binary_expression "(param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)" (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) )) && (parenthesized_expression "((*(byte *)(param_3 + 0x70) & 2) != 0)" ( (binary_expression "(*(byte *)(param_3 + 0x70) & 2) != 0" (parenthesized_expression "(*(byte *)(param_3 + 0x70) & 2)" ( (binary_expression "*(byte *)(param_3 + 0x70) & 2" (pointer_expression "*(byte *)(param_3 + 0x70)" * (cast_expression "(byte *)(param_3 + 0x70)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x70)" ( (binary_expression "param_3 + 0x70" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }" { (expression_statement "param_1[0x14] = param_4;" (assignment_expression "param_1[0x14] = param_4" (subscript_expression "param_1[0x14]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x13) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x13) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x13)" * (cast_expression "(undefined1 *)(param_1 + 0x13)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x13)" ( (binary_expression "param_1 + 0x13" identifier + number_literal) )))) = number_literal) ;) })) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" identifier = number_literal) ;) (expression_statement "plVar8 = param_1;" (assignment_expression "plVar8 = param_1" identifier = identifier) ;) (do_statement "do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);" do (compound_statement "{\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  }" { (if_statement "if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }" if (parenthesized_expression "((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0))" ( (binary_expression "(*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)" (parenthesized_expression "(*plVar8 != 0)" ( (binary_expression "*plVar8 != 0" (pointer_expression "*plVar8" * identifier) != number_literal) )) && (parenthesized_expression "(iVar1 = FUN_0027fb00(param_2), iVar1 == 0)" ( (comma_expression "iVar1 = FUN_0027fb00(param_2), iVar1 == 0" (assignment_expression "iVar1 = FUN_0027fb00(param_2)" identifier = (call_expression "FUN_0027fb00(param_2)" identifier (argument_list "(param_2)" ( identifier )))) , (binary_expression "iVar1 == 0" identifier == number_literal)) ))) )) (compound_statement "{\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }" { (expression_statement "lVar2 = (long)iVar4;" (assignment_expression "lVar2 = (long)iVar4" identifier = (cast_expression "(long)iVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }" if (parenthesized_expression "((char)param_1[lVar2 * 3 + 1] != '\0')" ( (binary_expression "(char)param_1[lVar2 * 3 + 1] != '\0'" (cast_expression "(char)param_1[lVar2 * 3 + 1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[lVar2 * 3 + 1]" identifier [ (binary_expression "lVar2 * 3 + 1" (binary_expression "lVar2 * 3" identifier * number_literal) + number_literal) ])) != (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "param_1[lVar2 * 3 + 2] = param_4;" (assignment_expression "param_1[lVar2 * 3 + 2] = param_4" (subscript_expression "param_1[lVar2 * 3 + 2]" identifier [ (binary_expression "lVar2 * 3 + 2" (binary_expression "lVar2 * 3" identifier * number_literal) + number_literal) ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;" (assignment_expression "*(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1" (pointer_expression "*(undefined1 *)(param_1 + lVar2 * 3 + 1)" * (cast_expression "(undefined1 *)(param_1 + lVar2 * 3 + 1)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + lVar2 * 3 + 1)" ( (binary_expression "param_1 + lVar2 * 3 + 1" (binary_expression "param_1 + lVar2 * 3" identifier + (binary_expression "lVar2 * 3" identifier * number_literal)) + number_literal) )))) = number_literal) ;) (if_statement "if (iVar4 != 5) {\n        return;\n      }" if (parenthesized_expression "(iVar4 != 5)" ( (binary_expression "iVar4 != 5" identifier != number_literal) )) (compound_statement "{\n        return;\n      }" { (return_statement "return;" return ;) })) (expression_statement "*(undefined1 *)(param_1 + 0x1c) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x1c) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x1c)" * (cast_expression "(undefined1 *)(param_1 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (return_statement "return;" return ;) })) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (expression_statement "plVar8 = plVar8 + 3;" (assignment_expression "plVar8 = plVar8 + 3" identifier = (binary_expression "plVar8 + 3" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0xb)" ( (binary_expression "iVar4 != 0xb" identifier != number_literal) )) ;) (if_statement "if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }" if (parenthesized_expression "(((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0))" ( (binary_expression "((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)" (parenthesized_expression "((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4))))" ( (binary_expression "(((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))" (parenthesized_expression "(((char)param_1[0x16] != '\x01') && (param_3 != 0))" ( (binary_expression "((char)param_1[0x16] != '\x01') && (param_3 != 0)" (parenthesized_expression "((char)param_1[0x16] != '\x01')" ( (binary_expression "(char)param_1[0x16] != '\x01'" (cast_expression "(char)param_1[0x16]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x16]" identifier [ number_literal ])) != (char_literal "'\x01'" ' escape_sequence ')) )) && (parenthesized_expression "(param_3 != 0)" ( (binary_expression "param_3 != 0" identifier != number_literal) ))) )) && (parenthesized_expression "((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))" ( (parenthesized_expression "(*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4))" ( (binary_expression "*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)" (binary_expression "*(int *)(param_3 + 0x6c) == 9" (pointer_expression "*(int *)(param_3 + 0x6c)" * (cast_expression "(int *)(param_3 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x6c)" ( (binary_expression "param_3 + 0x6c" identifier + number_literal) )))) == number_literal) || (parenthesized_expression "(*(int *)(param_3 + 0x6c) == 4)" ( (binary_expression "*(int *)(param_3 + 0x6c) == 4" (pointer_expression "*(int *)(param_3 + 0x6c)" * (cast_expression "(int *)(param_3 + 0x6c)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x6c)" ( (binary_expression "param_3 + 0x6c" identifier + number_literal) )))) == number_literal) ))) )) ))) )) && (parenthesized_expression "((*(byte *)(param_3 + 0x70) & 2) != 0)" ( (binary_expression "(*(byte *)(param_3 + 0x70) & 2) != 0" (parenthesized_expression "(*(byte *)(param_3 + 0x70) & 2)" ( (binary_expression "*(byte *)(param_3 + 0x70) & 2" (pointer_expression "*(byte *)(param_3 + 0x70)" * (cast_expression "(byte *)(param_3 + 0x70)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 0x70)" ( (binary_expression "param_3 + 0x70" identifier + number_literal) )))) & number_literal) )) != number_literal) ))) )) (compound_statement "{\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }" { (expression_statement "param_1[0x17] = param_4;" (assignment_expression "param_1[0x17] = param_4" (subscript_expression "param_1[0x17]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined1 *)(param_1 + 0x16) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x16) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x16)" * (cast_expression "(undefined1 *)(param_1 + 0x16)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x16)" ( (binary_expression "param_1 + 0x16" identifier + number_literal) )))) = number_literal) ;) })) (if_statement "if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }" if (parenthesized_expression "((char)param_1[0x1c] == '\0')" ( (binary_expression "(char)param_1[0x1c] == '\0'" (cast_expression "(char)param_1[0x1c]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "param_1[0x1c]" identifier [ number_literal ])) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }" { (expression_statement "iVar4 = FUN_0027fb00(param_2,".comment");" (assignment_expression "iVar4 = FUN_0027fb00(param_2,".comment")" identifier = (call_expression "FUN_0027fb00(param_2,".comment")" identifier (argument_list "(param_2,".comment")" ( identifier , (string_literal "".comment"" " string_content ") )))) ;) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" identifier = false) ;) (expression_statement "bVar11 = iVar4 == 0;" (assignment_expression "bVar11 = iVar4 == 0" identifier = (binary_expression "iVar4 == 0" identifier == number_literal)) ;) (if_statement "if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }" if (parenthesized_expression "(!bVar11)" ( (unary_expression "!bVar11" ! identifier) )) (compound_statement "{\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }" { (expression_statement "pbVar6 = (byte *)*param_2;" (assignment_expression "pbVar6 = (byte *)*param_2" identifier = (cast_expression "(byte *)*param_2" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_2" * identifier))) ;) (expression_statement "lVar3 = 6;" (assignment_expression "lVar3 = 6" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = &DAT_00310869;" (assignment_expression "pbVar7 = &DAT_00310869" identifier = (pointer_expression "&DAT_00310869" & identifier)) ;) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);" do (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar9 = *pbVar5 < *pbVar7;" (assignment_expression "bVar9 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar11 = *pbVar5 == *pbVar7;" (assignment_expression "bVar11 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar11)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar9 && !bVar11) == bVar9;" (assignment_expression "bVar9 = (!bVar9 && !bVar11) == bVar9" identifier = (binary_expression "(!bVar9 && !bVar11) == bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" ( (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" ! identifier) && (unary_expression "!bVar11" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }" { (expression_statement "lVar3 = 7;" (assignment_expression "lVar3 = 7" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".zdebug";" (assignment_expression "pbVar7 = (byte *)".zdebug"" identifier = (cast_expression "(byte *)".zdebug"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".zdebug"" " string_content "))) ;) (do_statement "do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);" do (compound_statement "{\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar5 < *pbVar7;" (assignment_expression "bVar10 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar10 && !bVar9) == bVar10;" (assignment_expression "bVar9 = (!bVar10 && !bVar9) == bVar10" identifier = (binary_expression "(!bVar10 && !bVar9) == bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }" { (expression_statement "lVar3 = 0x11;" (assignment_expression "lVar3 = 0x11" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".gnu.linkonce.wi.";" (assignment_expression "pbVar7 = (byte *)".gnu.linkonce.wi."" identifier = (cast_expression "(byte *)".gnu.linkonce.wi."" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".gnu.linkonce.wi."" " string_content "))) ;) (do_statement "do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);" do (compound_statement "{\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar5 < *pbVar7;" (assignment_expression "bVar11 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar11 && !bVar9) == bVar11;" (assignment_expression "bVar9 = (!bVar11 && !bVar9) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" ( (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }" { (expression_statement "lVar3 = 5;" (assignment_expression "lVar3 = 5" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".line";" (assignment_expression "pbVar7 = (byte *)".line"" identifier = (cast_expression "(byte *)".line"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".line"" " string_content "))) ;) (do_statement "do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);" do (compound_statement "{\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar5 < *pbVar7;" (assignment_expression "bVar10 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar10 && !bVar9) == bVar10;" (assignment_expression "bVar9 = (!bVar10 && !bVar9) == bVar10" identifier = (binary_expression "(!bVar10 && !bVar9) == bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }" { (expression_statement "lVar3 = 5;" (assignment_expression "lVar3 = 5" identifier = number_literal) ;) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" identifier = identifier) ;) (expression_statement "pbVar7 = (byte *)".stab";" (assignment_expression "pbVar7 = (byte *)".stab"" identifier = (cast_expression "(byte *)".stab"" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (string_literal "".stab"" " string_content "))) ;) (do_statement "do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);" do (compound_statement "{\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar11 = *pbVar5 < *pbVar7;" (assignment_expression "bVar11 = *pbVar5 < *pbVar7" identifier = (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" * identifier) < (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" identifier = (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" * identifier) == (pointer_expression "*pbVar7" * identifier))) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" identifier = false) ;) (expression_statement "bVar9 = (!bVar11 && !bVar9) == bVar11;" (assignment_expression "bVar9 = (!bVar11 && !bVar9) == bVar11" identifier = (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" ( (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) == identifier)) ;) (if_statement "if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }" if (parenthesized_expression "(!bVar9)" ( (unary_expression "!bVar9" ! identifier) )) (compound_statement "{\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }" { (expression_statement "lVar3 = 4;" (assignment_expression "lVar3 = 4" identifier = number_literal) ;) (expression_statement "pbVar5 = &DAT_0031141d;" (assignment_expression "pbVar5 = &DAT_0031141d" identifier = (pointer_expression "&DAT_0031141d" & identifier)) ;) (do_statement "do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);" do (compound_statement "{\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                }" { (if_statement "if (lVar3 == 0) break;" if (parenthesized_expression "(lVar3 == 0)" ( (binary_expression "lVar3 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" identifier = (binary_expression "lVar3 + -1" identifier + number_literal)) ;) (expression_statement "bVar10 = *pbVar6 < *pbVar5;" (assignment_expression "bVar10 = *pbVar6 < *pbVar5" identifier = (binary_expression "*pbVar6 < *pbVar5" (pointer_expression "*pbVar6" * identifier) < (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "bVar9 = *pbVar6 == *pbVar5;" (assignment_expression "bVar9 = *pbVar6 == *pbVar5" identifier = (binary_expression "*pbVar6 == *pbVar5" (pointer_expression "*pbVar6" * identifier) == (pointer_expression "*pbVar5" * identifier))) ;) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar6 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" identifier = (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" identifier + (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" ( (type_descriptor "ulong" type_identifier) ) identifier) * number_literal)) + number_literal)) ;) }) while (parenthesized_expression "(bVar9)" ( identifier )) ;) (if_statement "if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }" if (parenthesized_expression "((!bVar10 && !bVar9) != bVar10)" ( (binary_expression "(!bVar10 && !bVar9) != bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" ( (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" ! identifier) && (unary_expression "!bVar9" ! identifier)) )) != identifier) )) (compound_statement "{\n                  return;\n                }" { (return_statement "return;" return ;) })) })) })) })) })) })) })) (if_statement "if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }" if (parenthesized_expression "((char)lVar2 == '\0')" ( (binary_expression "(char)lVar2 == '\0'" (cast_expression "(char)lVar2" ( (type_descriptor "char" primitive_type) ) identifier) == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }" { (expression_statement "lVar2 = *(long *)(param_4 + 8);" (assignment_expression "lVar2 = *(long *)(param_4 + 8)" identifier = (pointer_expression "*(long *)(param_4 + 8)" * (cast_expression "(long *)(param_4 + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 8)" ( (binary_expression "param_4 + 8" identifier + number_literal) ))))) ;) (expression_statement "*(undefined1 *)(param_1 + 0x1c) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x1c) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x1c)" * (cast_expression "(undefined1 *)(param_1 + 0x1c)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c)" ( (binary_expression "param_1 + 0x1c" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_1[0x1d] = lVar2;" (assignment_expression "param_1[0x1d] = lVar2" (subscript_expression "param_1[0x1d]" identifier [ number_literal ]) = identifier) ;) })) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != LIT) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) , (binary_expression IDENT == LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ])) != (char_literal ' escape_sequence ')) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (subscript_expression IDENT [ (binary_expression (binary_expression IDENT * LIT) + LIT) ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + (binary_expression IDENT * LIT)) + LIT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (return_statement return ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (return_statement return ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (binary_expression IDENT != LIT) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) ))) )) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) != LIT) ))) )) (compound_statement { (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") )))) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT == LIT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_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)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_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)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_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)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_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)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (string_literal " string_content "))) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_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)) ;) }) while (parenthesized_expression ( IDENT )) ;) (expression_statement (assignment_expression IDENT = BOOL) ;) (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) == IDENT)) ;) (if_statement if (parenthesized_expression ( (unary_expression ! IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * IDENT) < (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_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)) ;) }) while (parenthesized_expression ( IDENT )) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (unary_expression ! IDENT) && (unary_expression ! IDENT)) )) != IDENT) )) (compound_statement { (return_statement return ;) })) })) })) })) })) })) })) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) })) (return_statement return ;) })))
(function_definition "void FUN_00204300(long *param_1,undefined8 *param_2,long param_3,long param_4)\n\n{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  lVar2 = param_1[0x21];\n  *(undefined1 *)(param_1 + 0x21) = 0;\n  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }\n  iVar4 = 0;\n  plVar8 = param_1;\n  do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);\n  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }\n  if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00204300(long *param_1,undefined8 *param_2,long param_3,long param_4)" (identifier "FUN_00204300") (parameter_list "(long *param_1,undefined8 *param_2,long param_3,long param_4)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 *param_2" (type_identifier "undefined8") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "long param_3" (sized_type_specifier "long" (long "long")) (identifier "param_3")) (, ",") (parameter_declaration "long param_4" (sized_type_specifier "long" (long "long")) (identifier "param_4")) () ")"))) (compound_statement "{\n  int iVar1;\n  long lVar2;\n  long lVar3;\n  int iVar4;\n  byte *pbVar5;\n  byte *pbVar6;\n  byte *pbVar7;\n  long *plVar8;\n  bool bVar9;\n  bool bVar10;\n  bool bVar11;\n  byte bVar12;\n  \n  bVar12 = 0;\n  lVar2 = param_1[0x21];\n  *(undefined1 *)(param_1 + 0x21) = 0;\n  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }\n  iVar4 = 0;\n  plVar8 = param_1;\n  do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);\n  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }\n  if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }\n  return;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "long lVar2;" (sized_type_specifier "long" (long "long")) (identifier "lVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "byte *pbVar5;" (type_identifier "byte") (pointer_declarator "*pbVar5" (* "*") (identifier "pbVar5")) (; ";")) (declaration "byte *pbVar6;" (type_identifier "byte") (pointer_declarator "*pbVar6" (* "*") (identifier "pbVar6")) (; ";")) (declaration "byte *pbVar7;" (type_identifier "byte") (pointer_declarator "*pbVar7" (* "*") (identifier "pbVar7")) (; ";")) (declaration "long *plVar8;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar8" (* "*") (identifier "plVar8")) (; ";")) (declaration "bool bVar9;" (primitive_type "bool") (identifier "bVar9") (; ";")) (declaration "bool bVar10;" (primitive_type "bool") (identifier "bVar10") (; ";")) (declaration "bool bVar11;" (primitive_type "bool") (identifier "bVar11") (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (expression_statement "bVar12 = 0;" (assignment_expression "bVar12 = 0" (identifier "bVar12") (= "=") (number_literal "0")) (; ";")) (expression_statement "lVar2 = param_1[0x21];" (assignment_expression "lVar2 = param_1[0x21]" (identifier "lVar2") (= "=") (subscript_expression "param_1[0x21]" (identifier "param_1") ([ "[") (number_literal "0x21") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x21) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x21) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x21)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x21)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x21)" (( "(") (binary_expression "param_1 + 0x21" (identifier "param_1") (+ "+") (number_literal "0x21")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }" (if "if") (parenthesized_expression "((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0))" (( "(") (binary_expression "(param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)" (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_3 + 0x70) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_3 + 0x70) & 2) != 0" (parenthesized_expression "(*(byte *)(param_3 + 0x70) & 2)" (( "(") (binary_expression "*(byte *)(param_3 + 0x70) & 2" (pointer_expression "*(byte *)(param_3 + 0x70)" (* "*") (cast_expression "(byte *)(param_3 + 0x70)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x70)" (( "(") (binary_expression "param_3 + 0x70" (identifier "param_3") (+ "+") (number_literal "0x70")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    param_1[0x14] = param_4;\n    *(undefined1 *)(param_1 + 0x13) = 1;\n  }" ({ "{") (expression_statement "param_1[0x14] = param_4;" (assignment_expression "param_1[0x14] = param_4" (subscript_expression "param_1[0x14]" (identifier "param_1") ([ "[") (number_literal "0x14") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x13) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x13) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x13)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x13)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x13)" (( "(") (binary_expression "param_1 + 0x13" (identifier "param_1") (+ "+") (number_literal "0x13")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (expression_statement "iVar4 = 0;" (assignment_expression "iVar4 = 0" (identifier "iVar4") (= "=") (number_literal "0")) (; ";")) (expression_statement "plVar8 = param_1;" (assignment_expression "plVar8 = param_1" (identifier "plVar8") (= "=") (identifier "param_1")) (; ";")) (do_statement "do {\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  } while (iVar4 != 0xb);" (do "do") (compound_statement "{\n    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }\n    iVar4 = iVar4 + 1;\n    plVar8 = plVar8 + 3;\n  }" ({ "{") (if_statement "if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }" (if "if") (parenthesized_expression "((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0))" (( "(") (binary_expression "(*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)" (parenthesized_expression "(*plVar8 != 0)" (( "(") (binary_expression "*plVar8 != 0" (pointer_expression "*plVar8" (* "*") (identifier "plVar8")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar1 = FUN_0027fb00(param_2), iVar1 == 0)" (( "(") (comma_expression "iVar1 = FUN_0027fb00(param_2), iVar1 == 0" (assignment_expression "iVar1 = FUN_0027fb00(param_2)" (identifier "iVar1") (= "=") (call_expression "FUN_0027fb00(param_2)" (identifier "FUN_0027fb00") (argument_list "(param_2)" (( "(") (identifier "param_2") () ")")))) (, ",") (binary_expression "iVar1 == 0" (identifier "iVar1") (== "==") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n      lVar2 = (long)iVar4;\n      if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }\n      param_1[lVar2 * 3 + 2] = param_4;\n      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;\n      if (iVar4 != 5) {\n        return;\n      }\n      *(undefined1 *)(param_1 + 0x1c) = 0;\n      return;\n    }" ({ "{") (expression_statement "lVar2 = (long)iVar4;" (assignment_expression "lVar2 = (long)iVar4" (identifier "lVar2") (= "=") (cast_expression "(long)iVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar4"))) (; ";")) (if_statement "if ((char)param_1[lVar2 * 3 + 1] != '\0') {\n        return;\n      }" (if "if") (parenthesized_expression "((char)param_1[lVar2 * 3 + 1] != '\0')" (( "(") (binary_expression "(char)param_1[lVar2 * 3 + 1] != '\0'" (cast_expression "(char)param_1[lVar2 * 3 + 1]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[lVar2 * 3 + 1]" (identifier "param_1") ([ "[") (binary_expression "lVar2 * 3 + 1" (binary_expression "lVar2 * 3" (identifier "lVar2") (* "*") (number_literal "3")) (+ "+") (number_literal "1")) (] "]"))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "param_1[lVar2 * 3 + 2] = param_4;" (assignment_expression "param_1[lVar2 * 3 + 2] = param_4" (subscript_expression "param_1[lVar2 * 3 + 2]" (identifier "param_1") ([ "[") (binary_expression "lVar2 * 3 + 2" (binary_expression "lVar2 * 3" (identifier "lVar2") (* "*") (number_literal "3")) (+ "+") (number_literal "2")) (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;" (assignment_expression "*(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1" (pointer_expression "*(undefined1 *)(param_1 + lVar2 * 3 + 1)" (* "*") (cast_expression "(undefined1 *)(param_1 + lVar2 * 3 + 1)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + lVar2 * 3 + 1)" (( "(") (binary_expression "param_1 + lVar2 * 3 + 1" (binary_expression "param_1 + lVar2 * 3" (identifier "param_1") (+ "+") (binary_expression "lVar2 * 3" (identifier "lVar2") (* "*") (number_literal "3"))) (+ "+") (number_literal "1")) () ")")))) (= "=") (number_literal "1")) (; ";")) (if_statement "if (iVar4 != 5) {\n        return;\n      }" (if "if") (parenthesized_expression "(iVar4 != 5)" (( "(") (binary_expression "iVar4 != 5" (identifier "iVar4") (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n        return;\n      }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "*(undefined1 *)(param_1 + 0x1c) = 0;" (assignment_expression "*(undefined1 *)(param_1 + 0x1c) = 0" (pointer_expression "*(undefined1 *)(param_1 + 0x1c)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return;" (return "return") (; ";")) (} "}"))) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "plVar8 = plVar8 + 3;" (assignment_expression "plVar8 = plVar8 + 3" (identifier "plVar8") (= "=") (binary_expression "plVar8 + 3" (identifier "plVar8") (+ "+") (number_literal "3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0xb)" (( "(") (binary_expression "iVar4 != 0xb" (identifier "iVar4") (!= "!=") (number_literal "0xb")) () ")")) (; ";")) (if_statement "if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }" (if "if") (parenthesized_expression "(((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0))" (( "(") (binary_expression "((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&\n     ((*(byte *)(param_3 + 0x70) & 2) != 0)" (parenthesized_expression "((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4))))" (( "(") (binary_expression "(((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&\n      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))" (parenthesized_expression "(((char)param_1[0x16] != '\x01') && (param_3 != 0))" (( "(") (binary_expression "((char)param_1[0x16] != '\x01') && (param_3 != 0)" (parenthesized_expression "((char)param_1[0x16] != '\x01')" (( "(") (binary_expression "(char)param_1[0x16] != '\x01'" (cast_expression "(char)param_1[0x16]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[0x16]" (identifier "param_1") ([ "[") (number_literal "0x16") (] "]"))) (!= "!=") (char_literal "'\x01'" (' "'") (escape_sequence "\x01") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(param_3 != 0)" (( "(") (binary_expression "param_3 != 0" (identifier "param_3") (!= "!=") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))" (( "(") (parenthesized_expression "(*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4))" (( "(") (binary_expression "*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)" (binary_expression "*(int *)(param_3 + 0x6c) == 9" (pointer_expression "*(int *)(param_3 + 0x6c)" (* "*") (cast_expression "(int *)(param_3 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x6c)" (( "(") (binary_expression "param_3 + 0x6c" (identifier "param_3") (+ "+") (number_literal "0x6c")) () ")")))) (== "==") (number_literal "9")) (|| "||") (parenthesized_expression "(*(int *)(param_3 + 0x6c) == 4)" (( "(") (binary_expression "*(int *)(param_3 + 0x6c) == 4" (pointer_expression "*(int *)(param_3 + 0x6c)" (* "*") (cast_expression "(int *)(param_3 + 0x6c)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x6c)" (( "(") (binary_expression "param_3 + 0x6c" (identifier "param_3") (+ "+") (number_literal "0x6c")) () ")")))) (== "==") (number_literal "4")) () ")"))) () ")")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((*(byte *)(param_3 + 0x70) & 2) != 0)" (( "(") (binary_expression "(*(byte *)(param_3 + 0x70) & 2) != 0" (parenthesized_expression "(*(byte *)(param_3 + 0x70) & 2)" (( "(") (binary_expression "*(byte *)(param_3 + 0x70) & 2" (pointer_expression "*(byte *)(param_3 + 0x70)" (* "*") (cast_expression "(byte *)(param_3 + 0x70)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 0x70)" (( "(") (binary_expression "param_3 + 0x70" (identifier "param_3") (+ "+") (number_literal "0x70")) () ")")))) (& "&") (number_literal "2")) () ")")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n    param_1[0x17] = param_4;\n    *(undefined1 *)(param_1 + 0x16) = 1;\n  }" ({ "{") (expression_statement "param_1[0x17] = param_4;" (assignment_expression "param_1[0x17] = param_4" (subscript_expression "param_1[0x17]" (identifier "param_1") ([ "[") (number_literal "0x17") (] "]")) (= "=") (identifier "param_4")) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x16) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x16) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x16)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x16)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x16)" (( "(") (binary_expression "param_1 + 0x16" (identifier "param_1") (+ "+") (number_literal "0x16")) () ")")))) (= "=") (number_literal "1")) (; ";")) (} "}"))) (if_statement "if ((char)param_1[0x1c] == '\0') {\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }" (if "if") (parenthesized_expression "((char)param_1[0x1c] == '\0')" (( "(") (binary_expression "(char)param_1[0x1c] == '\0'" (cast_expression "(char)param_1[0x1c]" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (subscript_expression "param_1[0x1c]" (identifier "param_1") ([ "[") (number_literal "0x1c") (] "]"))) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    iVar4 = FUN_0027fb00(param_2,".comment");\n    bVar9 = false;\n    bVar11 = iVar4 == 0;\n    if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }\n    if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }\n  }" ({ "{") (expression_statement "iVar4 = FUN_0027fb00(param_2,".comment");" (assignment_expression "iVar4 = FUN_0027fb00(param_2,".comment")" (identifier "iVar4") (= "=") (call_expression "FUN_0027fb00(param_2,".comment")" (identifier "FUN_0027fb00") (argument_list "(param_2,".comment")" (( "(") (identifier "param_2") (, ",") (string_literal "".comment"" (" """) (string_content ".comment") (" """)) () ")")))) (; ";")) (expression_statement "bVar9 = false;" (assignment_expression "bVar9 = false" (identifier "bVar9") (= "=") (false "false")) (; ";")) (expression_statement "bVar11 = iVar4 == 0;" (assignment_expression "bVar11 = iVar4 == 0" (identifier "bVar11") (= "=") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) (; ";")) (if_statement "if (!bVar11) {\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }" (if "if") (parenthesized_expression "(!bVar11)" (( "(") (unary_expression "!bVar11" (! "!") (identifier "bVar11")) () ")")) (compound_statement "{\n      pbVar6 = (byte *)*param_2;\n      lVar3 = 6;\n      pbVar5 = pbVar6;\n      pbVar7 = &DAT_00310869;\n      do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);\n      bVar10 = false;\n      bVar9 = (!bVar9 && !bVar11) == bVar9;\n      if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }\n    }" ({ "{") (expression_statement "pbVar6 = (byte *)*param_2;" (assignment_expression "pbVar6 = (byte *)*param_2" (identifier "pbVar6") (= "=") (cast_expression "(byte *)*param_2" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_2" (* "*") (identifier "param_2")))) (; ";")) (expression_statement "lVar3 = 6;" (assignment_expression "lVar3 = 6" (identifier "lVar3") (= "=") (number_literal "6")) (; ";")) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" (identifier "pbVar5") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar7 = &DAT_00310869;" (assignment_expression "pbVar7 = &DAT_00310869" (identifier "pbVar7") (= "=") (pointer_expression "&DAT_00310869" (& "&") (identifier "DAT_00310869"))) (; ";")) (do_statement "do {\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      } while (bVar11);" (do "do") (compound_statement "{\n        if (lVar3 == 0) break;\n        lVar3 = lVar3 + -1;\n        bVar9 = *pbVar5 < *pbVar7;\n        bVar11 = *pbVar5 == *pbVar7;\n        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n      }" ({ "{") (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar9 = *pbVar5 < *pbVar7;" (assignment_expression "bVar9 = *pbVar5 < *pbVar7" (identifier "bVar9") (= "=") (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar11 = *pbVar5 == *pbVar7;" (assignment_expression "bVar11 = *pbVar5 == *pbVar7" (identifier "bVar11") (= "=") (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar11)" (( "(") (identifier "bVar11") () ")")) (; ";")) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = (!bVar9 && !bVar11) == bVar9;" (assignment_expression "bVar9 = (!bVar9 && !bVar11) == bVar9" (identifier "bVar9") (= "=") (binary_expression "(!bVar9 && !bVar11) == bVar9" (parenthesized_expression "(!bVar9 && !bVar11)" (( "(") (binary_expression "!bVar9 && !bVar11" (unary_expression "!bVar9" (! "!") (identifier "bVar9")) (&& "&&") (unary_expression "!bVar11" (! "!") (identifier "bVar11"))) () ")")) (== "==") (identifier "bVar9"))) (; ";")) (if_statement "if (!bVar9) {\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }" (if "if") (parenthesized_expression "(!bVar9)" (( "(") (unary_expression "!bVar9" (! "!") (identifier "bVar9")) () ")")) (compound_statement "{\n        lVar3 = 7;\n        pbVar5 = pbVar6;\n        pbVar7 = (byte *)".zdebug";\n        do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);\n        bVar11 = false;\n        bVar9 = (!bVar10 && !bVar9) == bVar10;\n        if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }\n      }" ({ "{") (expression_statement "lVar3 = 7;" (assignment_expression "lVar3 = 7" (identifier "lVar3") (= "=") (number_literal "7")) (; ";")) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" (identifier "pbVar5") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar7 = (byte *)".zdebug";" (assignment_expression "pbVar7 = (byte *)".zdebug"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".zdebug"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".zdebug"" (" """) (string_content ".zdebug") (" """)))) (; ";")) (do_statement "do {\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        } while (bVar9);" (do "do") (compound_statement "{\n          if (lVar3 == 0) break;\n          lVar3 = lVar3 + -1;\n          bVar10 = *pbVar5 < *pbVar7;\n          bVar9 = *pbVar5 == *pbVar7;\n          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n        }" ({ "{") (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = *pbVar5 < *pbVar7;" (assignment_expression "bVar10 = *pbVar5 < *pbVar7" (identifier "bVar10") (= "=") (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" (identifier "bVar9") (= "=") (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = (!bVar10 && !bVar9) == bVar10;" (assignment_expression "bVar9 = (!bVar10 && !bVar9) == bVar10" (identifier "bVar9") (= "=") (binary_expression "(!bVar10 && !bVar9) == bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" (( "(") (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" (! "!") (identifier "bVar10")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (== "==") (identifier "bVar10"))) (; ";")) (if_statement "if (!bVar9) {\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }" (if "if") (parenthesized_expression "(!bVar9)" (( "(") (unary_expression "!bVar9" (! "!") (identifier "bVar9")) () ")")) (compound_statement "{\n          lVar3 = 0x11;\n          pbVar5 = pbVar6;\n          pbVar7 = (byte *)".gnu.linkonce.wi.";\n          do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);\n          bVar10 = false;\n          bVar9 = (!bVar11 && !bVar9) == bVar11;\n          if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }\n        }" ({ "{") (expression_statement "lVar3 = 0x11;" (assignment_expression "lVar3 = 0x11" (identifier "lVar3") (= "=") (number_literal "0x11")) (; ";")) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" (identifier "pbVar5") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar7 = (byte *)".gnu.linkonce.wi.";" (assignment_expression "pbVar7 = (byte *)".gnu.linkonce.wi."" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".gnu.linkonce.wi."" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".gnu.linkonce.wi."" (" """) (string_content ".gnu.linkonce.wi.") (" """)))) (; ";")) (do_statement "do {\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          } while (bVar9);" (do "do") (compound_statement "{\n            if (lVar3 == 0) break;\n            lVar3 = lVar3 + -1;\n            bVar11 = *pbVar5 < *pbVar7;\n            bVar9 = *pbVar5 == *pbVar7;\n            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n          }" ({ "{") (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar5 < *pbVar7;" (assignment_expression "bVar11 = *pbVar5 < *pbVar7" (identifier "bVar11") (= "=") (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" (identifier "bVar9") (= "=") (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = (!bVar11 && !bVar9) == bVar11;" (assignment_expression "bVar9 = (!bVar11 && !bVar9) == bVar11" (identifier "bVar9") (= "=") (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" (( "(") (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" (! "!") (identifier "bVar11")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (== "==") (identifier "bVar11"))) (; ";")) (if_statement "if (!bVar9) {\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }" (if "if") (parenthesized_expression "(!bVar9)" (( "(") (unary_expression "!bVar9" (! "!") (identifier "bVar9")) () ")")) (compound_statement "{\n            lVar3 = 5;\n            pbVar5 = pbVar6;\n            pbVar7 = (byte *)".line";\n            do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);\n            bVar11 = false;\n            bVar9 = (!bVar10 && !bVar9) == bVar10;\n            if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }\n          }" ({ "{") (expression_statement "lVar3 = 5;" (assignment_expression "lVar3 = 5" (identifier "lVar3") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" (identifier "pbVar5") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar7 = (byte *)".line";" (assignment_expression "pbVar7 = (byte *)".line"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".line"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".line"" (" """) (string_content ".line") (" """)))) (; ";")) (do_statement "do {\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            } while (bVar9);" (do "do") (compound_statement "{\n              if (lVar3 == 0) break;\n              lVar3 = lVar3 + -1;\n              bVar10 = *pbVar5 < *pbVar7;\n              bVar9 = *pbVar5 == *pbVar7;\n              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n            }" ({ "{") (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = *pbVar5 < *pbVar7;" (assignment_expression "bVar10 = *pbVar5 < *pbVar7" (identifier "bVar10") (= "=") (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" (identifier "bVar9") (= "=") (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (expression_statement "bVar11 = false;" (assignment_expression "bVar11 = false" (identifier "bVar11") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = (!bVar10 && !bVar9) == bVar10;" (assignment_expression "bVar9 = (!bVar10 && !bVar9) == bVar10" (identifier "bVar9") (= "=") (binary_expression "(!bVar10 && !bVar9) == bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" (( "(") (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" (! "!") (identifier "bVar10")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (== "==") (identifier "bVar10"))) (; ";")) (if_statement "if (!bVar9) {\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }" (if "if") (parenthesized_expression "(!bVar9)" (( "(") (unary_expression "!bVar9" (! "!") (identifier "bVar9")) () ")")) (compound_statement "{\n              lVar3 = 5;\n              pbVar5 = pbVar6;\n              pbVar7 = (byte *)".stab";\n              do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);\n              bVar10 = false;\n              bVar9 = (!bVar11 && !bVar9) == bVar11;\n              if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }\n            }" ({ "{") (expression_statement "lVar3 = 5;" (assignment_expression "lVar3 = 5" (identifier "lVar3") (= "=") (number_literal "5")) (; ";")) (expression_statement "pbVar5 = pbVar6;" (assignment_expression "pbVar5 = pbVar6" (identifier "pbVar5") (= "=") (identifier "pbVar6")) (; ";")) (expression_statement "pbVar7 = (byte *)".stab";" (assignment_expression "pbVar7 = (byte *)".stab"" (identifier "pbVar7") (= "=") (cast_expression "(byte *)".stab"" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (string_literal "".stab"" (" """) (string_content ".stab") (" """)))) (; ";")) (do_statement "do {\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              } while (bVar9);" (do "do") (compound_statement "{\n                if (lVar3 == 0) break;\n                lVar3 = lVar3 + -1;\n                bVar11 = *pbVar5 < *pbVar7;\n                bVar9 = *pbVar5 == *pbVar7;\n                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;\n              }" ({ "{") (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar11 = *pbVar5 < *pbVar7;" (assignment_expression "bVar11 = *pbVar5 < *pbVar7" (identifier "bVar11") (= "=") (binary_expression "*pbVar5 < *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (< "<") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "bVar9 = *pbVar5 == *pbVar7;" (assignment_expression "bVar9 = *pbVar5 == *pbVar7" (identifier "bVar9") (= "=") (binary_expression "*pbVar5 == *pbVar7" (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")) (== "==") (pointer_expression "*pbVar7" (* "*") (identifier "pbVar7")))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1" (identifier "pbVar7") (= "=") (binary_expression "pbVar7 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar7 + (ulong)bVar12 * -2" (identifier "pbVar7") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (expression_statement "bVar10 = false;" (assignment_expression "bVar10 = false" (identifier "bVar10") (= "=") (false "false")) (; ";")) (expression_statement "bVar9 = (!bVar11 && !bVar9) == bVar11;" (assignment_expression "bVar9 = (!bVar11 && !bVar9) == bVar11" (identifier "bVar9") (= "=") (binary_expression "(!bVar11 && !bVar9) == bVar11" (parenthesized_expression "(!bVar11 && !bVar9)" (( "(") (binary_expression "!bVar11 && !bVar9" (unary_expression "!bVar11" (! "!") (identifier "bVar11")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (== "==") (identifier "bVar11"))) (; ";")) (if_statement "if (!bVar9) {\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }" (if "if") (parenthesized_expression "(!bVar9)" (( "(") (unary_expression "!bVar9" (! "!") (identifier "bVar9")) () ")")) (compound_statement "{\n                lVar3 = 4;\n                pbVar5 = &DAT_0031141d;\n                do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);\n                if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }\n              }" ({ "{") (expression_statement "lVar3 = 4;" (assignment_expression "lVar3 = 4" (identifier "lVar3") (= "=") (number_literal "4")) (; ";")) (expression_statement "pbVar5 = &DAT_0031141d;" (assignment_expression "pbVar5 = &DAT_0031141d" (identifier "pbVar5") (= "=") (pointer_expression "&DAT_0031141d" (& "&") (identifier "DAT_0031141d"))) (; ";")) (do_statement "do {\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                } while (bVar9);" (do "do") (compound_statement "{\n                  if (lVar3 == 0) break;\n                  lVar3 = lVar3 + -1;\n                  bVar10 = *pbVar6 < *pbVar5;\n                  bVar9 = *pbVar6 == *pbVar5;\n                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;\n                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;\n                }" ({ "{") (if_statement "if (lVar3 == 0) break;" (if "if") (parenthesized_expression "(lVar3 == 0)" (( "(") (binary_expression "lVar3 == 0" (identifier "lVar3") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar3 = lVar3 + -1;" (assignment_expression "lVar3 = lVar3 + -1" (identifier "lVar3") (= "=") (binary_expression "lVar3 + -1" (identifier "lVar3") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "bVar10 = *pbVar6 < *pbVar5;" (assignment_expression "bVar10 = *pbVar6 < *pbVar5" (identifier "bVar10") (= "=") (binary_expression "*pbVar6 < *pbVar5" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (< "<") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "bVar9 = *pbVar6 == *pbVar5;" (assignment_expression "bVar9 = *pbVar6 == *pbVar5" (identifier "bVar9") (= "=") (binary_expression "*pbVar6 == *pbVar5" (pointer_expression "*pbVar6" (* "*") (identifier "pbVar6")) (== "==") (pointer_expression "*pbVar5" (* "*") (identifier "pbVar5")))) (; ";")) (expression_statement "pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1" (identifier "pbVar6") (= "=") (binary_expression "pbVar6 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar6 + (ulong)bVar12 * -2" (identifier "pbVar6") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;" (assignment_expression "pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1" (identifier "pbVar5") (= "=") (binary_expression "pbVar5 + (ulong)bVar12 * -2 + 1" (binary_expression "pbVar5 + (ulong)bVar12 * -2" (identifier "pbVar5") (+ "+") (binary_expression "(ulong)bVar12 * -2" (cast_expression "(ulong)bVar12" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar12")) (* "*") (number_literal "-2"))) (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(bVar9)" (( "(") (identifier "bVar9") () ")")) (; ";")) (if_statement "if ((!bVar10 && !bVar9) != bVar10) {\n                  return;\n                }" (if "if") (parenthesized_expression "((!bVar10 && !bVar9) != bVar10)" (( "(") (binary_expression "(!bVar10 && !bVar9) != bVar10" (parenthesized_expression "(!bVar10 && !bVar9)" (( "(") (binary_expression "!bVar10 && !bVar9" (unary_expression "!bVar10" (! "!") (identifier "bVar10")) (&& "&&") (unary_expression "!bVar9" (! "!") (identifier "bVar9"))) () ")")) (!= "!=") (identifier "bVar10")) () ")")) (compound_statement "{\n                  return;\n                }" ({ "{") (return_statement "return;" (return "return") (; ";")) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (} "}"))) (if_statement "if ((char)lVar2 == '\0') {\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }" (if "if") (parenthesized_expression "((char)lVar2 == '\0')" (( "(") (binary_expression "(char)lVar2 == '\0'" (cast_expression "(char)lVar2" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "lVar2")) (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n      lVar2 = *(long *)(param_4 + 8);\n      *(undefined1 *)(param_1 + 0x1c) = 1;\n      param_1[0x1d] = lVar2;\n    }" ({ "{") (expression_statement "lVar2 = *(long *)(param_4 + 8);" (assignment_expression "lVar2 = *(long *)(param_4 + 8)" (identifier "lVar2") (= "=") (pointer_expression "*(long *)(param_4 + 8)" (* "*") (cast_expression "(long *)(param_4 + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 8)" (( "(") (binary_expression "param_4 + 8" (identifier "param_4") (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "*(undefined1 *)(param_1 + 0x1c) = 1;" (assignment_expression "*(undefined1 *)(param_1 + 0x1c) = 1" (pointer_expression "*(undefined1 *)(param_1 + 0x1c)" (* "*") (cast_expression "(undefined1 *)(param_1 + 0x1c)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c)" (( "(") (binary_expression "param_1 + 0x1c" (identifier "param_1") (+ "+") (number_literal "0x1c")) () ")")))) (= "=") (number_literal "1")) (; ";")) (expression_statement "param_1[0x1d] = lVar2;" (assignment_expression "param_1[0x1d] = lVar2" (subscript_expression "param_1[0x1d]" (identifier "param_1") ([ "[") (number_literal "0x1d") (] "]")) (= "=") (identifier "lVar2")) (; ";")) (} "}"))) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

/* DWARF original prototype: void output_section_init(Orphan_section_placement * this, string *
   name, Output_section * os, Elements_iterator location) */

void __thiscall
gold::type_1::function_1
          (type_1 *this,type_2 *name,type_3 *var_1,type_4 location
          )

{
  bool var_13;
  char *var_2;
  type_5 *p_Var3;
  int var_4;
  long var_6;
  int var_5;
  type_6 *var_7;
  type_6 *var_12;
  type_6 *var_8;
  type_1 *pOVar10;
  bool var_9;
  bool var_10;
  bool var_11;
  type_6 bVar14;
  
  bVar14 = 0;
  var_13 = this->first_init_;
  this->first_init_ = false;
  if ((var_1 != (type_3 *)0x0) && ((var_1->flags_ & 2) != 0)) {
    this->places_[6].location._M_node = location._M_node;
    this->places_[6].have_location = true;
  }
  var_5 = 0;
  pOVar10 = this;
  do {
    var_2 = pOVar10->places_[0].name;
    if ((var_2 != (char *)0x0) && (var_4 = std::type_2::var_3((type_2 *)name,var_2), var_4 == 0)
       ) {
      if (this->places_[var_5].have_location != false) {
        return;
      }
      this->places_[var_5].location._M_node = location._M_node;
      this->places_[var_5].have_location = true;
      if (var_5 != 5) {
        return;
      }
      this->places_[9].have_location = false;
      return;
    }
    var_5 = var_5 + 1;
    pOVar10 = (type_1 *)(pOVar10->places_ + 1);
  } while (var_5 != 0xb);
  if ((((this->places_[7].have_location != true) && (var_1 != (type_3 *)0x0)) &&
      ((var_1->type_ == 9 || (var_1->type_ == 4)))) && ((var_1->flags_ & 2) != 0)) {
    this->places_[7].location._M_node = location._M_node;
    this->places_[7].have_location = true;
  }
  if (this->places_[9].have_location == false) {
    var_5 = std::string::var_3((type_2 *)name,".comment");
    var_9 = false;
    var_11 = var_5 == 0;
    if (!var_11) {
      var_12 = (type_6 *)(name->_M_dataplus)._M_p;
      var_6 = 6;
      var_7 = var_12;
      var_8 = &DAT_00310869;
      do {
        if (var_6 == 0) break;
        var_6 = var_6 + -1;
        var_9 = *var_7 < *var_8;
        var_11 = *var_7 == *var_8;
        var_7 = var_7 + (type_7)bVar14 * -2 + 1;
        var_8 = var_8 + (type_7)bVar14 * -2 + 1;
      } while (var_11);
      var_10 = false;
      var_9 = (!var_9 && !var_11) == var_9;
      if (!var_9) {
        var_6 = 7;
        var_7 = var_12;
        var_8 = (type_6 *)".zdebug";
        do {
          if (var_6 == 0) break;
          var_6 = var_6 + -1;
          var_10 = *var_7 < *var_8;
          var_9 = *var_7 == *var_8;
          var_7 = var_7 + (type_7)bVar14 * -2 + 1;
          var_8 = var_8 + (type_7)bVar14 * -2 + 1;
        } while (var_9);
        var_11 = false;
        var_9 = (!var_10 && !var_9) == var_10;
        if (!var_9) {
          var_6 = 0x11;
          var_7 = var_12;
          var_8 = (type_6 *)".gnu.linkonce.wi.";
          do {
            if (var_6 == 0) break;
            var_6 = var_6 + -1;
            var_11 = *var_7 < *var_8;
            var_9 = *var_7 == *var_8;
            var_7 = var_7 + (type_7)bVar14 * -2 + 1;
            var_8 = var_8 + (type_7)bVar14 * -2 + 1;
          } while (var_9);
          var_10 = false;
          var_9 = (!var_11 && !var_9) == var_11;
          if (!var_9) {
            var_6 = 5;
            var_7 = var_12;
            var_8 = (type_6 *)".line";
            do {
              if (var_6 == 0) break;
              var_6 = var_6 + -1;
              var_10 = *var_7 < *var_8;
              var_9 = *var_7 == *var_8;
              var_7 = var_7 + (type_7)bVar14 * -2 + 1;
              var_8 = var_8 + (type_7)bVar14 * -2 + 1;
            } while (var_9);
            var_11 = false;
            var_9 = (!var_10 && !var_9) == var_10;
            if (!var_9) {
              var_6 = 5;
              var_7 = var_12;
              var_8 = (type_6 *)".stab";
              do {
                if (var_6 == 0) break;
                var_6 = var_6 + -1;
                var_11 = *var_7 < *var_8;
                var_9 = *var_7 == *var_8;
                var_7 = var_7 + (type_7)bVar14 * -2 + 1;
                var_8 = var_8 + (type_7)bVar14 * -2 + 1;
              } while (var_9);
              var_10 = false;
              var_9 = (!var_11 && !var_9) == var_11;
              if (!var_9) {
                var_6 = 4;
                var_7 = &DAT_0031141d;
                do {
                  if (var_6 == 0) break;
                  var_6 = var_6 + -1;
                  var_10 = *var_12 < *var_7;
                  var_9 = *var_12 == *var_7;
                  var_12 = var_12 + (type_7)bVar14 * -2 + 1;
                  var_7 = var_7 + (type_7)bVar14 * -2 + 1;
                } while (var_9);
                if ((!var_10 && !var_9) != var_10) {
                  return;
                }
              }
            }
          }
        }
      }
    }
    if (var_13 == false) {
      p_Var3 = (location._M_node)->_M_prev;
      this->places_[9].have_location = true;
      this->places_[9].location._M_node = p_Var3;
    }
  }
  return;
}


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

void MASKED(long *param_1,undefined8 *param_2,long param_3,long param_4)

{
  int iVar1;
  long lVar2;
  long lVar3;
  int iVar4;
  byte *pbVar5;
  byte *pbVar6;
  byte *pbVar7;
  long *plVar8;
  bool bVar9;
  bool bVar10;
  bool bVar11;
  byte bVar12;
  
  bVar12 = 0;
  lVar2 = param_1[0x21];
  *(undefined1 *)(param_1 + 0x21) = 0;
  if ((param_3 != 0) && ((*(byte *)(param_3 + 0x70) & 2) != 0)) {
    param_1[0x14] = param_4;
    *(undefined1 *)(param_1 + 0x13) = 1;
  }
  iVar4 = 0;
  plVar8 = param_1;
  do {
    if ((*plVar8 != 0) && (iVar1 = FUN_0027fb00(param_2), iVar1 == 0)) {
      lVar2 = (long)iVar4;
      if ((char)param_1[lVar2 * 3 + 1] != '\0') {
        return;
      }
      param_1[lVar2 * 3 + 2] = param_4;
      *(undefined1 *)(param_1 + lVar2 * 3 + 1) = 1;
      if (iVar4 != 5) {
        return;
      }
      *(undefined1 *)(param_1 + 0x1c) = 0;
      return;
    }
    iVar4 = iVar4 + 1;
    plVar8 = plVar8 + 3;
  } while (iVar4 != 0xb);
  if (((((char)param_1[0x16] != '\x01') && (param_3 != 0)) &&
      ((*(int *)(param_3 + 0x6c) == 9 || (*(int *)(param_3 + 0x6c) == 4)))) &&
     ((*(byte *)(param_3 + 0x70) & 2) != 0)) {
    param_1[0x17] = param_4;
    *(undefined1 *)(param_1 + 0x16) = 1;
  }
  if ((char)param_1[0x1c] == '\0') {
    iVar4 = FUN_0027fb00(param_2,".comment");
    bVar9 = false;
    bVar11 = iVar4 == 0;
    if (!bVar11) {
      pbVar6 = (byte *)*param_2;
      lVar3 = 6;
      pbVar5 = pbVar6;
      pbVar7 = &DAT_00310869;
      do {
        if (lVar3 == 0) break;
        lVar3 = lVar3 + -1;
        bVar9 = *pbVar5 < *pbVar7;
        bVar11 = *pbVar5 == *pbVar7;
        pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
        pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
      } while (bVar11);
      bVar10 = false;
      bVar9 = (!bVar9 && !bVar11) == bVar9;
      if (!bVar9) {
        lVar3 = 7;
        pbVar5 = pbVar6;
        pbVar7 = (byte *)".zdebug";
        do {
          if (lVar3 == 0) break;
          lVar3 = lVar3 + -1;
          bVar10 = *pbVar5 < *pbVar7;
          bVar9 = *pbVar5 == *pbVar7;
          pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
          pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
        } while (bVar9);
        bVar11 = false;
        bVar9 = (!bVar10 && !bVar9) == bVar10;
        if (!bVar9) {
          lVar3 = 0x11;
          pbVar5 = pbVar6;
          pbVar7 = (byte *)".gnu.linkonce.wi.";
          do {
            if (lVar3 == 0) break;
            lVar3 = lVar3 + -1;
            bVar11 = *pbVar5 < *pbVar7;
            bVar9 = *pbVar5 == *pbVar7;
            pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
            pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
          } while (bVar9);
          bVar10 = false;
          bVar9 = (!bVar11 && !bVar9) == bVar11;
          if (!bVar9) {
            lVar3 = 5;
            pbVar5 = pbVar6;
            pbVar7 = (byte *)".line";
            do {
              if (lVar3 == 0) break;
              lVar3 = lVar3 + -1;
              bVar10 = *pbVar5 < *pbVar7;
              bVar9 = *pbVar5 == *pbVar7;
              pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
              pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
            } while (bVar9);
            bVar11 = false;
            bVar9 = (!bVar10 && !bVar9) == bVar10;
            if (!bVar9) {
              lVar3 = 5;
              pbVar5 = pbVar6;
              pbVar7 = (byte *)".stab";
              do {
                if (lVar3 == 0) break;
                lVar3 = lVar3 + -1;
                bVar11 = *pbVar5 < *pbVar7;
                bVar9 = *pbVar5 == *pbVar7;
                pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
                pbVar7 = pbVar7 + (ulong)bVar12 * -2 + 1;
              } while (bVar9);
              bVar10 = false;
              bVar9 = (!bVar11 && !bVar9) == bVar11;
              if (!bVar9) {
                lVar3 = 4;
                pbVar5 = &DAT_0031141d;
                do {
                  if (lVar3 == 0) break;
                  lVar3 = lVar3 + -1;
                  bVar10 = *pbVar6 < *pbVar5;
                  bVar9 = *pbVar6 == *pbVar5;
                  pbVar6 = pbVar6 + (ulong)bVar12 * -2 + 1;
                  pbVar5 = pbVar5 + (ulong)bVar12 * -2 + 1;
                } while (bVar9);
                if ((!bVar10 && !bVar9) != bVar10) {
                  return;
                }
              }
            }
          }
        }
      }
    }
    if ((char)lVar2 == '\0') {
      lVar2 = *(long *)(param_4 + 8);
      *(undefined1 *)(param_1 + 0x1c) = 1;
      param_1[0x1d] = lVar2;
    }
  }
  return;
}

