
void closure(dfa *dfa)

{
  wint_t wc;
  long lVar1;
  ulong uVar2;
  token_conflict tVar3;
  char *s;
  idx_t iVar4;
  int iVar5;
  wchar_t wVar6;
  token_conflict *ptVar7;
  charclass *pcVar8;
  long lVar9;
  long in_FS_OFFSET;
  charclass c;
  
  pcVar8 = &c;
  lVar1 = *(long *)(in_FS_OFFSET + 0x28);
  uVar2 = (dfa->parse).tok;
  if (((long)uVar2 < 0x10a) && (0xff < uVar2)) {
    if (uVar2 == 0x109) {
      wc = (dfa->lex).wctok;
      if (wc == 0xffffffff) {
        addtok(dfa,0x112);
      }
      else {
        addtok_wc(dfa,wc);
        if (((dfa->syntax).case_fold != false) &&
           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {
          do {
            addtok_wc(dfa,*(wint_t *)pcVar8);
            addtok(dfa,0x106);
            pcVar8 = (charclass *)((long)pcVar8 + 4);
          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8
                  );
        }
      }
      tVar3 = lex(dfa);
      (dfa->parse).tok = tVar3;
    }
    else if (uVar2 == 0x107) {
      tVar3 = lex(dfa);
      (dfa->parse).tok = tVar3;
      regexp(dfa);
      if ((dfa->parse).tok != 0x108) {
        s = (char *)dcgettext(0,"unbalanced (",5);
                    /* WARNING: Subroutine does not return */
        dfaerror(s);
      }
      tVar3 = lex(dfa);
      (dfa->parse).tok = tVar3;
    }
    else {
      addtok(dfa,0x100);
    }
  }
  else {
    if ((uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false)) {
      if (dfa->utf8_anychar_classes[0] == 0) {
        c.w[0] = 0xffffffffffffffff;
        c.w[1] = 0xffffffffffffffff;
        c.w[2] = 0;
        c.w[3] = 0;
        uVar2 = (dfa->syntax).syntax_bits;
        if ((uVar2 & 0x40) == 0) {
          c.w[0] = 0xfffffffffffffbff;
        }
        if ((uVar2 & 0x80) != 0) {
          c.w[0] = c.w[0] & 0xfffffffffffffffe;
        }
        iVar4 = charclass_index(dfa,&c);
        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;
        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);
        ptVar7 = dfa->utf8_anychar_classes + 1;
        do {
          iVar4 = charclass_index(dfa,pcVar8);
          *ptVar7 = iVar4 + 0x114;
          pcVar8 = pcVar8 + 1;
          ptVar7 = ptVar7 + 1;
        } while ((mbstate_t *)ptVar7 != &dfa->mbs);
      }
      addtok(dfa,dfa->utf8_anychar_classes[0]);
      addtok(dfa,dfa->utf8_anychar_classes[1]);
      addtok(dfa,0xe0);
      addtok(dfa,dfa->utf8_anychar_classes[3]);
      addtok(dfa,0x105);
      addtok(dfa,0x106);
      addtok(dfa,0xed);
      addtok(dfa,dfa->utf8_anychar_classes[5]);
      addtok(dfa,0x105);
      addtok(dfa,0x106);
      addtok(dfa,dfa->utf8_anychar_classes[4]);
      addtok(dfa,0xf0);
      addtok(dfa,dfa->utf8_anychar_classes[6]);
      addtok(dfa,0x105);
      addtok(dfa,0x106);
      addtok(dfa,0xf4);
      addtok(dfa,dfa->utf8_anychar_classes[8]);
      addtok(dfa,0x105);
      addtok(dfa,0x106);
      addtok(dfa,dfa->utf8_anychar_classes[7]);
      iVar5 = 3;
      do {
        addtok(dfa,dfa->utf8_anychar_classes[2]);
        addtok(dfa,0x105);
        addtok(dfa,0x106);
        iVar5 = iVar5 + -1;
      } while (iVar5 != 0);
    }
    else {
      addtok(dfa,uVar2);
    }
    tVar3 = lex(dfa);
    (dfa->parse).tok = tVar3;
  }
  while (lVar9 = (dfa->parse).tok, lVar9 - 0x101U < 4) {
    if (lVar9 == 0x104) {
      lVar9._0_4_ = (dfa->lex).minrep;
      lVar9._4_4_ = (dfa->lex).maxrep;
      if (lVar9 == 0) {
        lVar9 = dfa->tindex;
        iVar4 = nsubtoks(dfa,lVar9);
        dfa->tindex = lVar9 - iVar4;
        tVar3 = lex(dfa);
        (dfa->parse).tok = tVar3;
        closure(dfa);
      }
      else {
        lVar9 = dfa->tindex;
        iVar4 = nsubtoks(dfa,lVar9);
        lVar9 = lVar9 - iVar4;
        if ((dfa->lex).maxrep < L'\0') {
          addtok(dfa,0x103);
        }
        if ((dfa->lex).minrep == L'\0') {
          addtok(dfa,0x101);
        }
        if ((dfa->lex).minrep < L'\x02') {
          wVar6 = L'\x01';
        }
        else {
          wVar6 = L'\x01';
          do {
            copytoks(dfa,lVar9,iVar4);
            addtok(dfa,0x105);
            wVar6 = wVar6 + L'\x01';
          } while (wVar6 < (dfa->lex).minrep);
        }
        if (wVar6 < (dfa->lex).maxrep) {
          do {
            copytoks(dfa,lVar9,iVar4);
            addtok(dfa,0x101);
            addtok(dfa,0x105);
            wVar6 = wVar6 + L'\x01';
          } while (wVar6 < (dfa->lex).maxrep);
        }
        tVar3 = lex(dfa);
        (dfa->parse).tok = tVar3;
      }
    }
    else {
      addtok(dfa,lVar9);
      tVar3 = lex(dfa);
      (dfa->parse).tok = tVar3;
    }
  }
  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}



void FUN_00163d0d(long param_1)

{
  ulong uVar1;
  undefined8 uVar2;
  long lVar3;
  int iVar4;
  long *plVar5;
  undefined8 *puVar6;
  undefined *puVar7;
  long lVar8;
  long in_FS_OFFSET;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  long local_30;
  
  puVar6 = &local_b8;
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  uVar1 = *(ulong *)(param_1 + 0x80);
  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {
    if (uVar1 == 0x109) {
      if (*(int *)(param_1 + 0x48) == -1) {
        FUN_00163b1d(param_1,0x112);
      }
      else {
        FUN_00163be2();
        if ((*(char *)(param_1 + 0x1c9) != '\0') &&
           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {
          do {
            FUN_00163be2(param_1,*(undefined4 *)puVar6);
            FUN_00163b1d(param_1,0x106);
            puVar6 = (undefined8 *)((long)puVar6 + 4);
          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);
        }
      }
      uVar2 = FUN_00162cca(param_1);
      *(undefined8 *)(param_1 + 0x80) = uVar2;
    }
    else if (uVar1 == 0x107) {
      uVar2 = FUN_00162cca();
      *(undefined8 *)(param_1 + 0x80) = uVar2;
      FUN_00163cc4(param_1);
      if (*(long *)(param_1 + 0x80) != 0x108) {
        uVar2 = dcgettext(0,"unbalanced (",5);
        FUN_0015eb4f(uVar2);
        goto LAB_0016405d;
      }
      uVar2 = FUN_00162cca(param_1);
      *(undefined8 *)(param_1 + 0x80) = uVar2;
    }
    else {
      FUN_00163b1d(param_1,0x100);
    }
  }
  else {
    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {
      if (*(long *)(param_1 + 200) == 0) {
        local_b8 = 0xffffffffffffffff;
        local_b0 = 0xffffffffffffffff;
        local_a8 = 0;
        local_a0 = 0;
        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {
          local_b8 = 0xfffffffffffffbff;
        }
        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {
          local_b8 = local_b8 & 0xfffffffffffffffe;
        }
        lVar8 = FUN_00162622(param_1,&local_b8);
        *(long *)(param_1 + 200) = lVar8 + 0x114;
        puVar7 = &DAT_00185da0;
        plVar5 = (long *)(param_1 + 0xd0);
        do {
          lVar8 = FUN_00162622(param_1,puVar7);
          *plVar5 = lVar8 + 0x114;
          puVar7 = puVar7 + 0x20;
          plVar5 = plVar5 + 1;
        } while (plVar5 != (long *)(param_1 + 0x110));
      }
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));
      FUN_00163b1d(param_1,0xe0);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));
      FUN_00163b1d(param_1,0x105);
      FUN_00163b1d(param_1,0x106);
      FUN_00163b1d(param_1,0xed);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));
      FUN_00163b1d(param_1,0x105);
      FUN_00163b1d(param_1,0x106);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));
      FUN_00163b1d(param_1,0xf0);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));
      FUN_00163b1d(param_1,0x105);
      FUN_00163b1d(param_1,0x106);
      FUN_00163b1d(param_1,0xf4);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));
      FUN_00163b1d(param_1,0x105);
      FUN_00163b1d(param_1,0x106);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));
      iVar4 = 3;
      do {
        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));
        FUN_00163b1d(param_1,0x105);
        FUN_00163b1d(param_1,0x106);
        iVar4 = iVar4 + -1;
      } while (iVar4 != 0);
    }
    else {
      FUN_00163b1d(param_1);
    }
    uVar2 = FUN_00162cca(param_1);
    *(undefined8 *)(param_1 + 0x80) = uVar2;
  }
  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {
    if (*(long *)(param_1 + 0x80) == 0x104) {
      if (*(long *)(param_1 + 0x40) == 0) {
        lVar8 = *(long *)(param_1 + 0x98);
        lVar3 = FUN_00161f5d(param_1,lVar8);
        *(long *)(param_1 + 0x98) = lVar8 - lVar3;
        uVar2 = FUN_00162cca(param_1);
        *(undefined8 *)(param_1 + 0x80) = uVar2;
        FUN_00163d0d(param_1);
      }
      else {
LAB_0016405d:
        lVar8 = *(long *)(param_1 + 0x98);
        lVar3 = FUN_00161f5d(param_1,lVar8);
        lVar8 = lVar8 - lVar3;
        if (*(int *)(param_1 + 0x44) < 0) {
          FUN_00163b1d(param_1,0x103);
        }
        if (*(int *)(param_1 + 0x40) == 0) {
          FUN_00163b1d(param_1,0x101);
        }
        if (*(int *)(param_1 + 0x40) < 2) {
          iVar4 = 1;
        }
        else {
          iVar4 = 1;
          do {
            FUN_00163a84(param_1,lVar8,lVar3);
            FUN_00163b1d(param_1,0x105);
            iVar4 = iVar4 + 1;
          } while (iVar4 < *(int *)(param_1 + 0x40));
        }
        if (iVar4 < *(int *)(param_1 + 0x44)) {
          do {
            FUN_00163a84(param_1,lVar8,lVar3);
            FUN_00163b1d(param_1,0x101);
            FUN_00163b1d(param_1,0x105);
            iVar4 = iVar4 + 1;
          } while (iVar4 < *(int *)(param_1 + 0x44));
        }
        uVar2 = FUN_00162cca(param_1);
        *(undefined8 *)(param_1 + 0x80) = uVar2;
      }
    }
    else {
      FUN_00163b1d(param_1);
      uVar2 = FUN_00162cca(param_1);
      *(undefined8 *)(param_1 + 0x80) = uVar2;
    }
  }
  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}


PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x98
MOV RBX,RDI
MOV RAX,qword ptr FS:[0x28]
MOV qword ptr [RSP + 0x88],RAX
XOR EAX,EAX
MOV RSI,qword ptr [RDI + 0x80]
CMP RSI,0x109
JG 0x00163d4d
CMP RSI,0xff
JA 0x00163f74
CMP RSI,0x10a
JNZ 0x00163d5f
CMP byte ptr [RBX + 0x41a],0x0
JNZ 0x00163d7b
MOV RDI,RBX
CALL 0x00163b1d
MOV RDI,RBX
CALL 0x00162cca
MOV qword ptr [RBX + 0x80],RAX
JMP 0x00164143
CMP qword ptr [RBX + 0xc8],0x0
JNZ 0x00163e11
MOV RAX,-0x1
MOV qword ptr [RSP],RAX
MOV qword ptr [RSP + 0x8],RAX
MOV qword ptr [RSP + 0x10],0x0
MOV qword ptr [RSP + 0x18],0x0
MOV RAX,qword ptr [RBX + 0x1c0]
TEST AL,0x40
JZ 0x00163f5d
TEST AL,0x80
JNZ 0x00163f6a
MOV RSI,RSP
MOV RDI,RBX
CALL 0x00162622
ADD RAX,0x114
MOV qword ptr [RBX + 0xc8],RAX
LEA R12,[0x185da0]
LEA RBP,[RBX + 0xd0]
LEA R13,[RBX + 0x110]
MOV RSI,R12
MOV RDI,RBX
CALL 0x00162622
ADD RAX,0x114
MOV qword ptr [RBP],RAX
ADD R12,0x20
ADD RBP,0x8
CMP RBP,R13
JNZ 0x00163def
MOV RSI,qword ptr [RBX + 0xc8]
MOV RDI,RBX
CALL 0x00163b1d
MOV RSI,qword ptr [RBX + 0xd0]
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0xe0
MOV RDI,RBX
CALL 0x00163b1d
MOV RSI,qword ptr [RBX + 0xe0]
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x105
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x106
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0xed
MOV RDI,RBX
CALL 0x00163b1d
MOV RSI,qword ptr [RBX + 0xf0]
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x105
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x106
MOV RDI,RBX
CALL 0x00163b1d
MOV RSI,qword ptr [RBX + 0xe8]
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0xf0
MOV RDI,RBX
CALL 0x00163b1d
MOV RSI,qword ptr [RBX + 0xf8]
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x105
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x106
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0xf4
MOV RDI,RBX
CALL 0x00163b1d
MOV RSI,qword ptr [RBX + 0x108]
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x105
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x106
MOV RDI,RBX
CALL 0x00163b1d
MOV RSI,qword ptr [RBX + 0x100]
MOV RDI,RBX
CALL 0x00163b1d
MOV EBP,0x3
MOV RSI,qword ptr [RBX + 0xd8]
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x105
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x106
MOV RDI,RBX
CALL 0x00163b1d
SUB EBP,0x1
JNZ 0x00163f2a
JMP 0x00163d67
MOV qword ptr [RSP],-0x401
JMP 0x00163dba
AND qword ptr [RSP],-0x2
JMP 0x00163dc2
CMP RSI,0x109
JZ 0x00163f99
CMP RSI,0x107
JZ 0x0016400a
MOV ESI,0x100
CALL 0x00163b1d
JMP 0x00164143
MOV ESI,dword ptr [RDI + 0x48]
CMP ESI,-0x1
JZ 0x00163fec
CALL 0x00163be2
CMP byte ptr [RBX + 0x1c9],0x0
JZ 0x00163ff6
MOV RSI,RSP
MOV EDI,dword ptr [RBX + 0x48]
CALL 0x001694b8
TEST EAX,EAX
JLE 0x00163ff6
MOV RBP,RSP
LEA EAX,[RAX + -0x1]
LEA R12,[RBP + RAX*0x4 + 0x4]
MOV ESI,dword ptr [RBP]
MOV RDI,RBX
CALL 0x00163be2
MOV ESI,0x106
MOV RDI,RBX
CALL 0x00163b1d
ADD RBP,0x4
CMP R12,RBP
JNZ 0x00163fc9
JMP 0x00163ff6
MOV ESI,0x112
CALL 0x00163b1d
MOV RDI,RBX
CALL 0x00162cca
MOV qword ptr [RBX + 0x80],RAX
JMP 0x00164143
CALL 0x00162cca
MOV qword ptr [RBX + 0x80],RAX
MOV RDI,RBX
CALL 0x00163cc4
CMP qword ptr [RBX + 0x80],0x108
JNZ 0x0016403f
MOV RDI,RBX
CALL 0x00162cca
MOV qword ptr [RBX + 0x80],RAX
JMP 0x00164143
MOV EDX,0x5
LEA RSI,[0x185a4b]
MOV EDI,0x0
CALL 0x00108bf0
MOV RDI,RAX
CALL 0x0015eb4f
MOV R12,qword ptr [RBX + 0x98]
MOV RSI,R12
MOV RDI,RBX
CALL 0x00161f5d
MOV R13,RAX
SUB R12,RAX
CMP dword ptr [RBX + 0x44],0x0
JS 0x00164101
CMP dword ptr [RBX + 0x40],0x0
JZ 0x00164113
CMP dword ptr [RBX + 0x40],0x1
JLE 0x00164125
MOV EBP,0x1
MOV RDX,R13
MOV RSI,R12
MOV RDI,RBX
CALL 0x00163a84
MOV ESI,0x105
MOV RDI,RBX
CALL 0x00163b1d
ADD EBP,0x1
CMP dword ptr [RBX + 0x40],EBP
JG 0x00164098
CMP dword ptr [RBX + 0x44],EBP
JLE 0x001640f0
MOV RDX,R13
MOV RSI,R12
MOV RDI,RBX
CALL 0x00163a84
MOV ESI,0x101
MOV RDI,RBX
CALL 0x00163b1d
MOV ESI,0x105
MOV RDI,RBX
CALL 0x00163b1d
ADD EBP,0x1
CMP dword ptr [RBX + 0x44],EBP
JG 0x001640c0
MOV RDI,RBX
CALL 0x00162cca
MOV qword ptr [RBX + 0x80],RAX
JMP 0x00164143
MOV ESI,0x103
MOV RDI,RBX
CALL 0x00163b1d
JMP 0x0016407f
MOV ESI,0x101
MOV RDI,RBX
CALL 0x00163b1d
JMP 0x00164089
MOV EBP,0x1
JMP 0x001640bb
MOV RDI,RBX
CALL 0x00163b1d
MOV RDI,RBX
CALL 0x00162cca
MOV qword ptr [RBX + 0x80],RAX
MOV RSI,qword ptr [RBX + 0x80]
LEA RAX,[RSI + -0x101]
CMP RAX,0x3
JA 0x001641a0
CMP RSI,0x104
JNZ 0x0016412c
CMP qword ptr [RBX + 0x40],0x0
JNZ 0x0016405d
MOV RBP,qword ptr [RBX + 0x98]
MOV RSI,RBP
MOV RDI,RBX
CALL 0x00161f5d
SUB RBP,RAX
MOV qword ptr [RBX + 0x98],RBP
MOV RDI,RBX
CALL 0x00162cca
MOV qword ptr [RBX + 0x80],RAX
MOV RDI,RBX
CALL 0x00163d0d
JMP 0x00164143
MOV RAX,qword ptr [RSP + 0x88]
XOR RAX,qword ptr FS:[0x28]
JNZ 0x001641c1
ADD RSP,0x98
POP RBX
POP RBP
POP R12
POP R13
RET
CALL 0x00108c10
(translation_unit "void FUN_00163d0d(long param_1)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  undefined *puVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  undefined8 local_b8;\n  undefined8 local_b0;\n  undefined8 local_a8;\n  undefined8 local_a0;\n  long local_30;\n  \n  puVar6 = &local_b8;\n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar1 = *(ulong *)(param_1 + 0x80);\n  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }\n  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00163d0d(long param_1)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  undefined *puVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  undefined8 local_b8;\n  undefined8 local_b0;\n  undefined8 local_a8;\n  undefined8 local_a0;\n  long local_30;\n  \n  puVar6 = &local_b8;\n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar1 = *(ulong *)(param_1 + 0x80);\n  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }\n  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00163d0d(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  undefined *puVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  undefined8 local_b8;\n  undefined8 local_b0;\n  undefined8 local_a8;\n  undefined8 local_a0;\n  long local_30;\n  \n  puVar6 = &local_b8;\n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar1 = *(ulong *)(param_1 + 0x80);\n  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }\n  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_b8;" type_identifier identifier ;) (declaration "undefined8 local_b0;" type_identifier identifier ;) (declaration "undefined8 local_a8;" type_identifier identifier ;) (declaration "undefined8 local_a0;" type_identifier identifier ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "puVar6 = &local_b8;" (assignment_expression "puVar6 = &local_b8" identifier = (pointer_expression "&local_b8" & identifier)) ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(ulong *)(param_1 + 0x80);" (assignment_expression "uVar1 = *(ulong *)(param_1 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x80)" * (cast_expression "(ulong *)(param_1 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }" if (parenthesized_expression "(((long)uVar1 < 0x10a) && (0xff < uVar1))" ( (binary_expression "((long)uVar1 < 0x10a) && (0xff < uVar1)" (parenthesized_expression "((long)uVar1 < 0x10a)" ( (binary_expression "(long)uVar1 < 0x10a" (cast_expression "(long)uVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) && (parenthesized_expression "(0xff < uVar1)" ( (binary_expression "0xff < uVar1" number_literal < identifier) ))) )) (compound_statement "{\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }" { (if_statement "if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }" if (parenthesized_expression "(uVar1 == 0x109)" ( (binary_expression "uVar1 == 0x109" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" { (if_statement "if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x48) == -1)" ( (binary_expression "*(int *)(param_1 + 0x48) == -1" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        FUN_00163b1d(param_1,0x112);\n      }" { (expression_statement "FUN_00163b1d(param_1,0x112);" (call_expression "FUN_00163b1d(param_1,0x112)" identifier (argument_list "(param_1,0x112)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }" else (compound_statement "{\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }" { (expression_statement "FUN_00163be2();" (call_expression "FUN_00163be2()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }" if (parenthesized_expression "((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4))" ( (binary_expression "(*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)" (parenthesized_expression "(*(char *)(param_1 + 0x1c9) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x1c9) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1c9)" * (cast_expression "(char *)(param_1 + 0x1c9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c9)" ( (binary_expression "param_1 + 0x1c9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)" ( (comma_expression "iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4" (assignment_expression "iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8)" identifier = (call_expression "FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x48),&local_b8)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , (pointer_expression "&local_b8" & identifier) )))) , (binary_expression "0 < iVar4" number_literal < identifier)) ))) )) (compound_statement "{\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }" { (do_statement "do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);" do (compound_statement "{\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          }" { (expression_statement "FUN_00163be2(param_1,*(undefined4 *)puVar6);" (call_expression "FUN_00163be2(param_1,*(undefined4 *)puVar6)" identifier (argument_list "(param_1,*(undefined4 *)puVar6)" ( identifier , (pointer_expression "*(undefined4 *)puVar6" * (cast_expression "(undefined4 *)puVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "puVar6 = (undefined8 *)((long)puVar6 + 4);" (assignment_expression "puVar6 = (undefined8 *)((long)puVar6 + 4)" identifier = (cast_expression "(undefined8 *)((long)puVar6 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 4)" ( (binary_expression "(long)puVar6 + 4" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6)" ( (binary_expression "(undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6" (cast_expression "(undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4)" ( (binary_expression "(long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4" (binary_expression "(long)&local_b8 + (ulong)(iVar4 - 1) * 4" (cast_expression "(long)&local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_b8" & identifier)) + (binary_expression "(ulong)(iVar4 - 1) * 4" (call_expression "(ulong)(iVar4 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar4 - 1)" ( (binary_expression "iVar4 - 1" identifier - number_literal) ))) * number_literal)) + number_literal) ))) != identifier) )) ;) })) }))) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }" else (if_statement "if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }" if (parenthesized_expression "(uVar1 == 0x107)" ( (binary_expression "uVar1 == 0x107" identifier == number_literal) )) (compound_statement "{\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" { (expression_statement "uVar2 = FUN_00162cca();" (assignment_expression "uVar2 = FUN_00162cca()" identifier = (call_expression "FUN_00162cca()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00163cc4(param_1);" (call_expression "FUN_00163cc4(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 0x80) != 0x108)" ( (binary_expression "*(long *)(param_1 + 0x80) != 0x108" (pointer_expression "*(long *)(param_1 + 0x80)" * (cast_expression "(long *)(param_1 + 0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }" { (expression_statement "uVar2 = dcgettext(0,"unbalanced (",5);" (assignment_expression "uVar2 = dcgettext(0,"unbalanced (",5)" identifier = (call_expression "dcgettext(0,"unbalanced (",5)" identifier (argument_list "(0,"unbalanced (",5)" ( number_literal , (string_literal ""unbalanced ("" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0015eb4f(uVar2);" (call_expression "FUN_0015eb4f(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (goto_statement "goto LAB_0016405d;" goto statement_identifier ;) })) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      FUN_00163b1d(param_1,0x100);\n    }" else (compound_statement "{\n      FUN_00163b1d(param_1,0x100);\n    }" { (expression_statement "FUN_00163b1d(param_1,0x100);" (call_expression "FUN_00163b1d(param_1,0x100)" identifier (argument_list "(param_1,0x100)" ( identifier , number_literal ))) ;) }))))) }) (else_clause "else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }" else (compound_statement "{\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }" { (if_statement "if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }" if (parenthesized_expression "((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0'))" ( (binary_expression "(uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')" (parenthesized_expression "(uVar1 == 0x10a)" ( (binary_expression "uVar1 == 0x10a" identifier == number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x41a) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x41a) != '\0'" (pointer_expression "*(char *)(param_1 + 0x41a)" * (cast_expression "(char *)(param_1 + 0x41a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x41a)" ( (binary_expression "param_1 + 0x41a" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }" { (if_statement "if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }" if (parenthesized_expression "(*(long *)(param_1 + 200) == 0)" ( (binary_expression "*(long *)(param_1 + 200) == 0" (pointer_expression "*(long *)(param_1 + 200)" * (cast_expression "(long *)(param_1 + 200)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }" { (expression_statement "local_b8 = 0xffffffffffffffff;" (assignment_expression "local_b8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "local_b0 = 0xffffffffffffffff;" (assignment_expression "local_b0 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" identifier = number_literal) ;) (if_statement "if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }" if (parenthesized_expression "((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0)" ( (binary_expression "(*(ulong *)(param_1 + 0x1c0) & 0x40) == 0" (parenthesized_expression "(*(ulong *)(param_1 + 0x1c0) & 0x40)" ( (binary_expression "*(ulong *)(param_1 + 0x1c0) & 0x40" (pointer_expression "*(ulong *)(param_1 + 0x1c0)" * (cast_expression "(ulong *)(param_1 + 0x1c0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c0)" ( (binary_expression "param_1 + 0x1c0" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          local_b8 = 0xfffffffffffffbff;\n        }" { (expression_statement "local_b8 = 0xfffffffffffffbff;" (assignment_expression "local_b8 = 0xfffffffffffffbff" identifier = number_literal) ;) })) (if_statement "if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }" if (parenthesized_expression "((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0)" ( (binary_expression "(*(ulong *)(param_1 + 0x1c0) & 0x80) != 0" (parenthesized_expression "(*(ulong *)(param_1 + 0x1c0) & 0x80)" ( (binary_expression "*(ulong *)(param_1 + 0x1c0) & 0x80" (pointer_expression "*(ulong *)(param_1 + 0x1c0)" * (cast_expression "(ulong *)(param_1 + 0x1c0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c0)" ( (binary_expression "param_1 + 0x1c0" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }" { (expression_statement "local_b8 = local_b8 & 0xfffffffffffffffe;" (assignment_expression "local_b8 = local_b8 & 0xfffffffffffffffe" identifier = (binary_expression "local_b8 & 0xfffffffffffffffe" identifier & number_literal)) ;) })) (expression_statement "lVar8 = FUN_00162622(param_1,&local_b8);" (assignment_expression "lVar8 = FUN_00162622(param_1,&local_b8)" identifier = (call_expression "FUN_00162622(param_1,&local_b8)" identifier (argument_list "(param_1,&local_b8)" ( identifier , (pointer_expression "&local_b8" & identifier) )))) ;) (expression_statement "*(long *)(param_1 + 200) = lVar8 + 0x114;" (assignment_expression "*(long *)(param_1 + 200) = lVar8 + 0x114" (pointer_expression "*(long *)(param_1 + 200)" * (cast_expression "(long *)(param_1 + 200)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) = (binary_expression "lVar8 + 0x114" identifier + number_literal)) ;) (expression_statement "puVar7 = &DAT_00185da0;" (assignment_expression "puVar7 = &DAT_00185da0" identifier = (pointer_expression "&DAT_00185da0" & identifier)) ;) (expression_statement "plVar5 = (long *)(param_1 + 0xd0);" (assignment_expression "plVar5 = (long *)(param_1 + 0xd0)" identifier = (cast_expression "(long *)(param_1 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) ;) (do_statement "do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));" do (compound_statement "{\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        }" { (expression_statement "lVar8 = FUN_00162622(param_1,puVar7);" (assignment_expression "lVar8 = FUN_00162622(param_1,puVar7)" identifier = (call_expression "FUN_00162622(param_1,puVar7)" identifier (argument_list "(param_1,puVar7)" ( identifier , identifier )))) ;) (expression_statement "*plVar5 = lVar8 + 0x114;" (assignment_expression "*plVar5 = lVar8 + 0x114" (pointer_expression "*plVar5" * identifier) = (binary_expression "lVar8 + 0x114" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar7 + 0x20;" (assignment_expression "puVar7 = puVar7 + 0x20" identifier = (binary_expression "puVar7 + 0x20" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + 1;" (assignment_expression "plVar5 = plVar5 + 1" identifier = (binary_expression "plVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar5 != (long *)(param_1 + 0x110))" ( (binary_expression "plVar5 != (long *)(param_1 + 0x110)" identifier != (cast_expression "(long *)(param_1 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) )) ;) })) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 200))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 200)" * (cast_expression "(undefined8 *)(param_1 + 200)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xd0))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xd0)" * (cast_expression "(undefined8 *)(param_1 + 0xd0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0xe0);" (call_expression "FUN_00163b1d(param_1,0xe0)" identifier (argument_list "(param_1,0xe0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xe0))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xe0)" * (cast_expression "(undefined8 *)(param_1 + 0xe0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0xed);" (call_expression "FUN_00163b1d(param_1,0xed)" identifier (argument_list "(param_1,0xed)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xf0))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xf0)" * (cast_expression "(undefined8 *)(param_1 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0)" ( (binary_expression "param_1 + 0xf0" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xe8))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xe8)" * (cast_expression "(undefined8 *)(param_1 + 0xe8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0xf0);" (call_expression "FUN_00163b1d(param_1,0xf0)" identifier (argument_list "(param_1,0xf0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xf8))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xf8)" * (cast_expression "(undefined8 *)(param_1 + 0xf8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0xf4);" (call_expression "FUN_00163b1d(param_1,0xf4)" identifier (argument_list "(param_1,0xf4)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0x108))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x108)" * (cast_expression "(undefined8 *)(param_1 + 0x108)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0x100))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x100)" * (cast_expression "(undefined8 *)(param_1 + 0x100)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) ))) ;) (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" identifier = number_literal) ;) (do_statement "do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);" do (compound_statement "{\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      }" { (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xd8))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xd8)" * (cast_expression "(undefined8 *)(param_1 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n      FUN_00163b1d(param_1);\n    }" else (compound_statement "{\n      FUN_00163b1d(param_1);\n    }" { (expression_statement "FUN_00163b1d(param_1);" (call_expression "FUN_00163b1d(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }))) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }))) (while_statement "while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }" while (parenthesized_expression "(*(long *)(param_1 + 0x80) - 0x101U < 4)" ( (binary_expression "*(long *)(param_1 + 0x80) - 0x101U < 4" (binary_expression "*(long *)(param_1 + 0x80) - 0x101U" (pointer_expression "*(long *)(param_1 + 0x80)" * (cast_expression "(long *)(param_1 + 0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) - number_literal) < number_literal) )) (compound_statement "{\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }" { (if_statement "if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x80) == 0x104)" ( (binary_expression "*(long *)(param_1 + 0x80) == 0x104" (pointer_expression "*(long *)(param_1 + 0x80)" * (cast_expression "(long *)(param_1 + 0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }" { (if_statement "if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 0x40) == 0)" ( (binary_expression "*(long *)(param_1 + 0x40) == 0" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }" { (expression_statement "lVar8 = *(long *)(param_1 + 0x98);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x98)" identifier = (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00161f5d(param_1,lVar8);" (assignment_expression "lVar3 = FUN_00161f5d(param_1,lVar8)" identifier = (call_expression "FUN_00161f5d(param_1,lVar8)" identifier (argument_list "(param_1,lVar8)" ( identifier , identifier )))) ;) (expression_statement "*(long *)(param_1 + 0x98) = lVar8 - lVar3;" (assignment_expression "*(long *)(param_1 + 0x98) = lVar8 - lVar3" (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) = (binary_expression "lVar8 - lVar3" identifier - identifier)) ;) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00163d0d(param_1);" (call_expression "FUN_00163d0d(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }" else (compound_statement "{\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }" { (labeled_statement "LAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);" statement_identifier : (expression_statement "lVar8 = *(long *)(param_1 + 0x98);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x98)" identifier = (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;)) (expression_statement "lVar3 = FUN_00161f5d(param_1,lVar8);" (assignment_expression "lVar3 = FUN_00161f5d(param_1,lVar8)" identifier = (call_expression "FUN_00161f5d(param_1,lVar8)" identifier (argument_list "(param_1,lVar8)" ( identifier , identifier )))) ;) (expression_statement "lVar8 = lVar8 - lVar3;" (assignment_expression "lVar8 = lVar8 - lVar3" identifier = (binary_expression "lVar8 - lVar3" identifier - identifier)) ;) (if_statement "if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x44) < 0)" ( (binary_expression "*(int *)(param_1 + 0x44) < 0" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n          FUN_00163b1d(param_1,0x103);\n        }" { (expression_statement "FUN_00163b1d(param_1,0x103);" (call_expression "FUN_00163b1d(param_1,0x103)" identifier (argument_list "(param_1,0x103)" ( identifier , number_literal ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x40) == 0)" ( (binary_expression "*(int *)(param_1 + 0x40) == 0" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          FUN_00163b1d(param_1,0x101);\n        }" { (expression_statement "FUN_00163b1d(param_1,0x101);" (call_expression "FUN_00163b1d(param_1,0x101)" identifier (argument_list "(param_1,0x101)" ( identifier , number_literal ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x40) < 2)" ( (binary_expression "*(int *)(param_1 + 0x40) < 2" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n          iVar4 = 1;\n        }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }" else (compound_statement "{\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (do_statement "do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));" do (compound_statement "{\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          }" { (expression_statement "FUN_00163a84(param_1,lVar8,lVar3);" (call_expression "FUN_00163a84(param_1,lVar8,lVar3)" identifier (argument_list "(param_1,lVar8,lVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x40))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x40)" identifier < (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) )) ;) }))) (if_statement "if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x44))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x44)" identifier < (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) )) (compound_statement "{\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }" { (do_statement "do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));" do (compound_statement "{\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          }" { (expression_statement "FUN_00163a84(param_1,lVar8,lVar3);" (call_expression "FUN_00163a84(param_1,lVar8,lVar3)" identifier (argument_list "(param_1,lVar8,lVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00163b1d(param_1,0x101);" (call_expression "FUN_00163b1d(param_1,0x101)" identifier (argument_list "(param_1,0x101)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x44))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x44)" identifier < (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) )) ;) })) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }))) }) (else_clause "else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" else (compound_statement "{\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" { (expression_statement "FUN_00163b1d(param_1);" (call_expression "FUN_00163b1d(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }))) })) (if_statement "if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_30 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void closure(dfa *dfa)\n\n{\n  wint_t wc;\n  long lVar1;\n  ulong uVar2;\n  token_conflict tVar3;\n  char *s;\n  idx_t iVar4;\n  int iVar5;\n  wchar_t wVar6;\n  token_conflict *ptVar7;\n  charclass *pcVar8;\n  long lVar9;\n  long in_FS_OFFSET;\n  charclass c;\n  \n  pcVar8 = &c;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar2 = (dfa->parse).tok;\n  if (((long)uVar2 < 0x10a) && (0xff < uVar2)) {\n    if (uVar2 == 0x109) {\n      wc = (dfa->lex).wctok;\n      if (wc == 0xffffffff) {\n        addtok(dfa,0x112);\n      }\n      else {\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else if (uVar2 == 0x107) {\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n      regexp(dfa);\n      if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else {\n      addtok(dfa,0x100);\n    }\n  }\n  else {\n    if ((uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false)) {\n      if (dfa->utf8_anychar_classes[0] == 0) {\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }\n      addtok(dfa,dfa->utf8_anychar_classes[0]);\n      addtok(dfa,dfa->utf8_anychar_classes[1]);\n      addtok(dfa,0xe0);\n      addtok(dfa,dfa->utf8_anychar_classes[3]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xed);\n      addtok(dfa,dfa->utf8_anychar_classes[5]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[4]);\n      addtok(dfa,0xf0);\n      addtok(dfa,dfa->utf8_anychar_classes[6]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xf4);\n      addtok(dfa,dfa->utf8_anychar_classes[8]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[7]);\n      iVar5 = 3;\n      do {\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      } while (iVar5 != 0);\n    }\n    else {\n      addtok(dfa,uVar2);\n    }\n    tVar3 = lex(dfa);\n    (dfa->parse).tok = tVar3;\n  }\n  while (lVar9 = (dfa->parse).tok, lVar9 - 0x101U < 4) {\n    if (lVar9 == 0x104) {\n      lVar9._0_4_ = (dfa->lex).minrep;\n      lVar9._4_4_ = (dfa->lex).maxrep;\n      if (lVar9 == 0) {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        dfa->tindex = lVar9 - iVar4;\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n        closure(dfa);\n      }\n      else {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }\n    }\n    else {\n      addtok(dfa,lVar9);\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n  }\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void closure(dfa *dfa)\n\n{\n  wint_t wc;\n  long lVar1;\n  ulong uVar2;\n  token_conflict tVar3;\n  char *s;\n  idx_t iVar4;\n  int iVar5;\n  wchar_t wVar6;\n  token_conflict *ptVar7;\n  charclass *pcVar8;\n  long lVar9;\n  long in_FS_OFFSET;\n  charclass c;\n  \n  pcVar8 = &c;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar2 = (dfa->parse).tok;\n  if (((long)uVar2 < 0x10a) && (0xff < uVar2)) {\n    if (uVar2 == 0x109) {\n      wc = (dfa->lex).wctok;\n      if (wc == 0xffffffff) {\n        addtok(dfa,0x112);\n      }\n      else {\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else if (uVar2 == 0x107) {\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n      regexp(dfa);\n      if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else {\n      addtok(dfa,0x100);\n    }\n  }\n  else {\n    if ((uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false)) {\n      if (dfa->utf8_anychar_classes[0] == 0) {\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }\n      addtok(dfa,dfa->utf8_anychar_classes[0]);\n      addtok(dfa,dfa->utf8_anychar_classes[1]);\n      addtok(dfa,0xe0);\n      addtok(dfa,dfa->utf8_anychar_classes[3]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xed);\n      addtok(dfa,dfa->utf8_anychar_classes[5]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[4]);\n      addtok(dfa,0xf0);\n      addtok(dfa,dfa->utf8_anychar_classes[6]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xf4);\n      addtok(dfa,dfa->utf8_anychar_classes[8]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[7]);\n      iVar5 = 3;\n      do {\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      } while (iVar5 != 0);\n    }\n    else {\n      addtok(dfa,uVar2);\n    }\n    tVar3 = lex(dfa);\n    (dfa->parse).tok = tVar3;\n  }\n  while (lVar9 = (dfa->parse).tok, lVar9 - 0x101U < 4) {\n    if (lVar9 == 0x104) {\n      lVar9._0_4_ = (dfa->lex).minrep;\n      lVar9._4_4_ = (dfa->lex).maxrep;\n      if (lVar9 == 0) {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        dfa->tindex = lVar9 - iVar4;\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n        closure(dfa);\n      }\n      else {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }\n    }\n    else {\n      addtok(dfa,lVar9);\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n  }\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "closure(dfa *dfa)" identifier (parameter_list "(dfa *dfa)" ( (parameter_declaration "dfa *dfa" type_identifier (pointer_declarator "*dfa" * identifier)) ))) (compound_statement "{\n  wint_t wc;\n  long lVar1;\n  ulong uVar2;\n  token_conflict tVar3;\n  char *s;\n  idx_t iVar4;\n  int iVar5;\n  wchar_t wVar6;\n  token_conflict *ptVar7;\n  charclass *pcVar8;\n  long lVar9;\n  long in_FS_OFFSET;\n  charclass c;\n  \n  pcVar8 = &c;\n  lVar1 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar2 = (dfa->parse).tok;\n  if (((long)uVar2 < 0x10a) && (0xff < uVar2)) {\n    if (uVar2 == 0x109) {\n      wc = (dfa->lex).wctok;\n      if (wc == 0xffffffff) {\n        addtok(dfa,0x112);\n      }\n      else {\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else if (uVar2 == 0x107) {\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n      regexp(dfa);\n      if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else {\n      addtok(dfa,0x100);\n    }\n  }\n  else {\n    if ((uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false)) {\n      if (dfa->utf8_anychar_classes[0] == 0) {\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }\n      addtok(dfa,dfa->utf8_anychar_classes[0]);\n      addtok(dfa,dfa->utf8_anychar_classes[1]);\n      addtok(dfa,0xe0);\n      addtok(dfa,dfa->utf8_anychar_classes[3]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xed);\n      addtok(dfa,dfa->utf8_anychar_classes[5]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[4]);\n      addtok(dfa,0xf0);\n      addtok(dfa,dfa->utf8_anychar_classes[6]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xf4);\n      addtok(dfa,dfa->utf8_anychar_classes[8]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[7]);\n      iVar5 = 3;\n      do {\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      } while (iVar5 != 0);\n    }\n    else {\n      addtok(dfa,uVar2);\n    }\n    tVar3 = lex(dfa);\n    (dfa->parse).tok = tVar3;\n  }\n  while (lVar9 = (dfa->parse).tok, lVar9 - 0x101U < 4) {\n    if (lVar9 == 0x104) {\n      lVar9._0_4_ = (dfa->lex).minrep;\n      lVar9._4_4_ = (dfa->lex).maxrep;\n      if (lVar9 == 0) {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        dfa->tindex = lVar9 - iVar4;\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n        closure(dfa);\n      }\n      else {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }\n    }\n    else {\n      addtok(dfa,lVar9);\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n  }\n  if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "wint_t wc;" type_identifier identifier ;) (declaration "long lVar1;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar2;" type_identifier identifier ;) (declaration "token_conflict tVar3;" type_identifier identifier ;) (declaration "char *s;" primitive_type (pointer_declarator "*s" * identifier) ;) (declaration "idx_t iVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "wchar_t wVar6;" type_identifier identifier ;) (declaration "token_conflict *ptVar7;" type_identifier (pointer_declarator "*ptVar7" * identifier) ;) (declaration "charclass *pcVar8;" type_identifier (pointer_declarator "*pcVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "charclass c;" type_identifier identifier ;) (expression_statement "pcVar8 = &c;" (assignment_expression "pcVar8 = &c" identifier = (pointer_expression "&c" & identifier)) ;) (expression_statement "lVar1 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "lVar1 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar2 = (dfa->parse).tok;" (assignment_expression "uVar2 = (dfa->parse).tok" identifier = (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (((long)uVar2 < 0x10a) && (0xff < uVar2)) {\n    if (uVar2 == 0x109) {\n      wc = (dfa->lex).wctok;\n      if (wc == 0xffffffff) {\n        addtok(dfa,0x112);\n      }\n      else {\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else if (uVar2 == 0x107) {\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n      regexp(dfa);\n      if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else {\n      addtok(dfa,0x100);\n    }\n  }\n  else {\n    if ((uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false)) {\n      if (dfa->utf8_anychar_classes[0] == 0) {\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }\n      addtok(dfa,dfa->utf8_anychar_classes[0]);\n      addtok(dfa,dfa->utf8_anychar_classes[1]);\n      addtok(dfa,0xe0);\n      addtok(dfa,dfa->utf8_anychar_classes[3]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xed);\n      addtok(dfa,dfa->utf8_anychar_classes[5]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[4]);\n      addtok(dfa,0xf0);\n      addtok(dfa,dfa->utf8_anychar_classes[6]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xf4);\n      addtok(dfa,dfa->utf8_anychar_classes[8]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[7]);\n      iVar5 = 3;\n      do {\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      } while (iVar5 != 0);\n    }\n    else {\n      addtok(dfa,uVar2);\n    }\n    tVar3 = lex(dfa);\n    (dfa->parse).tok = tVar3;\n  }" if (parenthesized_expression "(((long)uVar2 < 0x10a) && (0xff < uVar2))" ( (binary_expression "((long)uVar2 < 0x10a) && (0xff < uVar2)" (parenthesized_expression "((long)uVar2 < 0x10a)" ( (binary_expression "(long)uVar2 < 0x10a" (cast_expression "(long)uVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) && (parenthesized_expression "(0xff < uVar2)" ( (binary_expression "0xff < uVar2" number_literal < identifier) ))) )) (compound_statement "{\n    if (uVar2 == 0x109) {\n      wc = (dfa->lex).wctok;\n      if (wc == 0xffffffff) {\n        addtok(dfa,0x112);\n      }\n      else {\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else if (uVar2 == 0x107) {\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n      regexp(dfa);\n      if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else {\n      addtok(dfa,0x100);\n    }\n  }" { (if_statement "if (uVar2 == 0x109) {\n      wc = (dfa->lex).wctok;\n      if (wc == 0xffffffff) {\n        addtok(dfa,0x112);\n      }\n      else {\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else if (uVar2 == 0x107) {\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n      regexp(dfa);\n      if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else {\n      addtok(dfa,0x100);\n    }" if (parenthesized_expression "(uVar2 == 0x109)" ( (binary_expression "uVar2 == 0x109" identifier == number_literal) )) (compound_statement "{\n      wc = (dfa->lex).wctok;\n      if (wc == 0xffffffff) {\n        addtok(dfa,0x112);\n      }\n      else {\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }" { (expression_statement "wc = (dfa->lex).wctok;" (assignment_expression "wc = (dfa->lex).wctok" identifier = (field_expression "(dfa->lex).wctok" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (wc == 0xffffffff) {\n        addtok(dfa,0x112);\n      }\n      else {\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }" if (parenthesized_expression "(wc == 0xffffffff)" ( (binary_expression "wc == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n        addtok(dfa,0x112);\n      }" { (expression_statement "addtok(dfa,0x112);" (call_expression "addtok(dfa,0x112)" identifier (argument_list "(dfa,0x112)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }" else (compound_statement "{\n        addtok_wc(dfa,wc);\n        if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }\n      }" { (expression_statement "addtok_wc(dfa,wc);" (call_expression "addtok_wc(dfa,wc)" identifier (argument_list "(dfa,wc)" ( identifier , identifier ))) ;) (if_statement "if (((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)) {\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }" if (parenthesized_expression "(((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6))" ( (binary_expression "((dfa->syntax).case_fold != false) &&\n           (wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)" (parenthesized_expression "((dfa->syntax).case_fold != false)" ( (binary_expression "(dfa->syntax).case_fold != false" (field_expression "(dfa->syntax).case_fold" (parenthesized_expression "(dfa->syntax)" ( (field_expression "dfa->syntax" identifier -> field_identifier) )) . field_identifier) != false) )) && (parenthesized_expression "(wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6)" ( (comma_expression "wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c), L'\0' < wVar6" (assignment_expression "wVar6 = case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c)" identifier = (call_expression "case_folded_counterparts((dfa->lex).wctok,(wchar_t *)&c)" identifier (argument_list "((dfa->lex).wctok,(wchar_t *)&c)" ( (field_expression "(dfa->lex).wctok" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier) , (cast_expression "(wchar_t *)&c" ( (type_descriptor "wchar_t *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&c" & identifier)) )))) , (binary_expression "L'\0' < wVar6" (char_literal "L'\0'" L' escape_sequence ') < identifier)) ))) )) (compound_statement "{\n          do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );\n        }" { (do_statement "do {\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          } while ((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  );" do (compound_statement "{\n            addtok_wc(dfa,*(wint_t *)pcVar8);\n            addtok(dfa,0x106);\n            pcVar8 = (charclass *)((long)pcVar8 + 4);\n          }" { (expression_statement "addtok_wc(dfa,*(wint_t *)pcVar8);" (call_expression "addtok_wc(dfa,*(wint_t *)pcVar8)" identifier (argument_list "(dfa,*(wint_t *)pcVar8)" ( identifier , (pointer_expression "*(wint_t *)pcVar8" * (cast_expression "(wint_t *)pcVar8" ( (type_descriptor "wint_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "addtok(dfa,0x106);" (call_expression "addtok(dfa,0x106)" identifier (argument_list "(dfa,0x106)" ( identifier , number_literal ))) ;) (expression_statement "pcVar8 = (charclass *)((long)pcVar8 + 4);" (assignment_expression "pcVar8 = (charclass *)((long)pcVar8 + 4)" identifier = (cast_expression "(charclass *)((long)pcVar8 + 4)" ( (type_descriptor "charclass *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)pcVar8 + 4)" ( (binary_expression "(long)pcVar8 + 4" (cast_expression "(long)pcVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "((charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8\n                  )" ( (binary_expression "(charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4) != pcVar8" (cast_expression "(charclass *)((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4)" ( (type_descriptor "charclass *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4)" ( (binary_expression "(long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4 + 4" (binary_expression "(long)c.w + (ulong)(uint)(wVar6 + L'\xffffffff') * 4" (cast_expression "(long)c.w" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "c.w" identifier . field_identifier)) + (binary_expression "(ulong)(uint)(wVar6 + L'\xffffffff') * 4" (call_expression "(ulong)(uint)(wVar6 + L'\xffffffff')" (call_expression "(ulong)(uint)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(uint)" ( identifier ))) (argument_list "(wVar6 + L'\xffffffff')" ( (binary_expression "wVar6 + L'\xffffffff'" identifier + (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) ))) * number_literal)) + number_literal) ))) != identifier) )) ;) })) }))) (expression_statement "tVar3 = lex(dfa);" (assignment_expression "tVar3 = lex(dfa)" identifier = (call_expression "lex(dfa)" identifier (argument_list "(dfa)" ( identifier )))) ;) (expression_statement "(dfa->parse).tok = tVar3;" (assignment_expression "(dfa->parse).tok = tVar3" (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else if (uVar2 == 0x107) {\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n      regexp(dfa);\n      if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else {\n      addtok(dfa,0x100);\n    }" else (if_statement "if (uVar2 == 0x107) {\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n      regexp(dfa);\n      if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n    else {\n      addtok(dfa,0x100);\n    }" if (parenthesized_expression "(uVar2 == 0x107)" ( (binary_expression "uVar2 == 0x107" identifier == number_literal) )) (compound_statement "{\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n      regexp(dfa);\n      if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }" { (expression_statement "tVar3 = lex(dfa);" (assignment_expression "tVar3 = lex(dfa)" identifier = (call_expression "lex(dfa)" identifier (argument_list "(dfa)" ( identifier )))) ;) (expression_statement "(dfa->parse).tok = tVar3;" (assignment_expression "(dfa->parse).tok = tVar3" (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "regexp(dfa);" (call_expression "regexp(dfa)" identifier (argument_list "(dfa)" ( identifier ))) ;) (if_statement "if ((dfa->parse).tok != 0x108) {\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }" if (parenthesized_expression "((dfa->parse).tok != 0x108)" ( (binary_expression "(dfa->parse).tok != 0x108" (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier) != number_literal) )) (compound_statement "{\n        s = (char *)dcgettext(0,"unbalanced (",5);\n                    /* WARNING: Subroutine does not return */\n        dfaerror(s);\n      }" { (expression_statement "s = (char *)dcgettext(0,"unbalanced (",5);" (assignment_expression "s = (char *)dcgettext(0,"unbalanced (",5)" identifier = (cast_expression "(char *)dcgettext(0,"unbalanced (",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"unbalanced (",5)" identifier (argument_list "(0,"unbalanced (",5)" ( number_literal , (string_literal ""unbalanced ("" " string_content ") , number_literal ))))) ;) comment (expression_statement "dfaerror(s);" (call_expression "dfaerror(s)" identifier (argument_list "(s)" ( identifier ))) ;) })) (expression_statement "tVar3 = lex(dfa);" (assignment_expression "tVar3 = lex(dfa)" identifier = (call_expression "lex(dfa)" identifier (argument_list "(dfa)" ( identifier )))) ;) (expression_statement "(dfa->parse).tok = tVar3;" (assignment_expression "(dfa->parse).tok = tVar3" (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }) (else_clause "else {\n      addtok(dfa,0x100);\n    }" else (compound_statement "{\n      addtok(dfa,0x100);\n    }" { (expression_statement "addtok(dfa,0x100);" (call_expression "addtok(dfa,0x100)" identifier (argument_list "(dfa,0x100)" ( identifier , number_literal ))) ;) }))))) }) (else_clause "else {\n    if ((uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false)) {\n      if (dfa->utf8_anychar_classes[0] == 0) {\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }\n      addtok(dfa,dfa->utf8_anychar_classes[0]);\n      addtok(dfa,dfa->utf8_anychar_classes[1]);\n      addtok(dfa,0xe0);\n      addtok(dfa,dfa->utf8_anychar_classes[3]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xed);\n      addtok(dfa,dfa->utf8_anychar_classes[5]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[4]);\n      addtok(dfa,0xf0);\n      addtok(dfa,dfa->utf8_anychar_classes[6]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xf4);\n      addtok(dfa,dfa->utf8_anychar_classes[8]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[7]);\n      iVar5 = 3;\n      do {\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      } while (iVar5 != 0);\n    }\n    else {\n      addtok(dfa,uVar2);\n    }\n    tVar3 = lex(dfa);\n    (dfa->parse).tok = tVar3;\n  }" else (compound_statement "{\n    if ((uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false)) {\n      if (dfa->utf8_anychar_classes[0] == 0) {\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }\n      addtok(dfa,dfa->utf8_anychar_classes[0]);\n      addtok(dfa,dfa->utf8_anychar_classes[1]);\n      addtok(dfa,0xe0);\n      addtok(dfa,dfa->utf8_anychar_classes[3]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xed);\n      addtok(dfa,dfa->utf8_anychar_classes[5]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[4]);\n      addtok(dfa,0xf0);\n      addtok(dfa,dfa->utf8_anychar_classes[6]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xf4);\n      addtok(dfa,dfa->utf8_anychar_classes[8]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[7]);\n      iVar5 = 3;\n      do {\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      } while (iVar5 != 0);\n    }\n    else {\n      addtok(dfa,uVar2);\n    }\n    tVar3 = lex(dfa);\n    (dfa->parse).tok = tVar3;\n  }" { (if_statement "if ((uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false)) {\n      if (dfa->utf8_anychar_classes[0] == 0) {\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }\n      addtok(dfa,dfa->utf8_anychar_classes[0]);\n      addtok(dfa,dfa->utf8_anychar_classes[1]);\n      addtok(dfa,0xe0);\n      addtok(dfa,dfa->utf8_anychar_classes[3]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xed);\n      addtok(dfa,dfa->utf8_anychar_classes[5]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[4]);\n      addtok(dfa,0xf0);\n      addtok(dfa,dfa->utf8_anychar_classes[6]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xf4);\n      addtok(dfa,dfa->utf8_anychar_classes[8]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[7]);\n      iVar5 = 3;\n      do {\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      } while (iVar5 != 0);\n    }\n    else {\n      addtok(dfa,uVar2);\n    }" if (parenthesized_expression "((uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false))" ( (binary_expression "(uVar2 == 0x10a) && ((dfa->localeinfo).using_utf8 != false)" (parenthesized_expression "(uVar2 == 0x10a)" ( (binary_expression "uVar2 == 0x10a" identifier == number_literal) )) && (parenthesized_expression "((dfa->localeinfo).using_utf8 != false)" ( (binary_expression "(dfa->localeinfo).using_utf8 != false" (field_expression "(dfa->localeinfo).using_utf8" (parenthesized_expression "(dfa->localeinfo)" ( (field_expression "dfa->localeinfo" identifier -> field_identifier) )) . field_identifier) != false) ))) )) (compound_statement "{\n      if (dfa->utf8_anychar_classes[0] == 0) {\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }\n      addtok(dfa,dfa->utf8_anychar_classes[0]);\n      addtok(dfa,dfa->utf8_anychar_classes[1]);\n      addtok(dfa,0xe0);\n      addtok(dfa,dfa->utf8_anychar_classes[3]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xed);\n      addtok(dfa,dfa->utf8_anychar_classes[5]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[4]);\n      addtok(dfa,0xf0);\n      addtok(dfa,dfa->utf8_anychar_classes[6]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,0xf4);\n      addtok(dfa,dfa->utf8_anychar_classes[8]);\n      addtok(dfa,0x105);\n      addtok(dfa,0x106);\n      addtok(dfa,dfa->utf8_anychar_classes[7]);\n      iVar5 = 3;\n      do {\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      } while (iVar5 != 0);\n    }" { (if_statement "if (dfa->utf8_anychar_classes[0] == 0) {\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }" if (parenthesized_expression "(dfa->utf8_anychar_classes[0] == 0)" ( (binary_expression "dfa->utf8_anychar_classes[0] == 0" (subscript_expression "dfa->utf8_anychar_classes[0]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) == number_literal) )) (compound_statement "{\n        c.w[0] = 0xffffffffffffffff;\n        c.w[1] = 0xffffffffffffffff;\n        c.w[2] = 0;\n        c.w[3] = 0;\n        uVar2 = (dfa->syntax).syntax_bits;\n        if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }\n        if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }\n        iVar4 = charclass_index(dfa,&c);\n        dfa->utf8_anychar_classes[0] = iVar4 + 0x114;\n        pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);\n        ptVar7 = dfa->utf8_anychar_classes + 1;\n        do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);\n      }" { (expression_statement "c.w[0] = 0xffffffffffffffff;" (assignment_expression "c.w[0] = 0xffffffffffffffff" (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "c.w[1] = 0xffffffffffffffff;" (assignment_expression "c.w[1] = 0xffffffffffffffff" (subscript_expression "c.w[1]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "c.w[2] = 0;" (assignment_expression "c.w[2] = 0" (subscript_expression "c.w[2]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "c.w[3] = 0;" (assignment_expression "c.w[3] = 0" (subscript_expression "c.w[3]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) (expression_statement "uVar2 = (dfa->syntax).syntax_bits;" (assignment_expression "uVar2 = (dfa->syntax).syntax_bits" identifier = (field_expression "(dfa->syntax).syntax_bits" (parenthesized_expression "(dfa->syntax)" ( (field_expression "dfa->syntax" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if ((uVar2 & 0x40) == 0) {\n          c.w[0] = 0xfffffffffffffbff;\n        }" if (parenthesized_expression "((uVar2 & 0x40) == 0)" ( (binary_expression "(uVar2 & 0x40) == 0" (parenthesized_expression "(uVar2 & 0x40)" ( (binary_expression "uVar2 & 0x40" identifier & number_literal) )) == number_literal) )) (compound_statement "{\n          c.w[0] = 0xfffffffffffffbff;\n        }" { (expression_statement "c.w[0] = 0xfffffffffffffbff;" (assignment_expression "c.w[0] = 0xfffffffffffffbff" (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = number_literal) ;) })) (if_statement "if ((uVar2 & 0x80) != 0) {\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }" if (parenthesized_expression "((uVar2 & 0x80) != 0)" ( (binary_expression "(uVar2 & 0x80) != 0" (parenthesized_expression "(uVar2 & 0x80)" ( (binary_expression "uVar2 & 0x80" identifier & number_literal) )) != number_literal) )) (compound_statement "{\n          c.w[0] = c.w[0] & 0xfffffffffffffffe;\n        }" { (expression_statement "c.w[0] = c.w[0] & 0xfffffffffffffffe;" (assignment_expression "c.w[0] = c.w[0] & 0xfffffffffffffffe" (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) = (binary_expression "c.w[0] & 0xfffffffffffffffe" (subscript_expression "c.w[0]" (field_expression "c.w" identifier . field_identifier) [ number_literal ]) & number_literal)) ;) })) (expression_statement "iVar4 = charclass_index(dfa,&c);" (assignment_expression "iVar4 = charclass_index(dfa,&c)" identifier = (call_expression "charclass_index(dfa,&c)" identifier (argument_list "(dfa,&c)" ( identifier , (pointer_expression "&c" & identifier) )))) ;) (expression_statement "dfa->utf8_anychar_classes[0] = iVar4 + 0x114;" (assignment_expression "dfa->utf8_anychar_classes[0] = iVar4 + 0x114" (subscript_expression "dfa->utf8_anychar_classes[0]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) = (binary_expression "iVar4 + 0x114" identifier + number_literal)) ;) (expression_statement "pcVar8 = (charclass *)(utf8_classes_5445 + 0x20);" (assignment_expression "pcVar8 = (charclass *)(utf8_classes_5445 + 0x20)" identifier = (cast_expression "(charclass *)(utf8_classes_5445 + 0x20)" ( (type_descriptor "charclass *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(utf8_classes_5445 + 0x20)" ( (binary_expression "utf8_classes_5445 + 0x20" identifier + number_literal) )))) ;) (expression_statement "ptVar7 = dfa->utf8_anychar_classes + 1;" (assignment_expression "ptVar7 = dfa->utf8_anychar_classes + 1" identifier = (binary_expression "dfa->utf8_anychar_classes + 1" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) + number_literal)) ;) (do_statement "do {\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        } while ((mbstate_t *)ptVar7 != &dfa->mbs);" do (compound_statement "{\n          iVar4 = charclass_index(dfa,pcVar8);\n          *ptVar7 = iVar4 + 0x114;\n          pcVar8 = pcVar8 + 1;\n          ptVar7 = ptVar7 + 1;\n        }" { (expression_statement "iVar4 = charclass_index(dfa,pcVar8);" (assignment_expression "iVar4 = charclass_index(dfa,pcVar8)" identifier = (call_expression "charclass_index(dfa,pcVar8)" identifier (argument_list "(dfa,pcVar8)" ( identifier , identifier )))) ;) (expression_statement "*ptVar7 = iVar4 + 0x114;" (assignment_expression "*ptVar7 = iVar4 + 0x114" (pointer_expression "*ptVar7" * identifier) = (binary_expression "iVar4 + 0x114" identifier + number_literal)) ;) (expression_statement "pcVar8 = pcVar8 + 1;" (assignment_expression "pcVar8 = pcVar8 + 1" identifier = (binary_expression "pcVar8 + 1" identifier + number_literal)) ;) (expression_statement "ptVar7 = ptVar7 + 1;" (assignment_expression "ptVar7 = ptVar7 + 1" identifier = (binary_expression "ptVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "((mbstate_t *)ptVar7 != &dfa->mbs)" ( (binary_expression "(mbstate_t *)ptVar7 != &dfa->mbs" (cast_expression "(mbstate_t *)ptVar7" ( (type_descriptor "mbstate_t *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier) != (pointer_expression "&dfa->mbs" & (field_expression "dfa->mbs" identifier -> field_identifier))) )) ;) })) (expression_statement "addtok(dfa,dfa->utf8_anychar_classes[0]);" (call_expression "addtok(dfa,dfa->utf8_anychar_classes[0])" identifier (argument_list "(dfa,dfa->utf8_anychar_classes[0])" ( identifier , (subscript_expression "dfa->utf8_anychar_classes[0]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "addtok(dfa,dfa->utf8_anychar_classes[1]);" (call_expression "addtok(dfa,dfa->utf8_anychar_classes[1])" identifier (argument_list "(dfa,dfa->utf8_anychar_classes[1])" ( identifier , (subscript_expression "dfa->utf8_anychar_classes[1]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "addtok(dfa,0xe0);" (call_expression "addtok(dfa,0xe0)" identifier (argument_list "(dfa,0xe0)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,dfa->utf8_anychar_classes[3]);" (call_expression "addtok(dfa,dfa->utf8_anychar_classes[3])" identifier (argument_list "(dfa,dfa->utf8_anychar_classes[3])" ( identifier , (subscript_expression "dfa->utf8_anychar_classes[3]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "addtok(dfa,0x105);" (call_expression "addtok(dfa,0x105)" identifier (argument_list "(dfa,0x105)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,0x106);" (call_expression "addtok(dfa,0x106)" identifier (argument_list "(dfa,0x106)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,0xed);" (call_expression "addtok(dfa,0xed)" identifier (argument_list "(dfa,0xed)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,dfa->utf8_anychar_classes[5]);" (call_expression "addtok(dfa,dfa->utf8_anychar_classes[5])" identifier (argument_list "(dfa,dfa->utf8_anychar_classes[5])" ( identifier , (subscript_expression "dfa->utf8_anychar_classes[5]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "addtok(dfa,0x105);" (call_expression "addtok(dfa,0x105)" identifier (argument_list "(dfa,0x105)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,0x106);" (call_expression "addtok(dfa,0x106)" identifier (argument_list "(dfa,0x106)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,dfa->utf8_anychar_classes[4]);" (call_expression "addtok(dfa,dfa->utf8_anychar_classes[4])" identifier (argument_list "(dfa,dfa->utf8_anychar_classes[4])" ( identifier , (subscript_expression "dfa->utf8_anychar_classes[4]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "addtok(dfa,0xf0);" (call_expression "addtok(dfa,0xf0)" identifier (argument_list "(dfa,0xf0)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,dfa->utf8_anychar_classes[6]);" (call_expression "addtok(dfa,dfa->utf8_anychar_classes[6])" identifier (argument_list "(dfa,dfa->utf8_anychar_classes[6])" ( identifier , (subscript_expression "dfa->utf8_anychar_classes[6]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "addtok(dfa,0x105);" (call_expression "addtok(dfa,0x105)" identifier (argument_list "(dfa,0x105)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,0x106);" (call_expression "addtok(dfa,0x106)" identifier (argument_list "(dfa,0x106)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,0xf4);" (call_expression "addtok(dfa,0xf4)" identifier (argument_list "(dfa,0xf4)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,dfa->utf8_anychar_classes[8]);" (call_expression "addtok(dfa,dfa->utf8_anychar_classes[8])" identifier (argument_list "(dfa,dfa->utf8_anychar_classes[8])" ( identifier , (subscript_expression "dfa->utf8_anychar_classes[8]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "addtok(dfa,0x105);" (call_expression "addtok(dfa,0x105)" identifier (argument_list "(dfa,0x105)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,0x106);" (call_expression "addtok(dfa,0x106)" identifier (argument_list "(dfa,0x106)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,dfa->utf8_anychar_classes[7]);" (call_expression "addtok(dfa,dfa->utf8_anychar_classes[7])" identifier (argument_list "(dfa,dfa->utf8_anychar_classes[7])" ( identifier , (subscript_expression "dfa->utf8_anychar_classes[7]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "iVar5 = 3;" (assignment_expression "iVar5 = 3" identifier = number_literal) ;) (do_statement "do {\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      } while (iVar5 != 0);" do (compound_statement "{\n        addtok(dfa,dfa->utf8_anychar_classes[2]);\n        addtok(dfa,0x105);\n        addtok(dfa,0x106);\n        iVar5 = iVar5 + -1;\n      }" { (expression_statement "addtok(dfa,dfa->utf8_anychar_classes[2]);" (call_expression "addtok(dfa,dfa->utf8_anychar_classes[2])" identifier (argument_list "(dfa,dfa->utf8_anychar_classes[2])" ( identifier , (subscript_expression "dfa->utf8_anychar_classes[2]" (field_expression "dfa->utf8_anychar_classes" identifier -> field_identifier) [ number_literal ]) ))) ;) (expression_statement "addtok(dfa,0x105);" (call_expression "addtok(dfa,0x105)" identifier (argument_list "(dfa,0x105)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,0x106);" (call_expression "addtok(dfa,0x106)" identifier (argument_list "(dfa,0x106)" ( identifier , number_literal ))) ;) (expression_statement "iVar5 = iVar5 + -1;" (assignment_expression "iVar5 = iVar5 + -1" identifier = (binary_expression "iVar5 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n      addtok(dfa,uVar2);\n    }" else (compound_statement "{\n      addtok(dfa,uVar2);\n    }" { (expression_statement "addtok(dfa,uVar2);" (call_expression "addtok(dfa,uVar2)" identifier (argument_list "(dfa,uVar2)" ( identifier , identifier ))) ;) }))) (expression_statement "tVar3 = lex(dfa);" (assignment_expression "tVar3 = lex(dfa)" identifier = (call_expression "lex(dfa)" identifier (argument_list "(dfa)" ( identifier )))) ;) (expression_statement "(dfa->parse).tok = tVar3;" (assignment_expression "(dfa->parse).tok = tVar3" (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))) (while_statement "while (lVar9 = (dfa->parse).tok, lVar9 - 0x101U < 4) {\n    if (lVar9 == 0x104) {\n      lVar9._0_4_ = (dfa->lex).minrep;\n      lVar9._4_4_ = (dfa->lex).maxrep;\n      if (lVar9 == 0) {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        dfa->tindex = lVar9 - iVar4;\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n        closure(dfa);\n      }\n      else {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }\n    }\n    else {\n      addtok(dfa,lVar9);\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n  }" while (parenthesized_expression "(lVar9 = (dfa->parse).tok, lVar9 - 0x101U < 4)" ( (comma_expression "lVar9 = (dfa->parse).tok, lVar9 - 0x101U < 4" (assignment_expression "lVar9 = (dfa->parse).tok" identifier = (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier)) , (binary_expression "lVar9 - 0x101U < 4" (binary_expression "lVar9 - 0x101U" identifier - number_literal) < number_literal)) )) (compound_statement "{\n    if (lVar9 == 0x104) {\n      lVar9._0_4_ = (dfa->lex).minrep;\n      lVar9._4_4_ = (dfa->lex).maxrep;\n      if (lVar9 == 0) {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        dfa->tindex = lVar9 - iVar4;\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n        closure(dfa);\n      }\n      else {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }\n    }\n    else {\n      addtok(dfa,lVar9);\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }\n  }" { (if_statement "if (lVar9 == 0x104) {\n      lVar9._0_4_ = (dfa->lex).minrep;\n      lVar9._4_4_ = (dfa->lex).maxrep;\n      if (lVar9 == 0) {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        dfa->tindex = lVar9 - iVar4;\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n        closure(dfa);\n      }\n      else {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }\n    }\n    else {\n      addtok(dfa,lVar9);\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }" if (parenthesized_expression "(lVar9 == 0x104)" ( (binary_expression "lVar9 == 0x104" identifier == number_literal) )) (compound_statement "{\n      lVar9._0_4_ = (dfa->lex).minrep;\n      lVar9._4_4_ = (dfa->lex).maxrep;\n      if (lVar9 == 0) {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        dfa->tindex = lVar9 - iVar4;\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n        closure(dfa);\n      }\n      else {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }\n    }" { (expression_statement "lVar9._0_4_ = (dfa->lex).minrep;" (assignment_expression "lVar9._0_4_ = (dfa->lex).minrep" (field_expression "lVar9._0_4_" identifier . field_identifier) = (field_expression "(dfa->lex).minrep" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "lVar9._4_4_ = (dfa->lex).maxrep;" (assignment_expression "lVar9._4_4_ = (dfa->lex).maxrep" (field_expression "lVar9._4_4_" identifier . field_identifier) = (field_expression "(dfa->lex).maxrep" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (lVar9 == 0) {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        dfa->tindex = lVar9 - iVar4;\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n        closure(dfa);\n      }\n      else {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }" if (parenthesized_expression "(lVar9 == 0)" ( (binary_expression "lVar9 == 0" identifier == number_literal) )) (compound_statement "{\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        dfa->tindex = lVar9 - iVar4;\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n        closure(dfa);\n      }" { (expression_statement "lVar9 = dfa->tindex;" (assignment_expression "lVar9 = dfa->tindex" identifier = (field_expression "dfa->tindex" identifier -> field_identifier)) ;) (expression_statement "iVar4 = nsubtoks(dfa,lVar9);" (assignment_expression "iVar4 = nsubtoks(dfa,lVar9)" identifier = (call_expression "nsubtoks(dfa,lVar9)" identifier (argument_list "(dfa,lVar9)" ( identifier , identifier )))) ;) (expression_statement "dfa->tindex = lVar9 - iVar4;" (assignment_expression "dfa->tindex = lVar9 - iVar4" (field_expression "dfa->tindex" identifier -> field_identifier) = (binary_expression "lVar9 - iVar4" identifier - identifier)) ;) (expression_statement "tVar3 = lex(dfa);" (assignment_expression "tVar3 = lex(dfa)" identifier = (call_expression "lex(dfa)" identifier (argument_list "(dfa)" ( identifier )))) ;) (expression_statement "(dfa->parse).tok = tVar3;" (assignment_expression "(dfa->parse).tok = tVar3" (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier) = identifier) ;) (expression_statement "closure(dfa);" (call_expression "closure(dfa)" identifier (argument_list "(dfa)" ( identifier ))) ;) }) (else_clause "else {\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }" else (compound_statement "{\n        lVar9 = dfa->tindex;\n        iVar4 = nsubtoks(dfa,lVar9);\n        lVar9 = lVar9 - iVar4;\n        if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }\n        if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }\n        if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }\n        if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }\n        tVar3 = lex(dfa);\n        (dfa->parse).tok = tVar3;\n      }" { (expression_statement "lVar9 = dfa->tindex;" (assignment_expression "lVar9 = dfa->tindex" identifier = (field_expression "dfa->tindex" identifier -> field_identifier)) ;) (expression_statement "iVar4 = nsubtoks(dfa,lVar9);" (assignment_expression "iVar4 = nsubtoks(dfa,lVar9)" identifier = (call_expression "nsubtoks(dfa,lVar9)" identifier (argument_list "(dfa,lVar9)" ( identifier , identifier )))) ;) (expression_statement "lVar9 = lVar9 - iVar4;" (assignment_expression "lVar9 = lVar9 - iVar4" identifier = (binary_expression "lVar9 - iVar4" identifier - identifier)) ;) (if_statement "if ((dfa->lex).maxrep < L'\0') {\n          addtok(dfa,0x103);\n        }" if (parenthesized_expression "((dfa->lex).maxrep < L'\0')" ( (binary_expression "(dfa->lex).maxrep < L'\0'" (field_expression "(dfa->lex).maxrep" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier) < (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n          addtok(dfa,0x103);\n        }" { (expression_statement "addtok(dfa,0x103);" (call_expression "addtok(dfa,0x103)" identifier (argument_list "(dfa,0x103)" ( identifier , number_literal ))) ;) })) (if_statement "if ((dfa->lex).minrep == L'\0') {\n          addtok(dfa,0x101);\n        }" if (parenthesized_expression "((dfa->lex).minrep == L'\0')" ( (binary_expression "(dfa->lex).minrep == L'\0'" (field_expression "(dfa->lex).minrep" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier) == (char_literal "L'\0'" L' escape_sequence ')) )) (compound_statement "{\n          addtok(dfa,0x101);\n        }" { (expression_statement "addtok(dfa,0x101);" (call_expression "addtok(dfa,0x101)" identifier (argument_list "(dfa,0x101)" ( identifier , number_literal ))) ;) })) (if_statement "if ((dfa->lex).minrep < L'\x02') {\n          wVar6 = L'\x01';\n        }\n        else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }" if (parenthesized_expression "((dfa->lex).minrep < L'\x02')" ( (binary_expression "(dfa->lex).minrep < L'\x02'" (field_expression "(dfa->lex).minrep" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier) < (char_literal "L'\x02'" L' escape_sequence ')) )) (compound_statement "{\n          wVar6 = L'\x01';\n        }" { (expression_statement "wVar6 = L'\x01';" (assignment_expression "wVar6 = L'\x01'" identifier = (char_literal "L'\x01'" L' escape_sequence ')) ;) }) (else_clause "else {\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }" else (compound_statement "{\n          wVar6 = L'\x01';\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);\n        }" { (expression_statement "wVar6 = L'\x01';" (assignment_expression "wVar6 = L'\x01'" identifier = (char_literal "L'\x01'" L' escape_sequence ')) ;) (do_statement "do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).minrep);" do (compound_statement "{\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          }" { (expression_statement "copytoks(dfa,lVar9,iVar4);" (call_expression "copytoks(dfa,lVar9,iVar4)" identifier (argument_list "(dfa,lVar9,iVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "addtok(dfa,0x105);" (call_expression "addtok(dfa,0x105)" identifier (argument_list "(dfa,0x105)" ( identifier , number_literal ))) ;) (expression_statement "wVar6 = wVar6 + L'\x01';" (assignment_expression "wVar6 = wVar6 + L'\x01'" identifier = (binary_expression "wVar6 + L'\x01'" identifier + (char_literal "L'\x01'" L' escape_sequence '))) ;) }) while (parenthesized_expression "(wVar6 < (dfa->lex).minrep)" ( (binary_expression "wVar6 < (dfa->lex).minrep" identifier < (field_expression "(dfa->lex).minrep" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier)) )) ;) }))) (if_statement "if (wVar6 < (dfa->lex).maxrep) {\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }" if (parenthesized_expression "(wVar6 < (dfa->lex).maxrep)" ( (binary_expression "wVar6 < (dfa->lex).maxrep" identifier < (field_expression "(dfa->lex).maxrep" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier)) )) (compound_statement "{\n          do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);\n        }" { (do_statement "do {\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          } while (wVar6 < (dfa->lex).maxrep);" do (compound_statement "{\n            copytoks(dfa,lVar9,iVar4);\n            addtok(dfa,0x101);\n            addtok(dfa,0x105);\n            wVar6 = wVar6 + L'\x01';\n          }" { (expression_statement "copytoks(dfa,lVar9,iVar4);" (call_expression "copytoks(dfa,lVar9,iVar4)" identifier (argument_list "(dfa,lVar9,iVar4)" ( identifier , identifier , identifier ))) ;) (expression_statement "addtok(dfa,0x101);" (call_expression "addtok(dfa,0x101)" identifier (argument_list "(dfa,0x101)" ( identifier , number_literal ))) ;) (expression_statement "addtok(dfa,0x105);" (call_expression "addtok(dfa,0x105)" identifier (argument_list "(dfa,0x105)" ( identifier , number_literal ))) ;) (expression_statement "wVar6 = wVar6 + L'\x01';" (assignment_expression "wVar6 = wVar6 + L'\x01'" identifier = (binary_expression "wVar6 + L'\x01'" identifier + (char_literal "L'\x01'" L' escape_sequence '))) ;) }) while (parenthesized_expression "(wVar6 < (dfa->lex).maxrep)" ( (binary_expression "wVar6 < (dfa->lex).maxrep" identifier < (field_expression "(dfa->lex).maxrep" (parenthesized_expression "(dfa->lex)" ( (field_expression "dfa->lex" identifier -> field_identifier) )) . field_identifier)) )) ;) })) (expression_statement "tVar3 = lex(dfa);" (assignment_expression "tVar3 = lex(dfa)" identifier = (call_expression "lex(dfa)" identifier (argument_list "(dfa)" ( identifier )))) ;) (expression_statement "(dfa->parse).tok = tVar3;" (assignment_expression "(dfa->parse).tok = tVar3" (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))) }) (else_clause "else {\n      addtok(dfa,lVar9);\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }" else (compound_statement "{\n      addtok(dfa,lVar9);\n      tVar3 = lex(dfa);\n      (dfa->parse).tok = tVar3;\n    }" { (expression_statement "addtok(dfa,lVar9);" (call_expression "addtok(dfa,lVar9)" identifier (argument_list "(dfa,lVar9)" ( identifier , identifier ))) ;) (expression_statement "tVar3 = lex(dfa);" (assignment_expression "tVar3 = lex(dfa)" identifier = (call_expression "lex(dfa)" identifier (argument_list "(dfa)" ( identifier )))) ;) (expression_statement "(dfa->parse).tok = tVar3;" (assignment_expression "(dfa->parse).tok = tVar3" (field_expression "(dfa->parse).tok" (parenthesized_expression "(dfa->parse)" ( (field_expression "dfa->parse" identifier -> field_identifier) )) . field_identifier) = identifier) ;) }))) })) (if_statement "if (lVar1 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" if (parenthesized_expression "(lVar1 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "lVar1 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    /* WARNING: Subroutine does not return */\n    __stack_chk_fail();\n  }" { comment (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit "void FUN_00163d0d(long param_1)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  undefined *puVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  undefined8 local_b8;\n  undefined8 local_b0;\n  undefined8 local_a8;\n  undefined8 local_a0;\n  long local_30;\n  \n  puVar6 = &local_b8;\n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar1 = *(ulong *)(param_1 + 0x80);\n  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }\n  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}\n\n" (function_definition "void FUN_00163d0d(long param_1)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  undefined *puVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  undefined8 local_b8;\n  undefined8 local_b0;\n  undefined8 local_a8;\n  undefined8 local_a0;\n  long local_30;\n  \n  puVar6 = &local_b8;\n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar1 = *(ulong *)(param_1 + 0x80);\n  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }\n  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00163d0d(long param_1)" identifier (parameter_list "(long param_1)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) ))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  undefined *puVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  undefined8 local_b8;\n  undefined8 local_b0;\n  undefined8 local_a8;\n  undefined8 local_a0;\n  long local_30;\n  \n  puVar6 = &local_b8;\n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar1 = *(ulong *)(param_1 + 0x80);\n  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }\n  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" { (declaration "ulong uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "undefined8 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 local_b8;" type_identifier identifier ;) (declaration "undefined8 local_b0;" type_identifier identifier ;) (declaration "undefined8 local_a8;" type_identifier identifier ;) (declaration "undefined8 local_a0;" type_identifier identifier ;) (declaration "long local_30;" (sized_type_specifier "long" long) identifier ;) (expression_statement "puVar6 = &local_b8;" (assignment_expression "puVar6 = &local_b8" identifier = (pointer_expression "&local_b8" & identifier)) ;) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" identifier = (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) ;) (expression_statement "uVar1 = *(ulong *)(param_1 + 0x80);" (assignment_expression "uVar1 = *(ulong *)(param_1 + 0x80)" identifier = (pointer_expression "*(ulong *)(param_1 + 0x80)" * (cast_expression "(ulong *)(param_1 + 0x80)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) ))))) ;) (if_statement "if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }" if (parenthesized_expression "(((long)uVar1 < 0x10a) && (0xff < uVar1))" ( (binary_expression "((long)uVar1 < 0x10a) && (0xff < uVar1)" (parenthesized_expression "((long)uVar1 < 0x10a)" ( (binary_expression "(long)uVar1 < 0x10a" (cast_expression "(long)uVar1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) < number_literal) )) && (parenthesized_expression "(0xff < uVar1)" ( (binary_expression "0xff < uVar1" number_literal < identifier) ))) )) (compound_statement "{\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }" { (if_statement "if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }" if (parenthesized_expression "(uVar1 == 0x109)" ( (binary_expression "uVar1 == 0x109" identifier == number_literal) )) (compound_statement "{\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" { (if_statement "if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }" if (parenthesized_expression "(*(int *)(param_1 + 0x48) == -1)" ( (binary_expression "*(int *)(param_1 + 0x48) == -1" (pointer_expression "*(int *)(param_1 + 0x48)" * (cast_expression "(int *)(param_1 + 0x48)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        FUN_00163b1d(param_1,0x112);\n      }" { (expression_statement "FUN_00163b1d(param_1,0x112);" (call_expression "FUN_00163b1d(param_1,0x112)" identifier (argument_list "(param_1,0x112)" ( identifier , number_literal ))) ;) }) (else_clause "else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }" else (compound_statement "{\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }" { (expression_statement "FUN_00163be2();" (call_expression "FUN_00163be2()" identifier (argument_list "()" ( ))) ;) (if_statement "if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }" if (parenthesized_expression "((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4))" ( (binary_expression "(*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)" (parenthesized_expression "(*(char *)(param_1 + 0x1c9) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x1c9) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1c9)" * (cast_expression "(char *)(param_1 + 0x1c9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c9)" ( (binary_expression "param_1 + 0x1c9" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) )) && (parenthesized_expression "(iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)" ( (comma_expression "iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4" (assignment_expression "iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8)" identifier = (call_expression "FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8)" identifier (argument_list "(*(undefined4 *)(param_1 + 0x48),&local_b8)" ( (pointer_expression "*(undefined4 *)(param_1 + 0x48)" * (cast_expression "(undefined4 *)(param_1 + 0x48)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x48)" ( (binary_expression "param_1 + 0x48" identifier + number_literal) )))) , (pointer_expression "&local_b8" & identifier) )))) , (binary_expression "0 < iVar4" number_literal < identifier)) ))) )) (compound_statement "{\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }" { (do_statement "do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);" do (compound_statement "{\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          }" { (expression_statement "FUN_00163be2(param_1,*(undefined4 *)puVar6);" (call_expression "FUN_00163be2(param_1,*(undefined4 *)puVar6)" identifier (argument_list "(param_1,*(undefined4 *)puVar6)" ( identifier , (pointer_expression "*(undefined4 *)puVar6" * (cast_expression "(undefined4 *)puVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "puVar6 = (undefined8 *)((long)puVar6 + 4);" (assignment_expression "puVar6 = (undefined8 *)((long)puVar6 + 4)" identifier = (cast_expression "(undefined8 *)((long)puVar6 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar6 + 4)" ( (binary_expression "(long)puVar6 + 4" (cast_expression "(long)puVar6" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) }) while (parenthesized_expression "((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6)" ( (binary_expression "(undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6" (cast_expression "(undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4)" ( (binary_expression "(long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4" (binary_expression "(long)&local_b8 + (ulong)(iVar4 - 1) * 4" (cast_expression "(long)&local_b8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "&local_b8" & identifier)) + (binary_expression "(ulong)(iVar4 - 1) * 4" (call_expression "(ulong)(iVar4 - 1)" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "(iVar4 - 1)" ( (binary_expression "iVar4 - 1" identifier - number_literal) ))) * number_literal)) + number_literal) ))) != identifier) )) ;) })) }))) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }" else (if_statement "if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }" if (parenthesized_expression "(uVar1 == 0x107)" ( (binary_expression "uVar1 == 0x107" identifier == number_literal) )) (compound_statement "{\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" { (expression_statement "uVar2 = FUN_00162cca();" (assignment_expression "uVar2 = FUN_00162cca()" identifier = (call_expression "FUN_00162cca()" identifier (argument_list "()" ( )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00163cc4(param_1);" (call_expression "FUN_00163cc4(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (if_statement "if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 0x80) != 0x108)" ( (binary_expression "*(long *)(param_1 + 0x80) != 0x108" (pointer_expression "*(long *)(param_1 + 0x80)" * (cast_expression "(long *)(param_1 + 0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) != number_literal) )) (compound_statement "{\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }" { (expression_statement "uVar2 = dcgettext(0,"unbalanced (",5);" (assignment_expression "uVar2 = dcgettext(0,"unbalanced (",5)" identifier = (call_expression "dcgettext(0,"unbalanced (",5)" identifier (argument_list "(0,"unbalanced (",5)" ( number_literal , (string_literal ""unbalanced ("" " string_content ") , number_literal )))) ;) (expression_statement "FUN_0015eb4f(uVar2);" (call_expression "FUN_0015eb4f(uVar2)" identifier (argument_list "(uVar2)" ( identifier ))) ;) (goto_statement "goto LAB_0016405d;" goto statement_identifier ;) })) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }) (else_clause "else {\n      FUN_00163b1d(param_1,0x100);\n    }" else (compound_statement "{\n      FUN_00163b1d(param_1,0x100);\n    }" { (expression_statement "FUN_00163b1d(param_1,0x100);" (call_expression "FUN_00163b1d(param_1,0x100)" identifier (argument_list "(param_1,0x100)" ( identifier , number_literal ))) ;) }))))) }) (else_clause "else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }" else (compound_statement "{\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }" { (if_statement "if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }" if (parenthesized_expression "((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0'))" ( (binary_expression "(uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')" (parenthesized_expression "(uVar1 == 0x10a)" ( (binary_expression "uVar1 == 0x10a" identifier == number_literal) )) && (parenthesized_expression "(*(char *)(param_1 + 0x41a) != '\0')" ( (binary_expression "*(char *)(param_1 + 0x41a) != '\0'" (pointer_expression "*(char *)(param_1 + 0x41a)" * (cast_expression "(char *)(param_1 + 0x41a)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x41a)" ( (binary_expression "param_1 + 0x41a" identifier + number_literal) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) (compound_statement "{\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }" { (if_statement "if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }" if (parenthesized_expression "(*(long *)(param_1 + 200) == 0)" ( (binary_expression "*(long *)(param_1 + 200) == 0" (pointer_expression "*(long *)(param_1 + 200)" * (cast_expression "(long *)(param_1 + 200)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }" { (expression_statement "local_b8 = 0xffffffffffffffff;" (assignment_expression "local_b8 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "local_b0 = 0xffffffffffffffff;" (assignment_expression "local_b0 = 0xffffffffffffffff" identifier = number_literal) ;) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" identifier = number_literal) ;) (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" identifier = number_literal) ;) (if_statement "if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }" if (parenthesized_expression "((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0)" ( (binary_expression "(*(ulong *)(param_1 + 0x1c0) & 0x40) == 0" (parenthesized_expression "(*(ulong *)(param_1 + 0x1c0) & 0x40)" ( (binary_expression "*(ulong *)(param_1 + 0x1c0) & 0x40" (pointer_expression "*(ulong *)(param_1 + 0x1c0)" * (cast_expression "(ulong *)(param_1 + 0x1c0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c0)" ( (binary_expression "param_1 + 0x1c0" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n          local_b8 = 0xfffffffffffffbff;\n        }" { (expression_statement "local_b8 = 0xfffffffffffffbff;" (assignment_expression "local_b8 = 0xfffffffffffffbff" identifier = number_literal) ;) })) (if_statement "if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }" if (parenthesized_expression "((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0)" ( (binary_expression "(*(ulong *)(param_1 + 0x1c0) & 0x80) != 0" (parenthesized_expression "(*(ulong *)(param_1 + 0x1c0) & 0x80)" ( (binary_expression "*(ulong *)(param_1 + 0x1c0) & 0x80" (pointer_expression "*(ulong *)(param_1 + 0x1c0)" * (cast_expression "(ulong *)(param_1 + 0x1c0)" ( (type_descriptor "ulong *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x1c0)" ( (binary_expression "param_1 + 0x1c0" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }" { (expression_statement "local_b8 = local_b8 & 0xfffffffffffffffe;" (assignment_expression "local_b8 = local_b8 & 0xfffffffffffffffe" identifier = (binary_expression "local_b8 & 0xfffffffffffffffe" identifier & number_literal)) ;) })) (expression_statement "lVar8 = FUN_00162622(param_1,&local_b8);" (assignment_expression "lVar8 = FUN_00162622(param_1,&local_b8)" identifier = (call_expression "FUN_00162622(param_1,&local_b8)" identifier (argument_list "(param_1,&local_b8)" ( identifier , (pointer_expression "&local_b8" & identifier) )))) ;) (expression_statement "*(long *)(param_1 + 200) = lVar8 + 0x114;" (assignment_expression "*(long *)(param_1 + 200) = lVar8 + 0x114" (pointer_expression "*(long *)(param_1 + 200)" * (cast_expression "(long *)(param_1 + 200)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) = (binary_expression "lVar8 + 0x114" identifier + number_literal)) ;) (expression_statement "puVar7 = &DAT_00185da0;" (assignment_expression "puVar7 = &DAT_00185da0" identifier = (pointer_expression "&DAT_00185da0" & identifier)) ;) (expression_statement "plVar5 = (long *)(param_1 + 0xd0);" (assignment_expression "plVar5 = (long *)(param_1 + 0xd0)" identifier = (cast_expression "(long *)(param_1 + 0xd0)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) ;) (do_statement "do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));" do (compound_statement "{\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        }" { (expression_statement "lVar8 = FUN_00162622(param_1,puVar7);" (assignment_expression "lVar8 = FUN_00162622(param_1,puVar7)" identifier = (call_expression "FUN_00162622(param_1,puVar7)" identifier (argument_list "(param_1,puVar7)" ( identifier , identifier )))) ;) (expression_statement "*plVar5 = lVar8 + 0x114;" (assignment_expression "*plVar5 = lVar8 + 0x114" (pointer_expression "*plVar5" * identifier) = (binary_expression "lVar8 + 0x114" identifier + number_literal)) ;) (expression_statement "puVar7 = puVar7 + 0x20;" (assignment_expression "puVar7 = puVar7 + 0x20" identifier = (binary_expression "puVar7 + 0x20" identifier + number_literal)) ;) (expression_statement "plVar5 = plVar5 + 1;" (assignment_expression "plVar5 = plVar5 + 1" identifier = (binary_expression "plVar5 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar5 != (long *)(param_1 + 0x110))" ( (binary_expression "plVar5 != (long *)(param_1 + 0x110)" identifier != (cast_expression "(long *)(param_1 + 0x110)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x110)" ( (binary_expression "param_1 + 0x110" identifier + number_literal) )))) )) ;) })) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 200))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 200)" * (cast_expression "(undefined8 *)(param_1 + 200)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 200)" ( (binary_expression "param_1 + 200" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xd0))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xd0)" * (cast_expression "(undefined8 *)(param_1 + 0xd0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd0)" ( (binary_expression "param_1 + 0xd0" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0xe0);" (call_expression "FUN_00163b1d(param_1,0xe0)" identifier (argument_list "(param_1,0xe0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xe0))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xe0)" * (cast_expression "(undefined8 *)(param_1 + 0xe0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe0)" ( (binary_expression "param_1 + 0xe0" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0xed);" (call_expression "FUN_00163b1d(param_1,0xed)" identifier (argument_list "(param_1,0xed)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xf0))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xf0)" * (cast_expression "(undefined8 *)(param_1 + 0xf0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf0)" ( (binary_expression "param_1 + 0xf0" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xe8))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xe8)" * (cast_expression "(undefined8 *)(param_1 + 0xe8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xe8)" ( (binary_expression "param_1 + 0xe8" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0xf0);" (call_expression "FUN_00163b1d(param_1,0xf0)" identifier (argument_list "(param_1,0xf0)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xf8))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xf8)" * (cast_expression "(undefined8 *)(param_1 + 0xf8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xf8)" ( (binary_expression "param_1 + 0xf8" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0xf4);" (call_expression "FUN_00163b1d(param_1,0xf4)" identifier (argument_list "(param_1,0xf4)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0x108))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x108)" * (cast_expression "(undefined8 *)(param_1 + 0x108)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x108)" ( (binary_expression "param_1 + 0x108" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0x100))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0x100)" * (cast_expression "(undefined8 *)(param_1 + 0x100)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x100)" ( (binary_expression "param_1 + 0x100" identifier + number_literal) )))) ))) ;) (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" identifier = number_literal) ;) (do_statement "do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);" do (compound_statement "{\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      }" { (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8))" identifier (argument_list "(param_1,*(undefined8 *)(param_1 + 0xd8))" ( identifier , (pointer_expression "*(undefined8 *)(param_1 + 0xd8)" * (cast_expression "(undefined8 *)(param_1 + 0xd8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd8)" ( (binary_expression "param_1 + 0xd8" identifier + number_literal) )))) ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" identifier (argument_list "(param_1,0x106)" ( identifier , number_literal ))) ;) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" identifier = (binary_expression "iVar4 + -1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) ;) }) (else_clause "else {\n      FUN_00163b1d(param_1);\n    }" else (compound_statement "{\n      FUN_00163b1d(param_1);\n    }" { (expression_statement "FUN_00163b1d(param_1);" (call_expression "FUN_00163b1d(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }))) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }))) (while_statement "while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }" while (parenthesized_expression "(*(long *)(param_1 + 0x80) - 0x101U < 4)" ( (binary_expression "*(long *)(param_1 + 0x80) - 0x101U < 4" (binary_expression "*(long *)(param_1 + 0x80) - 0x101U" (pointer_expression "*(long *)(param_1 + 0x80)" * (cast_expression "(long *)(param_1 + 0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) - number_literal) < number_literal) )) (compound_statement "{\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }" { (if_statement "if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" if (parenthesized_expression "(*(long *)(param_1 + 0x80) == 0x104)" ( (binary_expression "*(long *)(param_1 + 0x80) == 0x104" (pointer_expression "*(long *)(param_1 + 0x80)" * (cast_expression "(long *)(param_1 + 0x80)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }" { (if_statement "if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }" if (parenthesized_expression "(*(long *)(param_1 + 0x40) == 0)" ( (binary_expression "*(long *)(param_1 + 0x40) == 0" (pointer_expression "*(long *)(param_1 + 0x40)" * (cast_expression "(long *)(param_1 + 0x40)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }" { (expression_statement "lVar8 = *(long *)(param_1 + 0x98);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x98)" identifier = (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;) (expression_statement "lVar3 = FUN_00161f5d(param_1,lVar8);" (assignment_expression "lVar3 = FUN_00161f5d(param_1,lVar8)" identifier = (call_expression "FUN_00161f5d(param_1,lVar8)" identifier (argument_list "(param_1,lVar8)" ( identifier , identifier )))) ;) (expression_statement "*(long *)(param_1 + 0x98) = lVar8 - lVar3;" (assignment_expression "*(long *)(param_1 + 0x98) = lVar8 - lVar3" (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) )))) = (binary_expression "lVar8 - lVar3" identifier - identifier)) ;) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) (expression_statement "FUN_00163d0d(param_1);" (call_expression "FUN_00163d0d(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) }) (else_clause "else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }" else (compound_statement "{\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }" { (labeled_statement "LAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);" statement_identifier : (expression_statement "lVar8 = *(long *)(param_1 + 0x98);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x98)" identifier = (pointer_expression "*(long *)(param_1 + 0x98)" * (cast_expression "(long *)(param_1 + 0x98)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x98)" ( (binary_expression "param_1 + 0x98" identifier + number_literal) ))))) ;)) (expression_statement "lVar3 = FUN_00161f5d(param_1,lVar8);" (assignment_expression "lVar3 = FUN_00161f5d(param_1,lVar8)" identifier = (call_expression "FUN_00161f5d(param_1,lVar8)" identifier (argument_list "(param_1,lVar8)" ( identifier , identifier )))) ;) (expression_statement "lVar8 = lVar8 - lVar3;" (assignment_expression "lVar8 = lVar8 - lVar3" identifier = (binary_expression "lVar8 - lVar3" identifier - identifier)) ;) (if_statement "if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x44) < 0)" ( (binary_expression "*(int *)(param_1 + 0x44) < 0" (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n          FUN_00163b1d(param_1,0x103);\n        }" { (expression_statement "FUN_00163b1d(param_1,0x103);" (call_expression "FUN_00163b1d(param_1,0x103)" identifier (argument_list "(param_1,0x103)" ( identifier , number_literal ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x40) == 0)" ( (binary_expression "*(int *)(param_1 + 0x40) == 0" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n          FUN_00163b1d(param_1,0x101);\n        }" { (expression_statement "FUN_00163b1d(param_1,0x101);" (call_expression "FUN_00163b1d(param_1,0x101)" identifier (argument_list "(param_1,0x101)" ( identifier , number_literal ))) ;) })) (if_statement "if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }" if (parenthesized_expression "(*(int *)(param_1 + 0x40) < 2)" ( (binary_expression "*(int *)(param_1 + 0x40) < 2" (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) )))) < number_literal) )) (compound_statement "{\n          iVar4 = 1;\n        }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) }) (else_clause "else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }" else (compound_statement "{\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }" { (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" identifier = number_literal) ;) (do_statement "do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));" do (compound_statement "{\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          }" { (expression_statement "FUN_00163a84(param_1,lVar8,lVar3);" (call_expression "FUN_00163a84(param_1,lVar8,lVar3)" identifier (argument_list "(param_1,lVar8,lVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x40))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x40)" identifier < (pointer_expression "*(int *)(param_1 + 0x40)" * (cast_expression "(int *)(param_1 + 0x40)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x40)" ( (binary_expression "param_1 + 0x40" identifier + number_literal) ))))) )) ;) }))) (if_statement "if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }" if (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x44))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x44)" identifier < (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) )) (compound_statement "{\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }" { (do_statement "do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));" do (compound_statement "{\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          }" { (expression_statement "FUN_00163a84(param_1,lVar8,lVar3);" (call_expression "FUN_00163a84(param_1,lVar8,lVar3)" identifier (argument_list "(param_1,lVar8,lVar3)" ( identifier , identifier , identifier ))) ;) (expression_statement "FUN_00163b1d(param_1,0x101);" (call_expression "FUN_00163b1d(param_1,0x101)" identifier (argument_list "(param_1,0x101)" ( identifier , number_literal ))) ;) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" identifier (argument_list "(param_1,0x105)" ( identifier , number_literal ))) ;) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x44))" ( (binary_expression "iVar4 < *(int *)(param_1 + 0x44)" identifier < (pointer_expression "*(int *)(param_1 + 0x44)" * (cast_expression "(int *)(param_1 + 0x44)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x44)" ( (binary_expression "param_1 + 0x44" identifier + number_literal) ))))) )) ;) })) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }))) }) (else_clause "else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" else (compound_statement "{\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" { (expression_statement "FUN_00163b1d(param_1);" (call_expression "FUN_00163b1d(param_1)" identifier (argument_list "(param_1)" ( identifier ))) ;) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" identifier = (call_expression "FUN_00162cca(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" * (cast_expression "(undefined8 *)(param_1 + 0x80)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x80)" ( (binary_expression "param_1 + 0x80" identifier + number_literal) )))) = identifier) ;) }))) })) (if_statement "if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" if (parenthesized_expression "(local_30 != *(long *)(in_FS_OFFSET + 0x28))" ( (binary_expression "local_30 != *(long *)(in_FS_OFFSET + 0x28)" identifier != (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" * (cast_expression "(long *)(in_FS_OFFSET + 0x28)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(in_FS_OFFSET + 0x28)" ( (binary_expression "in_FS_OFFSET + 0x28" identifier + number_literal) ))))) )) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" { (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" identifier (argument_list "()" ( ))) ;) })) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (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 IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) < LIT) )) && (parenthesized_expression ( (binary_expression LIT < IDENT) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression & IDENT) )))) , (binary_expression LIT < IDENT)) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) }) while (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (pointer_expression & IDENT)) + (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT - LIT) ))) * LIT)) + LIT) ))) != IDENT) )) ;) })) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) }))))) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (char_literal ' escape_sequence ')) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (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 IDENT = LIT) ;) })) (if_statement if (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 IDENT = (binary_expression IDENT & LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression & IDENT) )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )) ;) })) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) (while_statement while (parenthesized_expression ( (binary_expression (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) - LIT) < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (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 IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (binary_expression IDENT - IDENT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) (else_clause else (compound_statement { (labeled_statement statement_identifier : (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 IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT - IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) }))) (if_statement if (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , LIT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) }))) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( ))) ;) })) (return_statement return ;) })))
(function_definition "void FUN_00163d0d(long param_1)\n\n{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  undefined *puVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  undefined8 local_b8;\n  undefined8 local_b0;\n  undefined8 local_a8;\n  undefined8 local_a0;\n  long local_30;\n  \n  puVar6 = &local_b8;\n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar1 = *(ulong *)(param_1 + 0x80);\n  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }\n  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00163d0d(long param_1)" (identifier "FUN_00163d0d") (parameter_list "(long param_1)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) () ")"))) (compound_statement "{\n  ulong uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long *plVar5;\n  undefined8 *puVar6;\n  undefined *puVar7;\n  long lVar8;\n  long in_FS_OFFSET;\n  undefined8 local_b8;\n  undefined8 local_b0;\n  undefined8 local_a8;\n  undefined8 local_a0;\n  long local_30;\n  \n  puVar6 = &local_b8;\n  local_30 = *(long *)(in_FS_OFFSET + 0x28);\n  uVar1 = *(ulong *)(param_1 + 0x80);\n  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }\n  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }\n  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }\n  return;\n}" ({ "{") (declaration "ulong uVar1;" (type_identifier "ulong") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "undefined8 *puVar6;" (type_identifier "undefined8") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined *puVar7;" (type_identifier "undefined") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "long in_FS_OFFSET;" (sized_type_specifier "long" (long "long")) (identifier "in_FS_OFFSET") (; ";")) (declaration "undefined8 local_b8;" (type_identifier "undefined8") (identifier "local_b8") (; ";")) (declaration "undefined8 local_b0;" (type_identifier "undefined8") (identifier "local_b0") (; ";")) (declaration "undefined8 local_a8;" (type_identifier "undefined8") (identifier "local_a8") (; ";")) (declaration "undefined8 local_a0;" (type_identifier "undefined8") (identifier "local_a0") (; ";")) (declaration "long local_30;" (sized_type_specifier "long" (long "long")) (identifier "local_30") (; ";")) (expression_statement "puVar6 = &local_b8;" (assignment_expression "puVar6 = &local_b8" (identifier "puVar6") (= "=") (pointer_expression "&local_b8" (& "&") (identifier "local_b8"))) (; ";")) (expression_statement "local_30 = *(long *)(in_FS_OFFSET + 0x28);" (assignment_expression "local_30 = *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (= "=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) (; ";")) (expression_statement "uVar1 = *(ulong *)(param_1 + 0x80);" (assignment_expression "uVar1 = *(ulong *)(param_1 + 0x80)" (identifier "uVar1") (= "=") (pointer_expression "*(ulong *)(param_1 + 0x80)" (* "*") (cast_expression "(ulong *)(param_1 + 0x80)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")"))))) (; ";")) (if_statement "if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }\n  else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }" (if "if") (parenthesized_expression "(((long)uVar1 < 0x10a) && (0xff < uVar1))" (( "(") (binary_expression "((long)uVar1 < 0x10a) && (0xff < uVar1)" (parenthesized_expression "((long)uVar1 < 0x10a)" (( "(") (binary_expression "(long)uVar1 < 0x10a" (cast_expression "(long)uVar1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "uVar1")) (< "<") (number_literal "0x10a")) () ")")) (&& "&&") (parenthesized_expression "(0xff < uVar1)" (( "(") (binary_expression "0xff < uVar1" (number_literal "0xff") (< "<") (identifier "uVar1")) () ")"))) () ")")) (compound_statement "{\n    if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }\n  }" ({ "{") (if_statement "if (uVar1 == 0x109) {\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }" (if "if") (parenthesized_expression "(uVar1 == 0x109)" (( "(") (binary_expression "uVar1 == 0x109" (identifier "uVar1") (== "==") (number_literal "0x109")) () ")")) (compound_statement "{\n      if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" ({ "{") (if_statement "if (*(int *)(param_1 + 0x48) == -1) {\n        FUN_00163b1d(param_1,0x112);\n      }\n      else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x48) == -1)" (( "(") (binary_expression "*(int *)(param_1 + 0x48) == -1" (pointer_expression "*(int *)(param_1 + 0x48)" (* "*") (cast_expression "(int *)(param_1 + 0x48)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        FUN_00163b1d(param_1,0x112);\n      }" ({ "{") (expression_statement "FUN_00163b1d(param_1,0x112);" (call_expression "FUN_00163b1d(param_1,0x112)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x112)" (( "(") (identifier "param_1") (, ",") (number_literal "0x112") () ")"))) (; ";")) (} "}")) (else_clause "else {\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }" (else "else") (compound_statement "{\n        FUN_00163be2();\n        if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }\n      }" ({ "{") (expression_statement "FUN_00163be2();" (call_expression "FUN_00163be2()" (identifier "FUN_00163be2") (argument_list "()" (( "(") () ")"))) (; ";")) (if_statement "if ((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }" (if "if") (parenthesized_expression "((*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4))" (( "(") (binary_expression "(*(char *)(param_1 + 0x1c9) != '\0') &&\n           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)" (parenthesized_expression "(*(char *)(param_1 + 0x1c9) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x1c9) != '\0'" (pointer_expression "*(char *)(param_1 + 0x1c9)" (* "*") (cast_expression "(char *)(param_1 + 0x1c9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c9)" (( "(") (binary_expression "param_1 + 0x1c9" (identifier "param_1") (+ "+") (number_literal "0x1c9")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (&& "&&") (parenthesized_expression "(iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)" (( "(") (comma_expression "iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4" (assignment_expression "iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8)" (identifier "iVar4") (= "=") (call_expression "FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8)" (identifier "FUN_001694b8") (argument_list "(*(undefined4 *)(param_1 + 0x48),&local_b8)" (( "(") (pointer_expression "*(undefined4 *)(param_1 + 0x48)" (* "*") (cast_expression "(undefined4 *)(param_1 + 0x48)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x48)" (( "(") (binary_expression "param_1 + 0x48" (identifier "param_1") (+ "+") (number_literal "0x48")) () ")")))) (, ",") (pointer_expression "&local_b8" (& "&") (identifier "local_b8")) () ")")))) (, ",") (binary_expression "0 < iVar4" (number_literal "0") (< "<") (identifier "iVar4"))) () ")"))) () ")")) (compound_statement "{\n          do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);\n        }" ({ "{") (do_statement "do {\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);" (do "do") (compound_statement "{\n            FUN_00163be2(param_1,*(undefined4 *)puVar6);\n            FUN_00163b1d(param_1,0x106);\n            puVar6 = (undefined8 *)((long)puVar6 + 4);\n          }" ({ "{") (expression_statement "FUN_00163be2(param_1,*(undefined4 *)puVar6);" (call_expression "FUN_00163be2(param_1,*(undefined4 *)puVar6)" (identifier "FUN_00163be2") (argument_list "(param_1,*(undefined4 *)puVar6)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined4 *)puVar6" (* "*") (cast_expression "(undefined4 *)puVar6" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "puVar6"))) () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x106)" (( "(") (identifier "param_1") (, ",") (number_literal "0x106") () ")"))) (; ";")) (expression_statement "puVar6 = (undefined8 *)((long)puVar6 + 4);" (assignment_expression "puVar6 = (undefined8 *)((long)puVar6 + 4)" (identifier "puVar6") (= "=") (cast_expression "(undefined8 *)((long)puVar6 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar6 + 4)" (( "(") (binary_expression "(long)puVar6 + 4" (cast_expression "(long)puVar6" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar6")) (+ "+") (number_literal "4")) () ")")))) (; ";")) (} "}")) (while "while") (parenthesized_expression "((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6)" (( "(") (binary_expression "(undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6" (cast_expression "(undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4)" (( "(") (binary_expression "(long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4" (binary_expression "(long)&local_b8 + (ulong)(iVar4 - 1) * 4" (cast_expression "(long)&local_b8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "&local_b8" (& "&") (identifier "local_b8"))) (+ "+") (binary_expression "(ulong)(iVar4 - 1) * 4" (call_expression "(ulong)(iVar4 - 1)" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "(iVar4 - 1)" (( "(") (binary_expression "iVar4 - 1" (identifier "iVar4") (- "-") (number_literal "1")) () ")"))) (* "*") (number_literal "4"))) (+ "+") (number_literal "4")) () ")"))) (!= "!=") (identifier "puVar6")) () ")")) (; ";")) (} "}"))) (} "}")))) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_00162cca(param_1)" (identifier "FUN_00162cca") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}")) (else_clause "else if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }" (else "else") (if_statement "if (uVar1 == 0x107) {\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n    else {\n      FUN_00163b1d(param_1,0x100);\n    }" (if "if") (parenthesized_expression "(uVar1 == 0x107)" (( "(") (binary_expression "uVar1 == 0x107" (identifier "uVar1") (== "==") (number_literal "0x107")) () ")")) (compound_statement "{\n      uVar2 = FUN_00162cca();\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n      FUN_00163cc4(param_1);\n      if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" ({ "{") (expression_statement "uVar2 = FUN_00162cca();" (assignment_expression "uVar2 = FUN_00162cca()" (identifier "uVar2") (= "=") (call_expression "FUN_00162cca()" (identifier "FUN_00162cca") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "FUN_00163cc4(param_1);" (call_expression "FUN_00163cc4(param_1)" (identifier "FUN_00163cc4") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (if_statement "if (*(long *)(param_1 + 0x80) != 0x108) {\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x80) != 0x108)" (( "(") (binary_expression "*(long *)(param_1 + 0x80) != 0x108" (pointer_expression "*(long *)(param_1 + 0x80)" (* "*") (cast_expression "(long *)(param_1 + 0x80)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (!= "!=") (number_literal "0x108")) () ")")) (compound_statement "{\n        uVar2 = dcgettext(0,"unbalanced (",5);\n        FUN_0015eb4f(uVar2);\n        goto LAB_0016405d;\n      }" ({ "{") (expression_statement "uVar2 = dcgettext(0,"unbalanced (",5);" (assignment_expression "uVar2 = dcgettext(0,"unbalanced (",5)" (identifier "uVar2") (= "=") (call_expression "dcgettext(0,"unbalanced (",5)" (identifier "dcgettext") (argument_list "(0,"unbalanced (",5)" (( "(") (number_literal "0") (, ",") (string_literal ""unbalanced ("" (" """) (string_content "unbalanced (") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_0015eb4f(uVar2);" (call_expression "FUN_0015eb4f(uVar2)" (identifier "FUN_0015eb4f") (argument_list "(uVar2)" (( "(") (identifier "uVar2") () ")"))) (; ";")) (goto_statement "goto LAB_0016405d;" (goto "goto") (statement_identifier "LAB_0016405d") (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_00162cca(param_1)" (identifier "FUN_00162cca") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}")) (else_clause "else {\n      FUN_00163b1d(param_1,0x100);\n    }" (else "else") (compound_statement "{\n      FUN_00163b1d(param_1,0x100);\n    }" ({ "{") (expression_statement "FUN_00163b1d(param_1,0x100);" (call_expression "FUN_00163b1d(param_1,0x100)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x100)" (( "(") (identifier "param_1") (, ",") (number_literal "0x100") () ")"))) (; ";")) (} "}")))))) (} "}")) (else_clause "else {\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }" (else "else") (compound_statement "{\n    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }\n    uVar2 = FUN_00162cca(param_1);\n    *(undefined8 *)(param_1 + 0x80) = uVar2;\n  }" ({ "{") (if_statement "if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }\n    else {\n      FUN_00163b1d(param_1);\n    }" (if "if") (parenthesized_expression "((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0'))" (( "(") (binary_expression "(uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')" (parenthesized_expression "(uVar1 == 0x10a)" (( "(") (binary_expression "uVar1 == 0x10a" (identifier "uVar1") (== "==") (number_literal "0x10a")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(param_1 + 0x41a) != '\0')" (( "(") (binary_expression "*(char *)(param_1 + 0x41a) != '\0'" (pointer_expression "*(char *)(param_1 + 0x41a)" (* "*") (cast_expression "(char *)(param_1 + 0x41a)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x41a)" (( "(") (binary_expression "param_1 + 0x41a" (identifier "param_1") (+ "+") (number_literal "0x41a")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));\n      FUN_00163b1d(param_1,0xe0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xed);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));\n      FUN_00163b1d(param_1,0xf0);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,0xf4);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));\n      FUN_00163b1d(param_1,0x105);\n      FUN_00163b1d(param_1,0x106);\n      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));\n      iVar4 = 3;\n      do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);\n    }" ({ "{") (if_statement "if (*(long *)(param_1 + 200) == 0) {\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 200) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 200) == 0" (pointer_expression "*(long *)(param_1 + 200)" (* "*") (cast_expression "(long *)(param_1 + 200)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        local_b8 = 0xffffffffffffffff;\n        local_b0 = 0xffffffffffffffff;\n        local_a8 = 0;\n        local_a0 = 0;\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }\n        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }\n        lVar8 = FUN_00162622(param_1,&local_b8);\n        *(long *)(param_1 + 200) = lVar8 + 0x114;\n        puVar7 = &DAT_00185da0;\n        plVar5 = (long *)(param_1 + 0xd0);\n        do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));\n      }" ({ "{") (expression_statement "local_b8 = 0xffffffffffffffff;" (assignment_expression "local_b8 = 0xffffffffffffffff" (identifier "local_b8") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "local_b0 = 0xffffffffffffffff;" (assignment_expression "local_b0 = 0xffffffffffffffff" (identifier "local_b0") (= "=") (number_literal "0xffffffffffffffff")) (; ";")) (expression_statement "local_a8 = 0;" (assignment_expression "local_a8 = 0" (identifier "local_a8") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_a0 = 0;" (assignment_expression "local_a0 = 0" (identifier "local_a0") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {\n          local_b8 = 0xfffffffffffffbff;\n        }" (if "if") (parenthesized_expression "((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0)" (( "(") (binary_expression "(*(ulong *)(param_1 + 0x1c0) & 0x40) == 0" (parenthesized_expression "(*(ulong *)(param_1 + 0x1c0) & 0x40)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x1c0) & 0x40" (pointer_expression "*(ulong *)(param_1 + 0x1c0)" (* "*") (cast_expression "(ulong *)(param_1 + 0x1c0)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c0)" (( "(") (binary_expression "param_1 + 0x1c0" (identifier "param_1") (+ "+") (number_literal "0x1c0")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          local_b8 = 0xfffffffffffffbff;\n        }" ({ "{") (expression_statement "local_b8 = 0xfffffffffffffbff;" (assignment_expression "local_b8 = 0xfffffffffffffbff" (identifier "local_b8") (= "=") (number_literal "0xfffffffffffffbff")) (; ";")) (} "}"))) (if_statement "if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }" (if "if") (parenthesized_expression "((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0)" (( "(") (binary_expression "(*(ulong *)(param_1 + 0x1c0) & 0x80) != 0" (parenthesized_expression "(*(ulong *)(param_1 + 0x1c0) & 0x80)" (( "(") (binary_expression "*(ulong *)(param_1 + 0x1c0) & 0x80" (pointer_expression "*(ulong *)(param_1 + 0x1c0)" (* "*") (cast_expression "(ulong *)(param_1 + 0x1c0)" (( "(") (type_descriptor "ulong *" (type_identifier "ulong") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x1c0)" (( "(") (binary_expression "param_1 + 0x1c0" (identifier "param_1") (+ "+") (number_literal "0x1c0")) () ")")))) (& "&") (number_literal "0x80")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          local_b8 = local_b8 & 0xfffffffffffffffe;\n        }" ({ "{") (expression_statement "local_b8 = local_b8 & 0xfffffffffffffffe;" (assignment_expression "local_b8 = local_b8 & 0xfffffffffffffffe" (identifier "local_b8") (= "=") (binary_expression "local_b8 & 0xfffffffffffffffe" (identifier "local_b8") (& "&") (number_literal "0xfffffffffffffffe"))) (; ";")) (} "}"))) (expression_statement "lVar8 = FUN_00162622(param_1,&local_b8);" (assignment_expression "lVar8 = FUN_00162622(param_1,&local_b8)" (identifier "lVar8") (= "=") (call_expression "FUN_00162622(param_1,&local_b8)" (identifier "FUN_00162622") (argument_list "(param_1,&local_b8)" (( "(") (identifier "param_1") (, ",") (pointer_expression "&local_b8" (& "&") (identifier "local_b8")) () ")")))) (; ";")) (expression_statement "*(long *)(param_1 + 200) = lVar8 + 0x114;" (assignment_expression "*(long *)(param_1 + 200) = lVar8 + 0x114" (pointer_expression "*(long *)(param_1 + 200)" (* "*") (cast_expression "(long *)(param_1 + 200)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")")))) (= "=") (binary_expression "lVar8 + 0x114" (identifier "lVar8") (+ "+") (number_literal "0x114"))) (; ";")) (expression_statement "puVar7 = &DAT_00185da0;" (assignment_expression "puVar7 = &DAT_00185da0" (identifier "puVar7") (= "=") (pointer_expression "&DAT_00185da0" (& "&") (identifier "DAT_00185da0"))) (; ";")) (expression_statement "plVar5 = (long *)(param_1 + 0xd0);" (assignment_expression "plVar5 = (long *)(param_1 + 0xd0)" (identifier "plVar5") (= "=") (cast_expression "(long *)(param_1 + 0xd0)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd0)" (( "(") (binary_expression "param_1 + 0xd0" (identifier "param_1") (+ "+") (number_literal "0xd0")) () ")")))) (; ";")) (do_statement "do {\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        } while (plVar5 != (long *)(param_1 + 0x110));" (do "do") (compound_statement "{\n          lVar8 = FUN_00162622(param_1,puVar7);\n          *plVar5 = lVar8 + 0x114;\n          puVar7 = puVar7 + 0x20;\n          plVar5 = plVar5 + 1;\n        }" ({ "{") (expression_statement "lVar8 = FUN_00162622(param_1,puVar7);" (assignment_expression "lVar8 = FUN_00162622(param_1,puVar7)" (identifier "lVar8") (= "=") (call_expression "FUN_00162622(param_1,puVar7)" (identifier "FUN_00162622") (argument_list "(param_1,puVar7)" (( "(") (identifier "param_1") (, ",") (identifier "puVar7") () ")")))) (; ";")) (expression_statement "*plVar5 = lVar8 + 0x114;" (assignment_expression "*plVar5 = lVar8 + 0x114" (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) (= "=") (binary_expression "lVar8 + 0x114" (identifier "lVar8") (+ "+") (number_literal "0x114"))) (; ";")) (expression_statement "puVar7 = puVar7 + 0x20;" (assignment_expression "puVar7 = puVar7 + 0x20" (identifier "puVar7") (= "=") (binary_expression "puVar7 + 0x20" (identifier "puVar7") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "plVar5 = plVar5 + 1;" (assignment_expression "plVar5 = plVar5 + 1" (identifier "plVar5") (= "=") (binary_expression "plVar5 + 1" (identifier "plVar5") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(plVar5 != (long *)(param_1 + 0x110))" (( "(") (binary_expression "plVar5 != (long *)(param_1 + 0x110)" (identifier "plVar5") (!= "!=") (cast_expression "(long *)(param_1 + 0x110)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x110)" (( "(") (binary_expression "param_1 + 0x110" (identifier "param_1") (+ "+") (number_literal "0x110")) () ")")))) () ")")) (; ";")) (} "}"))) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200))" (identifier "FUN_00163b1d") (argument_list "(param_1,*(undefined8 *)(param_1 + 200))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 200)" (* "*") (cast_expression "(undefined8 *)(param_1 + 200)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 200)" (( "(") (binary_expression "param_1 + 200" (identifier "param_1") (+ "+") (number_literal "200")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0))" (identifier "FUN_00163b1d") (argument_list "(param_1,*(undefined8 *)(param_1 + 0xd0))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0xd0)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xd0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd0)" (( "(") (binary_expression "param_1 + 0xd0" (identifier "param_1") (+ "+") (number_literal "0xd0")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0xe0);" (call_expression "FUN_00163b1d(param_1,0xe0)" (identifier "FUN_00163b1d") (argument_list "(param_1,0xe0)" (( "(") (identifier "param_1") (, ",") (number_literal "0xe0") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0))" (identifier "FUN_00163b1d") (argument_list "(param_1,*(undefined8 *)(param_1 + 0xe0))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0xe0)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xe0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe0)" (( "(") (binary_expression "param_1 + 0xe0" (identifier "param_1") (+ "+") (number_literal "0xe0")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x105)" (( "(") (identifier "param_1") (, ",") (number_literal "0x105") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x106)" (( "(") (identifier "param_1") (, ",") (number_literal "0x106") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0xed);" (call_expression "FUN_00163b1d(param_1,0xed)" (identifier "FUN_00163b1d") (argument_list "(param_1,0xed)" (( "(") (identifier "param_1") (, ",") (number_literal "0xed") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0))" (identifier "FUN_00163b1d") (argument_list "(param_1,*(undefined8 *)(param_1 + 0xf0))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0xf0)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xf0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf0)" (( "(") (binary_expression "param_1 + 0xf0" (identifier "param_1") (+ "+") (number_literal "0xf0")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x105)" (( "(") (identifier "param_1") (, ",") (number_literal "0x105") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x106)" (( "(") (identifier "param_1") (, ",") (number_literal "0x106") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8))" (identifier "FUN_00163b1d") (argument_list "(param_1,*(undefined8 *)(param_1 + 0xe8))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0xe8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xe8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xe8)" (( "(") (binary_expression "param_1 + 0xe8" (identifier "param_1") (+ "+") (number_literal "0xe8")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0xf0);" (call_expression "FUN_00163b1d(param_1,0xf0)" (identifier "FUN_00163b1d") (argument_list "(param_1,0xf0)" (( "(") (identifier "param_1") (, ",") (number_literal "0xf0") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8))" (identifier "FUN_00163b1d") (argument_list "(param_1,*(undefined8 *)(param_1 + 0xf8))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0xf8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xf8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xf8)" (( "(") (binary_expression "param_1 + 0xf8" (identifier "param_1") (+ "+") (number_literal "0xf8")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x105)" (( "(") (identifier "param_1") (, ",") (number_literal "0x105") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x106)" (( "(") (identifier "param_1") (, ",") (number_literal "0x106") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0xf4);" (call_expression "FUN_00163b1d(param_1,0xf4)" (identifier "FUN_00163b1d") (argument_list "(param_1,0xf4)" (( "(") (identifier "param_1") (, ",") (number_literal "0xf4") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108))" (identifier "FUN_00163b1d") (argument_list "(param_1,*(undefined8 *)(param_1 + 0x108))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x108)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x108)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x108)" (( "(") (binary_expression "param_1 + 0x108" (identifier "param_1") (+ "+") (number_literal "0x108")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x105)" (( "(") (identifier "param_1") (, ",") (number_literal "0x105") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x106)" (( "(") (identifier "param_1") (, ",") (number_literal "0x106") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100))" (identifier "FUN_00163b1d") (argument_list "(param_1,*(undefined8 *)(param_1 + 0x100))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0x100)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x100)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x100)" (( "(") (binary_expression "param_1 + 0x100" (identifier "param_1") (+ "+") (number_literal "0x100")) () ")")))) () ")"))) (; ";")) (expression_statement "iVar4 = 3;" (assignment_expression "iVar4 = 3" (identifier "iVar4") (= "=") (number_literal "3")) (; ";")) (do_statement "do {\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      } while (iVar4 != 0);" (do "do") (compound_statement "{\n        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));\n        FUN_00163b1d(param_1,0x105);\n        FUN_00163b1d(param_1,0x106);\n        iVar4 = iVar4 + -1;\n      }" ({ "{") (expression_statement "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));" (call_expression "FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8))" (identifier "FUN_00163b1d") (argument_list "(param_1,*(undefined8 *)(param_1 + 0xd8))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_1 + 0xd8)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0xd8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd8)" (( "(") (binary_expression "param_1 + 0xd8" (identifier "param_1") (+ "+") (number_literal "0xd8")) () ")")))) () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x105)" (( "(") (identifier "param_1") (, ",") (number_literal "0x105") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x106);" (call_expression "FUN_00163b1d(param_1,0x106)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x106)" (( "(") (identifier "param_1") (, ",") (number_literal "0x106") () ")"))) (; ";")) (expression_statement "iVar4 = iVar4 + -1;" (assignment_expression "iVar4 = iVar4 + -1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + -1" (identifier "iVar4") (+ "+") (number_literal "-1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 != 0)" (( "(") (binary_expression "iVar4 != 0" (identifier "iVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")) (else_clause "else {\n      FUN_00163b1d(param_1);\n    }" (else "else") (compound_statement "{\n      FUN_00163b1d(param_1);\n    }" ({ "{") (expression_statement "FUN_00163b1d(param_1);" (call_expression "FUN_00163b1d(param_1)" (identifier "FUN_00163b1d") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")))) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_00162cca(param_1)" (identifier "FUN_00162cca") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}")))) (while_statement "while (*(long *)(param_1 + 0x80) - 0x101U < 4) {\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }" (while "while") (parenthesized_expression "(*(long *)(param_1 + 0x80) - 0x101U < 4)" (( "(") (binary_expression "*(long *)(param_1 + 0x80) - 0x101U < 4" (binary_expression "*(long *)(param_1 + 0x80) - 0x101U" (pointer_expression "*(long *)(param_1 + 0x80)" (* "*") (cast_expression "(long *)(param_1 + 0x80)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (- "-") (number_literal "0x101U")) (< "<") (number_literal "4")) () ")")) (compound_statement "{\n    if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }\n  }" ({ "{") (if_statement "if (*(long *)(param_1 + 0x80) == 0x104) {\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }\n    else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x80) == 0x104)" (( "(") (binary_expression "*(long *)(param_1 + 0x80) == 0x104" (pointer_expression "*(long *)(param_1 + 0x80)" (* "*") (cast_expression "(long *)(param_1 + 0x80)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (== "==") (number_literal "0x104")) () ")")) (compound_statement "{\n      if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }\n    }" ({ "{") (if_statement "if (*(long *)(param_1 + 0x40) == 0) {\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }\n      else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }" (if "if") (parenthesized_expression "(*(long *)(param_1 + 0x40) == 0)" (( "(") (binary_expression "*(long *)(param_1 + 0x40) == 0" (pointer_expression "*(long *)(param_1 + 0x40)" (* "*") (cast_expression "(long *)(param_1 + 0x40)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        *(long *)(param_1 + 0x98) = lVar8 - lVar3;\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n        FUN_00163d0d(param_1);\n      }" ({ "{") (expression_statement "lVar8 = *(long *)(param_1 + 0x98);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x98)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(param_1 + 0x98)" (* "*") (cast_expression "(long *)(param_1 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (; ";")) (expression_statement "lVar3 = FUN_00161f5d(param_1,lVar8);" (assignment_expression "lVar3 = FUN_00161f5d(param_1,lVar8)" (identifier "lVar3") (= "=") (call_expression "FUN_00161f5d(param_1,lVar8)" (identifier "FUN_00161f5d") (argument_list "(param_1,lVar8)" (( "(") (identifier "param_1") (, ",") (identifier "lVar8") () ")")))) (; ";")) (expression_statement "*(long *)(param_1 + 0x98) = lVar8 - lVar3;" (assignment_expression "*(long *)(param_1 + 0x98) = lVar8 - lVar3" (pointer_expression "*(long *)(param_1 + 0x98)" (* "*") (cast_expression "(long *)(param_1 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")")))) (= "=") (binary_expression "lVar8 - lVar3" (identifier "lVar8") (- "-") (identifier "lVar3"))) (; ";")) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_00162cca(param_1)" (identifier "FUN_00162cca") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "FUN_00163d0d(param_1);" (call_expression "FUN_00163d0d(param_1)" (identifier "FUN_00163d0d") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (} "}")) (else_clause "else {\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }" (else "else") (compound_statement "{\nLAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);\n        lVar3 = FUN_00161f5d(param_1,lVar8);\n        lVar8 = lVar8 - lVar3;\n        if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }\n        if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }\n        if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }\n        if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }\n        uVar2 = FUN_00162cca(param_1);\n        *(undefined8 *)(param_1 + 0x80) = uVar2;\n      }" ({ "{") (labeled_statement "LAB_0016405d:\n        lVar8 = *(long *)(param_1 + 0x98);" (statement_identifier "LAB_0016405d") (: ":") (expression_statement "lVar8 = *(long *)(param_1 + 0x98);" (assignment_expression "lVar8 = *(long *)(param_1 + 0x98)" (identifier "lVar8") (= "=") (pointer_expression "*(long *)(param_1 + 0x98)" (* "*") (cast_expression "(long *)(param_1 + 0x98)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x98)" (( "(") (binary_expression "param_1 + 0x98" (identifier "param_1") (+ "+") (number_literal "0x98")) () ")"))))) (; ";"))) (expression_statement "lVar3 = FUN_00161f5d(param_1,lVar8);" (assignment_expression "lVar3 = FUN_00161f5d(param_1,lVar8)" (identifier "lVar3") (= "=") (call_expression "FUN_00161f5d(param_1,lVar8)" (identifier "FUN_00161f5d") (argument_list "(param_1,lVar8)" (( "(") (identifier "param_1") (, ",") (identifier "lVar8") () ")")))) (; ";")) (expression_statement "lVar8 = lVar8 - lVar3;" (assignment_expression "lVar8 = lVar8 - lVar3" (identifier "lVar8") (= "=") (binary_expression "lVar8 - lVar3" (identifier "lVar8") (- "-") (identifier "lVar3"))) (; ";")) (if_statement "if (*(int *)(param_1 + 0x44) < 0) {\n          FUN_00163b1d(param_1,0x103);\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x44) < 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x44) < 0" (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")")))) (< "<") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00163b1d(param_1,0x103);\n        }" ({ "{") (expression_statement "FUN_00163b1d(param_1,0x103);" (call_expression "FUN_00163b1d(param_1,0x103)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x103)" (( "(") (identifier "param_1") (, ",") (number_literal "0x103") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x40) == 0) {\n          FUN_00163b1d(param_1,0x101);\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x40) == 0)" (( "(") (binary_expression "*(int *)(param_1 + 0x40) == 0" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n          FUN_00163b1d(param_1,0x101);\n        }" ({ "{") (expression_statement "FUN_00163b1d(param_1,0x101);" (call_expression "FUN_00163b1d(param_1,0x101)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x101)" (( "(") (identifier "param_1") (, ",") (number_literal "0x101") () ")"))) (; ";")) (} "}"))) (if_statement "if (*(int *)(param_1 + 0x40) < 2) {\n          iVar4 = 1;\n        }\n        else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }" (if "if") (parenthesized_expression "(*(int *)(param_1 + 0x40) < 2)" (( "(") (binary_expression "*(int *)(param_1 + 0x40) < 2" (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")")))) (< "<") (number_literal "2")) () ")")) (compound_statement "{\n          iVar4 = 1;\n        }" ({ "{") (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (} "}")) (else_clause "else {\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }" (else "else") (compound_statement "{\n          iVar4 = 1;\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));\n        }" ({ "{") (expression_statement "iVar4 = 1;" (assignment_expression "iVar4 = 1" (identifier "iVar4") (= "=") (number_literal "1")) (; ";")) (do_statement "do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x40));" (do "do") (compound_statement "{\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          }" ({ "{") (expression_statement "FUN_00163a84(param_1,lVar8,lVar3);" (call_expression "FUN_00163a84(param_1,lVar8,lVar3)" (identifier "FUN_00163a84") (argument_list "(param_1,lVar8,lVar3)" (( "(") (identifier "param_1") (, ",") (identifier "lVar8") (, ",") (identifier "lVar3") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x105)" (( "(") (identifier "param_1") (, ",") (number_literal "0x105") () ")"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x40))" (( "(") (binary_expression "iVar4 < *(int *)(param_1 + 0x40)" (identifier "iVar4") (< "<") (pointer_expression "*(int *)(param_1 + 0x40)" (* "*") (cast_expression "(int *)(param_1 + 0x40)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x40)" (( "(") (binary_expression "param_1 + 0x40" (identifier "param_1") (+ "+") (number_literal "0x40")) () ")"))))) () ")")) (; ";")) (} "}")))) (if_statement "if (iVar4 < *(int *)(param_1 + 0x44)) {\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }" (if "if") (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x44))" (( "(") (binary_expression "iVar4 < *(int *)(param_1 + 0x44)" (identifier "iVar4") (< "<") (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) () ")")) (compound_statement "{\n          do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));\n        }" ({ "{") (do_statement "do {\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          } while (iVar4 < *(int *)(param_1 + 0x44));" (do "do") (compound_statement "{\n            FUN_00163a84(param_1,lVar8,lVar3);\n            FUN_00163b1d(param_1,0x101);\n            FUN_00163b1d(param_1,0x105);\n            iVar4 = iVar4 + 1;\n          }" ({ "{") (expression_statement "FUN_00163a84(param_1,lVar8,lVar3);" (call_expression "FUN_00163a84(param_1,lVar8,lVar3)" (identifier "FUN_00163a84") (argument_list "(param_1,lVar8,lVar3)" (( "(") (identifier "param_1") (, ",") (identifier "lVar8") (, ",") (identifier "lVar3") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x101);" (call_expression "FUN_00163b1d(param_1,0x101)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x101)" (( "(") (identifier "param_1") (, ",") (number_literal "0x101") () ")"))) (; ";")) (expression_statement "FUN_00163b1d(param_1,0x105);" (call_expression "FUN_00163b1d(param_1,0x105)" (identifier "FUN_00163b1d") (argument_list "(param_1,0x105)" (( "(") (identifier "param_1") (, ",") (number_literal "0x105") () ")"))) (; ";")) (expression_statement "iVar4 = iVar4 + 1;" (assignment_expression "iVar4 = iVar4 + 1" (identifier "iVar4") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar4 < *(int *)(param_1 + 0x44))" (( "(") (binary_expression "iVar4 < *(int *)(param_1 + 0x44)" (identifier "iVar4") (< "<") (pointer_expression "*(int *)(param_1 + 0x44)" (* "*") (cast_expression "(int *)(param_1 + 0x44)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x44)" (( "(") (binary_expression "param_1 + 0x44" (identifier "param_1") (+ "+") (number_literal "0x44")) () ")"))))) () ")")) (; ";")) (} "}"))) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_00162cca(param_1)" (identifier "FUN_00162cca") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" (else "else") (compound_statement "{\n      FUN_00163b1d(param_1);\n      uVar2 = FUN_00162cca(param_1);\n      *(undefined8 *)(param_1 + 0x80) = uVar2;\n    }" ({ "{") (expression_statement "FUN_00163b1d(param_1);" (call_expression "FUN_00163b1d(param_1)" (identifier "FUN_00163b1d") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")"))) (; ";")) (expression_statement "uVar2 = FUN_00162cca(param_1);" (assignment_expression "uVar2 = FUN_00162cca(param_1)" (identifier "uVar2") (= "=") (call_expression "FUN_00162cca(param_1)" (identifier "FUN_00162cca") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (expression_statement "*(undefined8 *)(param_1 + 0x80) = uVar2;" (assignment_expression "*(undefined8 *)(param_1 + 0x80) = uVar2" (pointer_expression "*(undefined8 *)(param_1 + 0x80)" (* "*") (cast_expression "(undefined8 *)(param_1 + 0x80)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x80)" (( "(") (binary_expression "param_1 + 0x80" (identifier "param_1") (+ "+") (number_literal "0x80")) () ")")))) (= "=") (identifier "uVar2")) (; ";")) (} "}")))) (} "}"))) (if_statement "if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {\n                    \n    __stack_chk_fail();\n  }" (if "if") (parenthesized_expression "(local_30 != *(long *)(in_FS_OFFSET + 0x28))" (( "(") (binary_expression "local_30 != *(long *)(in_FS_OFFSET + 0x28)" (identifier "local_30") (!= "!=") (pointer_expression "*(long *)(in_FS_OFFSET + 0x28)" (* "*") (cast_expression "(long *)(in_FS_OFFSET + 0x28)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(in_FS_OFFSET + 0x28)" (( "(") (binary_expression "in_FS_OFFSET + 0x28" (identifier "in_FS_OFFSET") (+ "+") (number_literal "0x28")) () ")"))))) () ")")) (compound_statement "{\n                    \n    __stack_chk_fail();\n  }" ({ "{") (expression_statement "__stack_chk_fail();" (call_expression "__stack_chk_fail()" (identifier "__stack_chk_fail") (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (return_statement "return;" (return "return") (; ";")) (} "}")))

void function_1(type_1 *type_1)

{
  type_2 var_3;
  long var_21;
  type_3 var_2;
  type_4 tVar3;
  char *s;
  type_5 var_14;
  int var_17;
  type_6 var_7;
  type_4 *var_16;
  type_7 *var_8;
  long var_18;
  long var_1;
  type_7 c;
  
  var_8 = &c;
  var_21 = *(long *)(var_1 + 0x28);
  var_2 = (type_1->parse).tok;
  if (((long)var_2 < 0x10a) && (0xff < var_2)) {
    if (var_2 == 0x109) {
      var_3 = (type_1->var_9).wctok;
      if (var_3 == 0xffffffff) {
        var_4(type_1,0x112);
      }
      else {
        var_5(type_1,var_3);
        if (((type_1->syntax).case_fold != false) &&
           (var_7 = var_6((type_1->var_9).wctok,(type_6 *)&c), L'\0' < var_7)) {
          do {
            var_5(type_1,*(type_2 *)var_8);
            var_4(type_1,0x106);
            var_8 = (type_7 *)((long)var_8 + 4);
          } while ((type_7 *)((long)c.w + (type_3)(uint)(var_7 + L'\xffffffff') * 4 + 4) != var_8
                  );
        }
      }
      tVar3 = var_9(type_1);
      (type_1->parse).tok = tVar3;
    }
    else if (var_2 == 0x107) {
      tVar3 = var_9(type_1);
      (type_1->parse).tok = tVar3;
      var_10(type_1);
      if ((type_1->parse).tok != 0x108) {
        s = (char *)var_11(0,"unbalanced (",5);
                    /* WARNING: Subroutine does not return */
        var_12(s);
      }
      tVar3 = var_9(type_1);
      (type_1->parse).tok = tVar3;
    }
    else {
      var_4(type_1,0x100);
    }
  }
  else {
    if ((var_2 == 0x10a) && ((type_1->localeinfo).using_utf8 != false)) {
      if (type_1->utf8_anychar_classes[0] == 0) {
        c.w[0] = 0xffffffffffffffff;
        c.w[1] = 0xffffffffffffffff;
        c.w[2] = 0;
        c.w[3] = 0;
        var_2 = (type_1->syntax).syntax_bits;
        if ((var_2 & 0x40) == 0) {
          c.w[0] = 0xfffffffffffffbff;
        }
        if ((var_2 & 0x80) != 0) {
          c.w[0] = c.w[0] & 0xfffffffffffffffe;
        }
        var_14 = var_13(type_1,&c);
        type_1->utf8_anychar_classes[0] = var_14 + 0x114;
        var_8 = (type_7 *)(var_15 + 0x20);
        var_16 = type_1->utf8_anychar_classes + 1;
        do {
          var_14 = var_13(type_1,var_8);
          *var_16 = var_14 + 0x114;
          var_8 = var_8 + 1;
          var_16 = var_16 + 1;
        } while ((type_8 *)var_16 != &type_1->mbs);
      }
      var_4(type_1,type_1->utf8_anychar_classes[0]);
      var_4(type_1,type_1->utf8_anychar_classes[1]);
      var_4(type_1,0xe0);
      var_4(type_1,type_1->utf8_anychar_classes[3]);
      var_4(type_1,0x105);
      var_4(type_1,0x106);
      var_4(type_1,0xed);
      var_4(type_1,type_1->utf8_anychar_classes[5]);
      var_4(type_1,0x105);
      var_4(type_1,0x106);
      var_4(type_1,type_1->utf8_anychar_classes[4]);
      var_4(type_1,0xf0);
      var_4(type_1,type_1->utf8_anychar_classes[6]);
      var_4(type_1,0x105);
      var_4(type_1,0x106);
      var_4(type_1,0xf4);
      var_4(type_1,type_1->utf8_anychar_classes[8]);
      var_4(type_1,0x105);
      var_4(type_1,0x106);
      var_4(type_1,type_1->utf8_anychar_classes[7]);
      var_17 = 3;
      do {
        var_4(type_1,type_1->utf8_anychar_classes[2]);
        var_4(type_1,0x105);
        var_4(type_1,0x106);
        var_17 = var_17 + -1;
      } while (var_17 != 0);
    }
    else {
      var_4(type_1,var_2);
    }
    tVar3 = var_9(type_1);
    (type_1->parse).tok = tVar3;
  }
  while (var_18 = (type_1->parse).tok, var_18 - 0x101U < 4) {
    if (var_18 == 0x104) {
      var_18._0_4_ = (type_1->var_9).minrep;
      var_18._4_4_ = (type_1->var_9).maxrep;
      if (var_18 == 0) {
        var_18 = type_1->tindex;
        var_14 = var_19(type_1,var_18);
        type_1->tindex = var_18 - var_14;
        tVar3 = var_9(type_1);
        (type_1->parse).tok = tVar3;
        function_1(type_1);
      }
      else {
        var_18 = type_1->tindex;
        var_14 = var_19(type_1,var_18);
        var_18 = var_18 - var_14;
        if ((type_1->var_9).maxrep < L'\0') {
          var_4(type_1,0x103);
        }
        if ((type_1->var_9).minrep == L'\0') {
          var_4(type_1,0x101);
        }
        if ((type_1->var_9).minrep < L'\x02') {
          var_7 = L'\x01';
        }
        else {
          var_7 = L'\x01';
          do {
            var_20(type_1,var_18,var_14);
            var_4(type_1,0x105);
            var_7 = var_7 + L'\x01';
          } while (var_7 < (type_1->var_9).minrep);
        }
        if (var_7 < (type_1->var_9).maxrep) {
          do {
            var_20(type_1,var_18,var_14);
            var_4(type_1,0x101);
            var_4(type_1,0x105);
            var_7 = var_7 + L'\x01';
          } while (var_7 < (type_1->var_9).maxrep);
        }
        tVar3 = var_9(type_1);
        (type_1->parse).tok = tVar3;
      }
    }
    else {
      var_4(type_1,var_18);
      tVar3 = var_9(type_1);
      (type_1->parse).tok = tVar3;
    }
  }
  if (var_21 != *(long *)(var_1 + 0x28)) {
                    /* WARNING: Subroutine does not return */
    var_22();
  }
  return;
}


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

void MASKED(long param_1)

{
  ulong uVar1;
  undefined8 uVar2;
  long lVar3;
  int iVar4;
  long *plVar5;
  undefined8 *puVar6;
  undefined *puVar7;
  long lVar8;
  long in_FS_OFFSET;
  undefined8 local_b8;
  undefined8 local_b0;
  undefined8 local_a8;
  undefined8 local_a0;
  long local_30;
  
  puVar6 = &local_b8;
  local_30 = *(long *)(in_FS_OFFSET + 0x28);
  uVar1 = *(ulong *)(param_1 + 0x80);
  if (((long)uVar1 < 0x10a) && (0xff < uVar1)) {
    if (uVar1 == 0x109) {
      if (*(int *)(param_1 + 0x48) == -1) {
        FUN_00163b1d(param_1,0x112);
      }
      else {
        FUN_00163be2();
        if ((*(char *)(param_1 + 0x1c9) != '\0') &&
           (iVar4 = FUN_001694b8(*(undefined4 *)(param_1 + 0x48),&local_b8), 0 < iVar4)) {
          do {
            FUN_00163be2(param_1,*(undefined4 *)puVar6);
            FUN_00163b1d(param_1,0x106);
            puVar6 = (undefined8 *)((long)puVar6 + 4);
          } while ((undefined8 *)((long)&local_b8 + (ulong)(iVar4 - 1) * 4 + 4) != puVar6);
        }
      }
      uVar2 = FUN_00162cca(param_1);
      *(undefined8 *)(param_1 + 0x80) = uVar2;
    }
    else if (uVar1 == 0x107) {
      uVar2 = FUN_00162cca();
      *(undefined8 *)(param_1 + 0x80) = uVar2;
      FUN_00163cc4(param_1);
      if (*(long *)(param_1 + 0x80) != 0x108) {
        uVar2 = dcgettext(0,"unbalanced (",5);
        FUN_0015eb4f(uVar2);
        goto LAB_0016405d;
      }
      uVar2 = FUN_00162cca(param_1);
      *(undefined8 *)(param_1 + 0x80) = uVar2;
    }
    else {
      FUN_00163b1d(param_1,0x100);
    }
  }
  else {
    if ((uVar1 == 0x10a) && (*(char *)(param_1 + 0x41a) != '\0')) {
      if (*(long *)(param_1 + 200) == 0) {
        local_b8 = 0xffffffffffffffff;
        local_b0 = 0xffffffffffffffff;
        local_a8 = 0;
        local_a0 = 0;
        if ((*(ulong *)(param_1 + 0x1c0) & 0x40) == 0) {
          local_b8 = 0xfffffffffffffbff;
        }
        if ((*(ulong *)(param_1 + 0x1c0) & 0x80) != 0) {
          local_b8 = local_b8 & 0xfffffffffffffffe;
        }
        lVar8 = FUN_00162622(param_1,&local_b8);
        *(long *)(param_1 + 200) = lVar8 + 0x114;
        puVar7 = &DAT_00185da0;
        plVar5 = (long *)(param_1 + 0xd0);
        do {
          lVar8 = FUN_00162622(param_1,puVar7);
          *plVar5 = lVar8 + 0x114;
          puVar7 = puVar7 + 0x20;
          plVar5 = plVar5 + 1;
        } while (plVar5 != (long *)(param_1 + 0x110));
      }
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 200));
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd0));
      FUN_00163b1d(param_1,0xe0);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe0));
      FUN_00163b1d(param_1,0x105);
      FUN_00163b1d(param_1,0x106);
      FUN_00163b1d(param_1,0xed);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf0));
      FUN_00163b1d(param_1,0x105);
      FUN_00163b1d(param_1,0x106);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xe8));
      FUN_00163b1d(param_1,0xf0);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xf8));
      FUN_00163b1d(param_1,0x105);
      FUN_00163b1d(param_1,0x106);
      FUN_00163b1d(param_1,0xf4);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x108));
      FUN_00163b1d(param_1,0x105);
      FUN_00163b1d(param_1,0x106);
      FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0x100));
      iVar4 = 3;
      do {
        FUN_00163b1d(param_1,*(undefined8 *)(param_1 + 0xd8));
        FUN_00163b1d(param_1,0x105);
        FUN_00163b1d(param_1,0x106);
        iVar4 = iVar4 + -1;
      } while (iVar4 != 0);
    }
    else {
      FUN_00163b1d(param_1);
    }
    uVar2 = FUN_00162cca(param_1);
    *(undefined8 *)(param_1 + 0x80) = uVar2;
  }
  while (*(long *)(param_1 + 0x80) - 0x101U < 4) {
    if (*(long *)(param_1 + 0x80) == 0x104) {
      if (*(long *)(param_1 + 0x40) == 0) {
        lVar8 = *(long *)(param_1 + 0x98);
        lVar3 = FUN_00161f5d(param_1,lVar8);
        *(long *)(param_1 + 0x98) = lVar8 - lVar3;
        uVar2 = FUN_00162cca(param_1);
        *(undefined8 *)(param_1 + 0x80) = uVar2;
        MASKED(param_1);
      }
      else {
LAB_0016405d:
        lVar8 = *(long *)(param_1 + 0x98);
        lVar3 = FUN_00161f5d(param_1,lVar8);
        lVar8 = lVar8 - lVar3;
        if (*(int *)(param_1 + 0x44) < 0) {
          FUN_00163b1d(param_1,0x103);
        }
        if (*(int *)(param_1 + 0x40) == 0) {
          FUN_00163b1d(param_1,0x101);
        }
        if (*(int *)(param_1 + 0x40) < 2) {
          iVar4 = 1;
        }
        else {
          iVar4 = 1;
          do {
            FUN_00163a84(param_1,lVar8,lVar3);
            FUN_00163b1d(param_1,0x105);
            iVar4 = iVar4 + 1;
          } while (iVar4 < *(int *)(param_1 + 0x40));
        }
        if (iVar4 < *(int *)(param_1 + 0x44)) {
          do {
            FUN_00163a84(param_1,lVar8,lVar3);
            FUN_00163b1d(param_1,0x101);
            FUN_00163b1d(param_1,0x105);
            iVar4 = iVar4 + 1;
          } while (iVar4 < *(int *)(param_1 + 0x44));
        }
        uVar2 = FUN_00162cca(param_1);
        *(undefined8 *)(param_1 + 0x80) = uVar2;
      }
    }
    else {
      FUN_00163b1d(param_1);
      uVar2 = FUN_00162cca(param_1);
      *(undefined8 *)(param_1 + 0x80) = uVar2;
    }
  }
  if (local_30 != *(long *)(in_FS_OFFSET + 0x28)) {
                    /* WARNING: Subroutine does not return */
    __stack_chk_fail();
  }
  return;
}

