
/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

NODE * concat_exp(int nargs,_Bool do_subsep)

{
  char **ppcVar1;
  NODE *tmp;
  size_t sVar2;
  char *pcVar3;
  char *pcVar4;
  char *pcVar5;
  NODE *pNVar6;
  int *piVar7;
  size_t sVar8;
  int iVar9;
  int iVar10;
  size_t __size;
  int iVar11;
  int local_50;
  size_t local_48;
  size_t local_3c;
  int local_20;
  
  iVar11 = CONVFMTidx;
  pcVar3 = CONVFMT;
  if (nargs == 1) {
    pNVar6 = stack_ptr->rptr;
    stack_ptr = stack_ptr + -1;
    if (pNVar6->type == Node_var_array) {
      set_loc("awk.h",0x72b);
      pcVar4 = array_vname(pNVar6);
      pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
      r_fatal(pcVar5,pcVar4);
    }
    if ((pNVar6->flags & 4) != 0) {
      sVar8 = (pNVar6->sub).nodep.reserved;
      if (sVar8 == 0xffffffff) {
        return pNVar6;
      }
      if (iVar11 == sVar8) {
        return pNVar6;
      }
    }
    pNVar6 = (*format_val)(pcVar3,iVar11,pNVar6);
    return pNVar6;
  }
  iVar11 = nargs + -1;
  if (do_subsep) {
    local_48 = SUBSEPlen;
    local_20 = iVar11 * SUBSEPlen;
    if (0 < nargs) goto LAB_00018810;
    local_3c = 0;
  }
  else {
    local_20 = 0;
    local_48 = 0;
    if (nargs < 1) {
      local_3c = 0;
      __size = 1;
      goto LAB_00018aa1;
    }
LAB_00018810:
    local_50 = 1;
    local_3c = 0;
    do {
      pNVar6 = stack_ptr->rptr;
      if (pNVar6->type == Node_var_array) {
        iVar9 = (local_50 + -1) * 4;
        iVar10 = local_50;
        while (iVar10 = iVar10 + -1, 0 < iVar10) {
          tmp = *(NODE **)((int)args_array + iVar9);
          ppcVar1 = &(tmp->sub).nodep.name;
          *ppcVar1 = *ppcVar1 + -1;
          if (*ppcVar1 == (char *)0x0) {
            r_unref(tmp);
          }
          iVar9 = iVar9 + -4;
        }
        iVar10 = 1;
        if (0 < local_50) {
          iVar10 = local_50;
        }
        local_50 = local_50 + -1 + (1 - iVar10);
        set_loc("array.c",0x191);
        pcVar3 = array_vname(pNVar6);
        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
        r_fatal(pcVar4,pcVar3);
        sVar8 = CONVFMTidx;
        pcVar3 = CONVFMT;
        pNVar6 = stack_ptr->rptr;
        stack_ptr = stack_ptr + -1;
        if (pNVar6->type != Node_var_array) goto LAB_00018879;
        set_loc("awk.h",0x72b);
        pcVar4 = array_vname(pNVar6);
        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
        r_fatal(pcVar5,pcVar4);
        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;
LAB_00018883:
        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);
      }
      else {
        stack_ptr = stack_ptr + -1;
        iVar9 = local_50 * 4;
LAB_00018879:
        pcVar3 = CONVFMT;
        sVar8 = CONVFMTidx;
        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;
LAB_00018a35:
        sVar2 = (pNVar6->sub).nodep.reserved;
        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;
      }
      local_50 = local_50 + 1;
      *(NODE **)((int)args_array + iVar9) = pNVar6;
      local_3c = local_3c + (pNVar6->sub).val.slen;
    } while (local_50 <= nargs);
  }
  local_3c = local_3c + local_20;
  __size = local_3c + 1;
  if (__size == 0) {
    set_loc("awk.h",0x7c5);
    r_fatal("%s:%d: emalloc called with zero bytes","array.c",0x199);
    local_3c = 0xffffffff;
  }
LAB_00018aa1:
  pcVar3 = (char *)malloc(__size);
  if (pcVar3 == (char *)0x0) {
    set_loc("awk.h",0x7c9);
    piVar7 = __errno_location();
    pcVar4 = strerror(*piVar7);
    pcVar5 = (char *)dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);
    r_fatal(pcVar5,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar4);
  }
  pNVar6 = args_array[nargs];
  memcpy(pcVar3,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);
  pcVar5 = pcVar3 + (pNVar6->sub).val.slen;
  pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');
  (pNVar6->sub).nodep.name = pcVar4;
  if (pcVar4 == (char *)0x0) {
    r_unref(pNVar6);
  }
  if (0 < iVar11) {
    iVar9 = 0;
    do {
      while( true ) {
        if (local_48 == 1) {
          *pcVar5 = *SUBSEP;
          pcVar4 = pcVar5 + 1;
        }
        else {
          pcVar4 = pcVar5;
          if (local_48 != 0) {
            pcVar4 = pcVar5 + local_48;
            memcpy(pcVar5,SUBSEP,local_48);
          }
        }
        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];
        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);
        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;
        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');
        (pNVar6->sub).nodep.name = pcVar4;
        if (pcVar4 == (char *)0x0) break;
        iVar9 = iVar9 + 1;
        if (iVar11 == iVar9) goto LAB_00018b85;
      }
      iVar9 = iVar9 + 1;
      r_unref(pNVar6);
    } while (iVar11 != iVar9);
  }
LAB_00018b85:
  pNVar6 = make_str_node(pcVar3,local_3c,2);
  return pNVar6;
}



/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int FUN_000187c0(int param_1,char param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  void *__dest;
  int *piVar4;
  char *pcVar5;
  undefined *puVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  size_t __size;
  int iVar10;
  undefined1 *__dest_00;
  undefined1 *__dest_01;
  int local_50;
  size_t local_48;
  int local_3c;
  int local_20;
  
  iVar10 = DAT_000c4994;
  puVar6 = PTR_DAT_000bf8f0;
  if (param_1 == 1) {
    iVar8 = *DAT_000c13c8;
    DAT_000c13c8 = DAT_000c13c8 + -1;
    if (*(int *)(iVar8 + 0x28) == 5) {
      FUN_000660d0("awk.h",0x72b);
      uVar2 = FUN_00018020(iVar8);
      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
      FUN_00066470(uVar3,uVar2);
    }
    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {
      if (*(int *)(iVar8 + 0x14) == -1) {
        return iVar8;
      }
      if (iVar10 == *(int *)(iVar8 + 0x14)) {
        return iVar8;
      }
    }
    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);
    return iVar10;
  }
  iVar10 = param_1 + -1;
  if (param_2 == '\0') {
    local_20 = 0;
    local_48 = 0;
    if (param_1 < 1) {
      local_3c = 0;
      __size = 1;
      goto LAB_00018aa1;
    }
LAB_00018810:
    local_50 = 1;
    local_3c = 0;
    do {
      iVar8 = *DAT_000c13c8;
      if (*(int *)(iVar8 + 0x28) == 5) {
        iVar7 = (local_50 + -1) * 4;
        iVar9 = local_50;
        while (iVar9 = iVar9 + -1, 0 < iVar9) {
          iVar1 = *(int *)(DAT_000c13c0 + iVar7);
          piVar4 = (int *)(iVar1 + 0x10);
          *piVar4 = *piVar4 + -1;
          if (*piVar4 == 0) {
            FUN_000668b0(iVar1);
          }
          iVar7 = iVar7 + -4;
        }
        iVar9 = 1;
        if (0 < local_50) {
          iVar9 = local_50;
        }
        local_50 = local_50 + -1 + (1 - iVar9);
        FUN_000660d0("array.c",0x191);
        uVar2 = FUN_00018020(iVar8);
        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
        FUN_00066470(uVar3,uVar2);
        iVar9 = DAT_000c4994;
        puVar6 = PTR_DAT_000bf8f0;
        iVar8 = *DAT_000c13c8;
        DAT_000c13c8 = DAT_000c13c8 + -1;
        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;
        FUN_000660d0("awk.h",0x72b);
        uVar2 = FUN_00018020(iVar8);
        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
        FUN_00066470(uVar3,uVar2);
        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;
LAB_00018883:
        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);
      }
      else {
        DAT_000c13c8 = DAT_000c13c8 + -1;
        iVar7 = local_50 * 4;
LAB_00018879:
        puVar6 = PTR_DAT_000bf8f0;
        iVar9 = DAT_000c4994;
        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;
LAB_00018a35:
        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;
      }
      local_50 = local_50 + 1;
      *(int *)(DAT_000c13c0 + iVar7) = iVar8;
      local_3c = local_3c + *(int *)(iVar8 + 0xc);
    } while (local_50 <= param_1);
  }
  else {
    local_48 = DAT_000bfbcc;
    local_20 = iVar10 * DAT_000bfbcc;
    if (0 < param_1) goto LAB_00018810;
    local_3c = 0;
  }
  local_3c = local_3c + local_20;
  __size = local_3c + 1;
  if (__size == 0) {
    FUN_000660d0("awk.h",0x7c5);
    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);
    local_3c = -1;
  }
LAB_00018aa1:
  __dest = malloc(__size);
  if (__dest == (void *)0x0) {
    FUN_000660d0("awk.h",0x7c9);
    piVar4 = __errno_location();
    pcVar5 = strerror(*piVar4);
    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);
    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);
  }
  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);
  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));
  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));
  iVar7 = *(int *)(iVar8 + 0x10) + -1;
  *(int *)(iVar8 + 0x10) = iVar7;
  if (iVar7 == 0) {
    FUN_000668b0(iVar8);
  }
  if (0 < iVar10) {
    iVar8 = 0;
    do {
      while( true ) {
        if (local_48 == 1) {
          *__dest_00 = *DAT_000bfbc8;
          __dest_01 = __dest_00 + 1;
        }
        else {
          __dest_01 = __dest_00;
          if (local_48 != 0) {
            __dest_01 = __dest_00 + local_48;
            memcpy(__dest_00,DAT_000bfbc8,local_48);
          }
        }
        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);
        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));
        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);
        iVar9 = *(int *)(iVar7 + 0x10) + -1;
        *(int *)(iVar7 + 0x10) = iVar9;
        if (iVar9 == 0) break;
        iVar8 = iVar8 + 1;
        if (iVar10 == iVar8) goto LAB_00018b85;
      }
      iVar8 = iVar8 + 1;
      FUN_000668b0(iVar7);
    } while (iVar10 != iVar8);
  }
LAB_00018b85:
  iVar10 = FUN_00067f10(__dest,local_3c,2);
  return iVar10;
}


PUSH EBP
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00016f50
ADD EBX,0xa651b
SUB ESP,0x4c
CMP dword ptr [ESP + 0x60],0x1
MOV EAX,dword ptr [ESP + 0x64]
JZ 0x00018be8
MOV EDI,dword ptr [ESP + 0x60]
SUB EDI,0x1
TEST AL,AL
MOV dword ptr [ESP + 0x1c],EDI
JNZ 0x00018918
MOV EAX,dword ptr [ESP + 0x60]
MOV dword ptr [ESP + 0x3c],0x0
MOV dword ptr [ESP + 0x14],0x0
TEST EAX,EAX
JLE 0x00018ca3
LEA EAX,[EBX + 0x5cb0]
LEA EBP,[EBX + 0x26dc]
MOV dword ptr [ESP + 0xc],0x1
MOV dword ptr [ESP + 0x20],0x0
MOV dword ptr [ESP + 0x24],EAX
LEA EAX,[EBX + 0xc0c]
MOV dword ptr [ESP + 0x18],EBP
MOV dword ptr [ESP + 0x28],EAX
LEA EAX,[EBX + 0x26e4]
MOV dword ptr [ESP + 0x10],EAX
LEA EAX,[EBX + 0xc60]
MOV dword ptr [ESP + 0x2c],EAX
JMP 0x000188b7
MOV ECX,dword ptr [ESP + 0xc]
MOV EBP,dword ptr [ESP + 0x10]
SUB EAX,0x4
LEA EDI,[ECX*0x4 + 0x0]
MOV ECX,dword ptr [ESP + 0x24]
MOV dword ptr [EBP],EAX
MOV EDX,dword ptr [ECX]
MOV ECX,dword ptr [ESP + 0x28]
MOV ECX,dword ptr [ECX]
TEST byte ptr [ESI + 0x2c],0x4
JNZ 0x00018a35
SUB ESP,0x4
PUSH ESI
PUSH EDX
PUSH ECX
MOV EAX,dword ptr [ESP + 0x3c]
CALL dword ptr [EAX]
ADD ESP,0x10
MOV ESI,EAX
MOV EAX,dword ptr [ESP + 0x18]
ADD dword ptr [ESP + 0xc],0x1
MOV EAX,dword ptr [EAX]
MOV dword ptr [EAX + EDI*0x1],ESI
MOV EAX,dword ptr [ESP + 0xc]
MOV ECX,dword ptr [ESI + 0xc]
ADD dword ptr [ESP + 0x20],ECX
CMP dword ptr [ESP + 0x60],EAX
JL 0x00018a50
MOV EAX,dword ptr [ESP + 0x10]
MOV EAX,dword ptr [EAX]
MOV ESI,dword ptr [EAX]
CMP dword ptr [ESI + 0x28],0x5
JNZ 0x00018858
MOV EDX,dword ptr [ESP + 0xc]
MOV dword ptr [ESP + 0x34],ESI
LEA EAX,[EDX + -0x1]
MOV ESI,EDX
LEA EDI,[EAX*0x4 + 0x0]
MOV dword ptr [ESP + 0x30],EAX
MOV EAX,dword ptr [ESP + 0x18]
MOV EBP,EDI
MOV EDI,EAX
JMP 0x000188f3
SUB EBP,0x4
SUB ESI,0x1
TEST ESI,ESI
JLE 0x00018950
MOV EAX,dword ptr [EDI]
MOV EDX,dword ptr [EAX + EBP*0x1]
SUB dword ptr [EDX + 0x10],0x1
JNZ 0x000188f0
SUB ESP,0xc
PUSH EDX
CALL 0x000668b0
ADD ESP,0x10
JMP 0x000188f0
MOV EAX,dword ptr [EBX + 0xee8]
MOV ECX,dword ptr [ESP + 0x60]
IMUL EDI,EAX
TEST ECX,ECX
MOV dword ptr [ESP + 0x14],EAX
MOV dword ptr [ESP + 0x3c],EDI
JG 0x00018810
MOV dword ptr [ESP + 0x20],0x0
LEA EBP,[EBX + 0x26dc]
JMP 0x00018a54
MOV EDX,dword ptr [ESP + 0xc]
MOV EAX,EDI
MOV ECX,0x1
MOV dword ptr [ESP + 0x18],EAX
MOV EAX,0x1
MOV ESI,dword ptr [ESP + 0x34]
MOV EDI,EBP
LEA EBP,[EBX + 0xfffc916c]
TEST EDX,EDX
CMOVG EAX,EDX
SUB ESP,0x8
SUB ECX,EAX
MOV EAX,dword ptr [ESP + 0x38]
ADD EAX,ECX
MOV dword ptr [ESP + 0x14],EAX
LEA EAX,[EBX + 0xfffd7092]
PUSH 0x191
PUSH EAX
CALL 0x000660d0
MOV dword ptr [ESP],ESI
CALL 0x00018020
ADD ESP,0xc
MOV ESI,EAX
PUSH 0x5
MOV dword ptr [ESP + 0x38],EBP
PUSH EBP
PUSH 0x0
CALL 0x00013f40
POP EBP
POP EDX
PUSH ESI
PUSH EAX
CALL 0x00066470
MOV EBP,dword ptr [ESP + 0x20]
MOV ECX,dword ptr [ESP + 0x34]
MOV EAX,dword ptr [EBP]
MOV EDX,dword ptr [ECX]
MOV ECX,dword ptr [ESP + 0x38]
ADD ESP,0x10
MOV ESI,dword ptr [EAX]
SUB EAX,0x4
MOV ECX,dword ptr [ECX]
MOV dword ptr [EBP],EAX
CMP dword ptr [ESI + 0x28],0x5
JNZ 0x00018879
LEA EAX,[EBX + 0xfffc8f86]
MOV dword ptr [ESP + 0x38],EDX
MOV dword ptr [ESP + 0x34],ECX
SUB ESP,0x8
PUSH 0x72b
PUSH EAX
CALL 0x000660d0
MOV dword ptr [ESP],ESI
CALL 0x00018020
ADD ESP,0xc
MOV EBP,EAX
PUSH 0x5
PUSH dword ptr [ESP + 0x38]
PUSH 0x0
CALL 0x00013f40
POP EDX
POP ECX
PUSH EBP
PUSH EAX
CALL 0x00066470
ADD ESP,0x10
TEST byte ptr [ESI + 0x2c],0x4
MOV EDX,dword ptr [ESP + 0x38]
MOV ECX,dword ptr [ESP + 0x34]
JZ 0x00018883
MOV EAX,dword ptr [ESI + 0x14]
CMP EAX,-0x1
JZ 0x00018894
CMP EDX,EAX
JNZ 0x00018883
JMP 0x00018894
MOV EBP,dword ptr [ESP + 0x18]
MOV EAX,dword ptr [ESP + 0x20]
ADD EAX,dword ptr [ESP + 0x3c]
MOV ESI,EAX
MOV dword ptr [ESP + 0x20],EAX
ADD ESI,0x1
JNZ 0x00018aa1
LEA EAX,[EBX + 0xfffc8f86]
SUB ESP,0x8
PUSH 0x7c5
PUSH EAX
CALL 0x000660d0
LEA EAX,[EBX + 0xfffd7092]
ADD ESP,0xc
PUSH 0x199
PUSH EAX
LEA EAX,[EBX + 0xfffc910c]
PUSH EAX
CALL 0x00066470
ADD ESP,0x10
MOV dword ptr [ESP + 0x20],0xffffffff
SUB ESP,0xc
PUSH ESI
CALL 0x00014140
MOV dword ptr [ESP + 0x28],EAX
ADD ESP,0x10
TEST EAX,EAX
JZ 0x00018c40
MOV EDX,dword ptr [ESP + 0x60]
MOV EAX,dword ptr [EBP]
SUB ESP,0x4
MOV ESI,dword ptr [EAX + EDX*0x4]
PUSH dword ptr [ESI + 0xc]
PUSH dword ptr [ESI + 0x8]
MOV EDI,dword ptr [ESP + 0x24]
PUSH EDI
CALL 0x00013e80
MOV EAX,dword ptr [ESI + 0x10]
ADD EDI,dword ptr [ESI + 0xc]
ADD ESP,0x10
SUB EAX,0x1
TEST EAX,EAX
MOV dword ptr [ESI + 0x10],EAX
JZ 0x00018bd0
MOV ECX,dword ptr [ESP + 0x1c]
TEST ECX,ECX
JLE 0x00018b85
MOV EAX,dword ptr [ESP + 0x60]
XOR ECX,ECX
MOV dword ptr [ESP + 0x10],EBP
MOV EBP,ECX
ADD EAX,0x3fffffff
MOV dword ptr [ESP + 0xc],EAX
JMP 0x00018b56
MOV EDX,dword ptr [ESP + 0x14]
TEST EDX,EDX
JNZ 0x00018bb0
MOV EAX,dword ptr [ESP + 0x10]
MOV ESI,dword ptr [ESP + 0xc]
SUB ESP,0x4
MOV EAX,dword ptr [EAX]
SUB ESI,EBP
MOV ESI,dword ptr [EAX + ESI*0x4]
PUSH dword ptr [ESI + 0xc]
PUSH dword ptr [ESI + 0x8]
PUSH EDI
CALL 0x00013e80
MOV EAX,dword ptr [ESI + 0x10]
ADD EDI,dword ptr [ESI + 0xc]
ADD ESP,0x10
SUB EAX,0x1
TEST EAX,EAX
MOV dword ptr [ESI + 0x10],EAX
JZ 0x00018b70
ADD EBP,0x1
CMP dword ptr [ESP + 0x1c],EBP
JZ 0x00018b85
CMP dword ptr [ESP + 0x14],0x1
JNZ 0x00018b10
MOV EAX,dword ptr [EBX + 0xee4]
ADD EDI,0x1
MOVZX EAX,byte ptr [EAX]
MOV byte ptr [EDI + -0x1],AL
JMP 0x00018b1c
SUB ESP,0xc
ADD EBP,0x1
PUSH ESI
CALL 0x000668b0
ADD ESP,0x10
CMP dword ptr [ESP + 0x1c],EBP
JNZ 0x00018b56
SUB ESP,0x4
PUSH 0x2
PUSH dword ptr [ESP + 0x28]
PUSH dword ptr [ESP + 0x24]
CALL 0x00067f10
ADD ESP,0x10
MOV ESI,EAX
ADD ESP,0x4c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
MOV ESI,dword ptr [ESP + 0x18]
PUSH ESI
PUSH dword ptr [EBX + 0xee4]
PUSH EDI
ADD EDI,ESI
CALL 0x00013e80
ADD ESP,0x10
JMP 0x00018b1c
SUB ESP,0xc
PUSH ESI
CALL 0x000668b0
ADD ESP,0x10
JMP 0x00018aed
LEA EAX,[EBX + 0x5cb0]
LEA EDX,[EBX + 0x26e4]
MOV EDI,dword ptr [EAX]
LEA EAX,[EBX + 0xc0c]
MOV EBP,dword ptr [EAX]
MOV EAX,dword ptr [EDX]
MOV ESI,dword ptr [EAX]
LEA ECX,[EAX + -0x4]
MOV dword ptr [EDX],ECX
CMP dword ptr [ESI + 0x28],0x5
JZ 0x00018cbb
TEST byte ptr [ESI + 0x2c],0x4
JNZ 0x00018d03
SUB ESP,0x4
LEA EAX,[EBX + 0xc60]
PUSH ESI
PUSH EDI
PUSH EBP
CALL dword ptr [EAX]
ADD ESP,0x10
MOV ESI,EAX
ADD ESP,0x4c
MOV EAX,ESI
POP EBX
POP ESI
POP EDI
POP EBP
RET
LEA EAX,[EBX + 0xfffc8f86]
SUB ESP,0x8
PUSH 0x7c9
PUSH EAX
CALL 0x000660d0
CALL 0x00014330
POP EDI
PUSH dword ptr [EAX]
CALL 0x00014180
MOV EDI,EAX
LEA EAX,[EBX + 0xfffc9134]
ADD ESP,0xc
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00013f40
LEA EDX,[EBX + 0xfffd5aa9]
ADD ESP,0xc
PUSH EDI
PUSH ESI
PUSH EDX
LEA EDX,[EBX + 0xfffc8fcf]
PUSH EDX
LEA EDX,[EBX + 0xfffd7092]
PUSH 0x199
PUSH EDX
PUSH EAX
CALL 0x00066470
ADD ESP,0x20
JMP 0x00018ab9
MOV dword ptr [ESP + 0x20],0x0
MOV ESI,0x1
LEA EBP,[EBX + 0x26dc]
JMP 0x00018aa1
LEA EAX,[EBX + 0xfffc8f86]
SUB ESP,0x8
PUSH 0x72b
PUSH EAX
CALL 0x000660d0
MOV dword ptr [ESP],ESI
CALL 0x00018020
MOV dword ptr [ESP + 0x1c],EAX
LEA EAX,[EBX + 0xfffc916c]
ADD ESP,0xc
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x00013f40
POP EDX
POP ECX
MOV EDX,dword ptr [ESP + 0x14]
PUSH EDX
PUSH EAX
CALL 0x00066470
ADD ESP,0x10
JMP 0x00018c11
MOV EAX,dword ptr [ESI + 0x14]
CMP EAX,-0x1
JZ 0x00018b9c
CMP EDI,EAX
JNZ 0x00018c1b
JMP 0x00018b9c
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nint FUN_000187c0(int param_1,char param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  void *__dest;\n  int *piVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __size;\n  int iVar10;\n  undefined1 *__dest_00;\n  undefined1 *__dest_01;\n  int local_50;\n  size_t local_48;\n  int local_3c;\n  int local_20;\n  \n  iVar10 = DAT_000c4994;\n  puVar6 = PTR_DAT_000bf8f0;\n  if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }\n  iVar10 = param_1 + -1;\n  if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }\nLAB_00018aa1:\n  __dest = malloc(__size);\n  if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }\n  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);\n  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));\n  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));\n  iVar7 = *(int *)(iVar8 + 0x10) + -1;\n  *(int *)(iVar8 + 0x10) = iVar7;\n  if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }\n  if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }\nLAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);\n  return iVar10;\n}\n\n" comment (function_definition "int FUN_000187c0(int param_1,char param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  void *__dest;\n  int *piVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __size;\n  int iVar10;\n  undefined1 *__dest_00;\n  undefined1 *__dest_01;\n  int local_50;\n  size_t local_48;\n  int local_3c;\n  int local_20;\n  \n  iVar10 = DAT_000c4994;\n  puVar6 = PTR_DAT_000bf8f0;\n  if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }\n  iVar10 = param_1 + -1;\n  if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }\nLAB_00018aa1:\n  __dest = malloc(__size);\n  if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }\n  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);\n  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));\n  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));\n  iVar7 = *(int *)(iVar8 + 0x10) + -1;\n  *(int *)(iVar8 + 0x10) = iVar7;\n  if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }\n  if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }\nLAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);\n  return iVar10;\n}" primitive_type (function_declarator "FUN_000187c0(int param_1,char param_2)" identifier (parameter_list "(int param_1,char param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  void *__dest;\n  int *piVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __size;\n  int iVar10;\n  undefined1 *__dest_00;\n  undefined1 *__dest_01;\n  int local_50;\n  size_t local_48;\n  int local_3c;\n  int local_20;\n  \n  iVar10 = DAT_000c4994;\n  puVar6 = PTR_DAT_000bf8f0;\n  if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }\n  iVar10 = param_1 + -1;\n  if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }\nLAB_00018aa1:\n  __dest = malloc(__size);\n  if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }\n  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);\n  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));\n  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));\n  iVar7 = *(int *)(iVar8 + 0x10) + -1;\n  *(int *)(iVar8 + 0x10) = iVar7;\n  if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }\n  if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }\nLAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);\n  return iVar10;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined1 *__dest_00;" type_identifier (pointer_declarator "*__dest_00" * identifier) ;) (declaration "undefined1 *__dest_01;" type_identifier (pointer_declarator "*__dest_01" * identifier) ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "size_t local_48;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar10 = DAT_000c4994;" (assignment_expression "iVar10 = DAT_000c4994" identifier = identifier) ;) (expression_statement "puVar6 = PTR_DAT_000bf8f0;" (assignment_expression "puVar6 = PTR_DAT_000bf8f0" identifier = identifier) ;) (if_statement "if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }" if (parenthesized_expression "(param_1 == 1)" ( (binary_expression "param_1 == 1" identifier == number_literal) )) (compound_statement "{\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }" { (expression_statement "iVar8 = *DAT_000c13c8;" (assignment_expression "iVar8 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (if_statement "if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }" if (parenthesized_expression "(*(int *)(iVar8 + 0x28) == 5)" ( (binary_expression "*(int *)(iVar8 + 0x28) == 5" (pointer_expression "*(int *)(iVar8 + 0x28)" * (cast_expression "(int *)(iVar8 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }" { (expression_statement "FUN_000660d0("awk.h",0x72b);" (call_expression "FUN_000660d0("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "uVar2 = FUN_00018020(iVar8);" (assignment_expression "uVar2 = FUN_00018020(iVar8)" identifier = (call_expression "FUN_00018020(iVar8)" identifier (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar3,uVar2);" (call_expression "FUN_00066470(uVar3,uVar2)" identifier (argument_list "(uVar3,uVar2)" ( identifier , identifier ))) ;) })) (if_statement "if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x2c) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2c) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar8 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar8 + 0x2c)" * (cast_expression "(byte *)(iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }" { (if_statement "if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }" if (parenthesized_expression "(*(int *)(iVar8 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar8 + 0x14) == -1" (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        return iVar8;\n      }" { (return_statement "return iVar8;" return identifier ;) })) (if_statement "if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }" if (parenthesized_expression "(iVar10 == *(int *)(iVar8 + 0x14))" ( (binary_expression "iVar10 == *(int *)(iVar8 + 0x14)" identifier == (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n        return iVar8;\n      }" { (return_statement "return iVar8;" return identifier ;) })) })) (expression_statement "iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);" (assignment_expression "iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6,iVar10,iVar8)" ( identifier , identifier , identifier )))) ;) (return_statement "return iVar10;" return identifier ;) })) (expression_statement "iVar10 = param_1 + -1;" (assignment_expression "iVar10 = param_1 + -1" identifier = (binary_expression "param_1 + -1" identifier + number_literal)) ;) (if_statement "if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }" if (parenthesized_expression "(param_2 == '\0')" ( (binary_expression "param_2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }" { (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }" if (parenthesized_expression "(param_1 < 1)" ( (binary_expression "param_1 < 1" identifier < number_literal) )) (compound_statement "{\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "__size = 1;" (assignment_expression "__size = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00018aa1;" goto statement_identifier ;) })) (labeled_statement "LAB_00018810:\n    local_50 = 1;" statement_identifier : (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;)) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);" do (compound_statement "{\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    }" { (expression_statement "iVar8 = *DAT_000c13c8;" (assignment_expression "iVar8 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (if_statement "if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }" if (parenthesized_expression "(*(int *)(iVar8 + 0x28) == 5)" ( (binary_expression "*(int *)(iVar8 + 0x28) == 5" (pointer_expression "*(int *)(iVar8 + 0x28)" * (cast_expression "(int *)(iVar8 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }" { (expression_statement "iVar7 = (local_50 + -1) * 4;" (assignment_expression "iVar7 = (local_50 + -1) * 4" identifier = (binary_expression "(local_50 + -1) * 4" (parenthesized_expression "(local_50 + -1)" ( (binary_expression "local_50 + -1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "iVar9 = local_50;" (assignment_expression "iVar9 = local_50" identifier = identifier) ;) (while_statement "while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }" while (parenthesized_expression "(iVar9 = iVar9 + -1, 0 < iVar9)" ( (comma_expression "iVar9 = iVar9 + -1, 0 < iVar9" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) , (binary_expression "0 < iVar9" number_literal < identifier)) )) (compound_statement "{\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }" { (expression_statement "iVar1 = *(int *)(DAT_000c13c0 + iVar7);" (assignment_expression "iVar1 = *(int *)(DAT_000c13c0 + iVar7)" identifier = (pointer_expression "*(int *)(DAT_000c13c0 + iVar7)" * (cast_expression "(int *)(DAT_000c13c0 + iVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c0 + iVar7)" ( (binary_expression "DAT_000c13c0 + iVar7" identifier + identifier) ))))) ;) (expression_statement "piVar4 = (int *)(iVar1 + 0x10);" (assignment_expression "piVar4 = (int *)(iVar1 + 0x10)" identifier = (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar4 = *piVar4 + -1;" (assignment_expression "*piVar4 = *piVar4 + -1" (pointer_expression "*piVar4" * identifier) = (binary_expression "*piVar4 + -1" (pointer_expression "*piVar4" * identifier) + number_literal)) ;) (if_statement "if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (compound_statement "{\n            FUN_000668b0(iVar1);\n          }" { (expression_statement "FUN_000668b0(iVar1);" (call_expression "FUN_000668b0(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (expression_statement "iVar7 = iVar7 + -4;" (assignment_expression "iVar7 = iVar7 + -4" identifier = (binary_expression "iVar7 + -4" identifier + number_literal)) ;) })) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (if_statement "if (0 < local_50) {\n          iVar9 = local_50;\n        }" if (parenthesized_expression "(0 < local_50)" ( (binary_expression "0 < local_50" number_literal < identifier) )) (compound_statement "{\n          iVar9 = local_50;\n        }" { (expression_statement "iVar9 = local_50;" (assignment_expression "iVar9 = local_50" identifier = identifier) ;) })) (expression_statement "local_50 = local_50 + -1 + (1 - iVar9);" (assignment_expression "local_50 = local_50 + -1 + (1 - iVar9)" identifier = (binary_expression "local_50 + -1 + (1 - iVar9)" (binary_expression "local_50 + -1" identifier + number_literal) + (parenthesized_expression "(1 - iVar9)" ( (binary_expression "1 - iVar9" number_literal - identifier) )))) ;) (expression_statement "FUN_000660d0("array.c",0x191);" (call_expression "FUN_000660d0("array.c",0x191)" identifier (argument_list "("array.c",0x191)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar2 = FUN_00018020(iVar8);" (assignment_expression "uVar2 = FUN_00018020(iVar8)" identifier = (call_expression "FUN_00018020(iVar8)" identifier (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar3,uVar2);" (call_expression "FUN_00066470(uVar3,uVar2)" identifier (argument_list "(uVar3,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar9 = DAT_000c4994;" (assignment_expression "iVar9 = DAT_000c4994" identifier = identifier) ;) (expression_statement "puVar6 = PTR_DAT_000bf8f0;" (assignment_expression "puVar6 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar8 = *DAT_000c13c8;" (assignment_expression "iVar8 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (if_statement "if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;" if (parenthesized_expression "(*(int *)(iVar8 + 0x28) != 5)" ( (binary_expression "*(int *)(iVar8 + 0x28) != 5" (pointer_expression "*(int *)(iVar8 + 0x28)" * (cast_expression "(int *)(iVar8 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00018879;" goto statement_identifier ;)) (expression_statement "FUN_000660d0("awk.h",0x72b);" (call_expression "FUN_000660d0("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "uVar2 = FUN_00018020(iVar8);" (assignment_expression "uVar2 = FUN_00018020(iVar8)" identifier = (call_expression "FUN_00018020(iVar8)" identifier (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar3,uVar2);" (call_expression "FUN_00066470(uVar3,uVar2)" identifier (argument_list "(uVar3,uVar2)" ( identifier , identifier ))) ;) (if_statement "if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x2c) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2c) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar8 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar8 + 0x2c)" * (cast_expression "(byte *)(iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00018a35;" goto statement_identifier ;)) (labeled_statement "LAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);" statement_identifier : (expression_statement "iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);" (assignment_expression "iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6,iVar9,iVar8)" ( identifier , identifier , identifier )))) ;)) }) (else_clause "else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }" else (compound_statement "{\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }" { (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = local_50 * 4;" (assignment_expression "iVar7 = local_50 * 4" identifier = (binary_expression "local_50 * 4" identifier * number_literal)) ;) (labeled_statement "LAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;" statement_identifier : (expression_statement "puVar6 = PTR_DAT_000bf8f0;" (assignment_expression "puVar6 = PTR_DAT_000bf8f0" identifier = identifier) ;)) (expression_statement "iVar9 = DAT_000c4994;" (assignment_expression "iVar9 = DAT_000c4994" identifier = identifier) ;) (if_statement "if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar8 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar8 + 0x2c)" * (cast_expression "(byte *)(iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00018883;" goto statement_identifier ;)) (labeled_statement "LAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;" statement_identifier : (if_statement "if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;" if (parenthesized_expression "((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14)))" ( (binary_expression "(*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))" (parenthesized_expression "(*(int *)(iVar8 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar8 + 0x14) != -1" (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar9 != *(int *)(iVar8 + 0x14))" ( (binary_expression "iVar9 != *(int *)(iVar8 + 0x14)" identifier != (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ))) )) (goto_statement "goto LAB_00018883;" goto statement_identifier ;))) }))) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(DAT_000c13c0 + iVar7) = iVar8;" (assignment_expression "*(int *)(DAT_000c13c0 + iVar7) = iVar8" (pointer_expression "*(int *)(DAT_000c13c0 + iVar7)" * (cast_expression "(int *)(DAT_000c13c0 + iVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c0 + iVar7)" ( (binary_expression "DAT_000c13c0 + iVar7" identifier + identifier) )))) = identifier) ;) (expression_statement "local_3c = local_3c + *(int *)(iVar8 + 0xc);" (assignment_expression "local_3c = local_3c + *(int *)(iVar8 + 0xc)" identifier = (binary_expression "local_3c + *(int *)(iVar8 + 0xc)" identifier + (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))))) ;) }) while (parenthesized_expression "(local_50 <= param_1)" ( (binary_expression "local_50 <= param_1" identifier <= identifier) )) ;) }) (else_clause "else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }" else (compound_statement "{\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }" { (expression_statement "local_48 = DAT_000bfbcc;" (assignment_expression "local_48 = DAT_000bfbcc" identifier = identifier) ;) (expression_statement "local_20 = iVar10 * DAT_000bfbcc;" (assignment_expression "local_20 = iVar10 * DAT_000bfbcc" identifier = (binary_expression "iVar10 * DAT_000bfbcc" identifier * identifier)) ;) (if_statement "if (0 < param_1) goto LAB_00018810;" if (parenthesized_expression "(0 < param_1)" ( (binary_expression "0 < param_1" number_literal < identifier) )) (goto_statement "goto LAB_00018810;" goto statement_identifier ;)) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) }))) (expression_statement "local_3c = local_3c + local_20;" (assignment_expression "local_3c = local_3c + local_20" identifier = (binary_expression "local_3c + local_20" identifier + identifier)) ;) (expression_statement "__size = local_3c + 1;" (assignment_expression "__size = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (if_statement "if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }" if (parenthesized_expression "(__size == 0)" ( (binary_expression "__size == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }" { (expression_statement "FUN_000660d0("awk.h",0x7c5);" (call_expression "FUN_000660d0("awk.h",0x7c5)" identifier (argument_list "("awk.h",0x7c5)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);" (call_expression "FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199)" identifier (argument_list "("%s:%d: emalloc called with zero bytes","array.c",0x199)" ( (string_literal ""%s:%d: emalloc called with zero bytes"" " string_content ") , (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "local_3c = -1;" (assignment_expression "local_3c = -1" identifier = number_literal) ;) })) (labeled_statement "LAB_00018aa1:\n  __dest = malloc(__size);" statement_identifier : (expression_statement "__dest = malloc(__size);" (assignment_expression "__dest = malloc(__size)" identifier = (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier )))) ;)) (if_statement "if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }" if (parenthesized_expression "(__dest == (void *)0x0)" ( (binary_expression "__dest == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }" { (expression_statement "FUN_000660d0("awk.h",0x7c9);" (call_expression "FUN_000660d0("awk.h",0x7c9)" identifier (argument_list "("awk.h",0x7c9)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);" (assignment_expression "uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" identifier = (call_expression "dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" identifier (argument_list "(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" ( number_literal , (string_literal ""%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);" (call_expression "FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5)" identifier (argument_list "(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5)" ( identifier , (string_literal ""array.c"" " string_content ") , number_literal , (string_literal ""concat_exp"" " string_content ") , (pointer_expression "&DAT_0009478d" & identifier) , identifier , identifier ))) ;) })) (expression_statement "iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);" (assignment_expression "iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4)" identifier = (pointer_expression "*(int *)(DAT_000c13c0 + param_1 * 4)" * (cast_expression "(int *)(DAT_000c13c0 + param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c0 + param_1 * 4)" ( (binary_expression "DAT_000c13c0 + param_1 * 4" identifier + (binary_expression "param_1 * 4" identifier * number_literal)) ))))) ;) (expression_statement "memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));" (call_expression "memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc))" identifier (argument_list "(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc))" ( identifier , (pointer_expression "*(void **)(iVar8 + 8)" * (cast_expression "(void **)(iVar8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(iVar8 + 0xc)" * (cast_expression "(size_t *)(iVar8 + 0xc)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "__dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));" (assignment_expression "__dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc))" identifier = (cast_expression "(undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + *(int *)(iVar8 + 0xc))" ( (binary_expression "(int)__dest + *(int *)(iVar8 + 0xc)" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) ))))) )))) ;) (expression_statement "iVar7 = *(int *)(iVar8 + 0x10) + -1;" (assignment_expression "iVar7 = *(int *)(iVar8 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar8 + 0x10) + -1" (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar8 + 0x10) = iVar7;" (assignment_expression "*(int *)(iVar8 + 0x10) = iVar7" (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_000668b0(iVar8);\n  }" { (expression_statement "FUN_000668b0(iVar8);" (call_expression "FUN_000668b0(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) })) (if_statement "if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);" do (compound_statement "{\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    }" { (while_statement "while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }" { (if_statement "if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }" if (parenthesized_expression "(local_48 == 1)" ( (binary_expression "local_48 == 1" identifier == number_literal) )) (compound_statement "{\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }" { (expression_statement "*__dest_00 = *DAT_000bfbc8;" (assignment_expression "*__dest_00 = *DAT_000bfbc8" (pointer_expression "*__dest_00" * identifier) = (pointer_expression "*DAT_000bfbc8" * identifier)) ;) (expression_statement "__dest_01 = __dest_00 + 1;" (assignment_expression "__dest_01 = __dest_00 + 1" identifier = (binary_expression "__dest_00 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }" else (compound_statement "{\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }" { (expression_statement "__dest_01 = __dest_00;" (assignment_expression "__dest_01 = __dest_00" identifier = identifier) ;) (if_statement "if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }" { (expression_statement "__dest_01 = __dest_00 + local_48;" (assignment_expression "__dest_01 = __dest_00 + local_48" identifier = (binary_expression "__dest_00 + local_48" identifier + identifier)) ;) (expression_statement "memcpy(__dest_00,DAT_000bfbc8,local_48);" (call_expression "memcpy(__dest_00,DAT_000bfbc8,local_48)" identifier (argument_list "(__dest_00,DAT_000bfbc8,local_48)" ( identifier , identifier , identifier ))) ;) })) }))) (expression_statement "iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);" (assignment_expression "iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" identifier = (pointer_expression "*(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" * (cast_expression "(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" ( (binary_expression "DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4" identifier + (binary_expression "((param_1 + 0x3fffffff) - iVar8) * 4" (parenthesized_expression "((param_1 + 0x3fffffff) - iVar8)" ( (binary_expression "(param_1 + 0x3fffffff) - iVar8" (parenthesized_expression "(param_1 + 0x3fffffff)" ( (binary_expression "param_1 + 0x3fffffff" identifier + number_literal) )) - identifier) )) * number_literal)) ))))) ;) (expression_statement "memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));" (call_expression "memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc))" identifier (argument_list "(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc))" ( identifier , (pointer_expression "*(void **)(iVar7 + 8)" * (cast_expression "(void **)(iVar7 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(iVar7 + 0xc)" * (cast_expression "(size_t *)(iVar7 + 0xc)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "__dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);" (assignment_expression "__dest_00 = __dest_01 + *(int *)(iVar7 + 0xc)" identifier = (binary_expression "__dest_01 + *(int *)(iVar7 + 0xc)" identifier + (pointer_expression "*(int *)(iVar7 + 0xc)" * (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) )))))) ;) (expression_statement "iVar9 = *(int *)(iVar7 + 0x10) + -1;" (assignment_expression "iVar9 = *(int *)(iVar7 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar7 + 0x10) + -1" (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar7 + 0x10) = iVar9;" (assignment_expression "*(int *)(iVar7 + 0x10) = iVar9" (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iVar10 == iVar8) goto LAB_00018b85;" if (parenthesized_expression "(iVar10 == iVar8)" ( (binary_expression "iVar10 == iVar8" identifier == identifier) )) (goto_statement "goto LAB_00018b85;" goto statement_identifier ;)) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000668b0(iVar7);" (call_expression "FUN_000668b0(iVar7)" identifier (argument_list "(iVar7)" ( identifier ))) ;) }) while (parenthesized_expression "(iVar10 != iVar8)" ( (binary_expression "iVar10 != iVar8" identifier != identifier) )) ;) })) (labeled_statement "LAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);" statement_identifier : (expression_statement "iVar10 = FUN_00067f10(__dest,local_3c,2);" (assignment_expression "iVar10 = FUN_00067f10(__dest,local_3c,2)" identifier = (call_expression "FUN_00067f10(__dest,local_3c,2)" identifier (argument_list "(__dest,local_3c,2)" ( identifier , identifier , number_literal )))) ;)) (return_statement "return iVar10;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nNODE * concat_exp(int nargs,_Bool do_subsep)\n\n{\n  char **ppcVar1;\n  NODE *tmp;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *pcVar5;\n  NODE *pNVar6;\n  int *piVar7;\n  size_t sVar8;\n  int iVar9;\n  int iVar10;\n  size_t __size;\n  int iVar11;\n  int local_50;\n  size_t local_48;\n  size_t local_3c;\n  int local_20;\n  \n  iVar11 = CONVFMTidx;\n  pcVar3 = CONVFMT;\n  if (nargs == 1) {\n    pNVar6 = stack_ptr->rptr;\n    stack_ptr = stack_ptr + -1;\n    if (pNVar6->type == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      pcVar4 = array_vname(pNVar6);\n      pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar5,pcVar4);\n    }\n    if ((pNVar6->flags & 4) != 0) {\n      sVar8 = (pNVar6->sub).nodep.reserved;\n      if (sVar8 == 0xffffffff) {\n        return pNVar6;\n      }\n      if (iVar11 == sVar8) {\n        return pNVar6;\n      }\n    }\n    pNVar6 = (*format_val)(pcVar3,iVar11,pNVar6);\n    return pNVar6;\n  }\n  iVar11 = nargs + -1;\n  if (do_subsep) {\n    local_48 = SUBSEPlen;\n    local_20 = iVar11 * SUBSEPlen;\n    if (0 < nargs) goto LAB_00018810;\n    local_3c = 0;\n  }\n  else {\n    local_20 = 0;\n    local_48 = 0;\n    if (nargs < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      pNVar6 = stack_ptr->rptr;\n      if (pNVar6->type == Node_var_array) {\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }\n      else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(NODE **)((int)args_array + iVar9) = pNVar6;\n      local_3c = local_3c + (pNVar6->sub).val.slen;\n    } while (local_50 <= nargs);\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    set_loc("awk.h",0x7c5);\n    r_fatal("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = 0xffffffff;\n  }\nLAB_00018aa1:\n  pcVar3 = (char *)malloc(__size);\n  if (pcVar3 == (char *)0x0) {\n    set_loc("awk.h",0x7c9);\n    piVar7 = __errno_location();\n    pcVar4 = strerror(*piVar7);\n    pcVar5 = (char *)dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    r_fatal(pcVar5,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar4);\n  }\n  pNVar6 = args_array[nargs];\n  memcpy(pcVar3,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n  pcVar5 = pcVar3 + (pNVar6->sub).val.slen;\n  pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n  (pNVar6->sub).nodep.name = pcVar4;\n  if (pcVar4 == (char *)0x0) {\n    r_unref(pNVar6);\n  }\n  if (0 < iVar11) {\n    iVar9 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }\n        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];\n        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;\n        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n        (pNVar6->sub).nodep.name = pcVar4;\n        if (pcVar4 == (char *)0x0) break;\n        iVar9 = iVar9 + 1;\n        if (iVar11 == iVar9) goto LAB_00018b85;\n      }\n      iVar9 = iVar9 + 1;\n      r_unref(pNVar6);\n    } while (iVar11 != iVar9);\n  }\nLAB_00018b85:\n  pNVar6 = make_str_node(pcVar3,local_3c,2);\n  return pNVar6;\n}\n\n" comment comment (function_definition "NODE * concat_exp(int nargs,_Bool do_subsep)\n\n{\n  char **ppcVar1;\n  NODE *tmp;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *pcVar5;\n  NODE *pNVar6;\n  int *piVar7;\n  size_t sVar8;\n  int iVar9;\n  int iVar10;\n  size_t __size;\n  int iVar11;\n  int local_50;\n  size_t local_48;\n  size_t local_3c;\n  int local_20;\n  \n  iVar11 = CONVFMTidx;\n  pcVar3 = CONVFMT;\n  if (nargs == 1) {\n    pNVar6 = stack_ptr->rptr;\n    stack_ptr = stack_ptr + -1;\n    if (pNVar6->type == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      pcVar4 = array_vname(pNVar6);\n      pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar5,pcVar4);\n    }\n    if ((pNVar6->flags & 4) != 0) {\n      sVar8 = (pNVar6->sub).nodep.reserved;\n      if (sVar8 == 0xffffffff) {\n        return pNVar6;\n      }\n      if (iVar11 == sVar8) {\n        return pNVar6;\n      }\n    }\n    pNVar6 = (*format_val)(pcVar3,iVar11,pNVar6);\n    return pNVar6;\n  }\n  iVar11 = nargs + -1;\n  if (do_subsep) {\n    local_48 = SUBSEPlen;\n    local_20 = iVar11 * SUBSEPlen;\n    if (0 < nargs) goto LAB_00018810;\n    local_3c = 0;\n  }\n  else {\n    local_20 = 0;\n    local_48 = 0;\n    if (nargs < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      pNVar6 = stack_ptr->rptr;\n      if (pNVar6->type == Node_var_array) {\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }\n      else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(NODE **)((int)args_array + iVar9) = pNVar6;\n      local_3c = local_3c + (pNVar6->sub).val.slen;\n    } while (local_50 <= nargs);\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    set_loc("awk.h",0x7c5);\n    r_fatal("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = 0xffffffff;\n  }\nLAB_00018aa1:\n  pcVar3 = (char *)malloc(__size);\n  if (pcVar3 == (char *)0x0) {\n    set_loc("awk.h",0x7c9);\n    piVar7 = __errno_location();\n    pcVar4 = strerror(*piVar7);\n    pcVar5 = (char *)dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    r_fatal(pcVar5,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar4);\n  }\n  pNVar6 = args_array[nargs];\n  memcpy(pcVar3,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n  pcVar5 = pcVar3 + (pNVar6->sub).val.slen;\n  pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n  (pNVar6->sub).nodep.name = pcVar4;\n  if (pcVar4 == (char *)0x0) {\n    r_unref(pNVar6);\n  }\n  if (0 < iVar11) {\n    iVar9 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }\n        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];\n        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;\n        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n        (pNVar6->sub).nodep.name = pcVar4;\n        if (pcVar4 == (char *)0x0) break;\n        iVar9 = iVar9 + 1;\n        if (iVar11 == iVar9) goto LAB_00018b85;\n      }\n      iVar9 = iVar9 + 1;\n      r_unref(pNVar6);\n    } while (iVar11 != iVar9);\n  }\nLAB_00018b85:\n  pNVar6 = make_str_node(pcVar3,local_3c,2);\n  return pNVar6;\n}" type_identifier (pointer_declarator "* concat_exp(int nargs,_Bool do_subsep)" * (function_declarator "concat_exp(int nargs,_Bool do_subsep)" identifier (parameter_list "(int nargs,_Bool do_subsep)" ( (parameter_declaration "int nargs" primitive_type identifier) , (parameter_declaration "_Bool do_subsep" type_identifier identifier) )))) (compound_statement "{\n  char **ppcVar1;\n  NODE *tmp;\n  size_t sVar2;\n  char *pcVar3;\n  char *pcVar4;\n  char *pcVar5;\n  NODE *pNVar6;\n  int *piVar7;\n  size_t sVar8;\n  int iVar9;\n  int iVar10;\n  size_t __size;\n  int iVar11;\n  int local_50;\n  size_t local_48;\n  size_t local_3c;\n  int local_20;\n  \n  iVar11 = CONVFMTidx;\n  pcVar3 = CONVFMT;\n  if (nargs == 1) {\n    pNVar6 = stack_ptr->rptr;\n    stack_ptr = stack_ptr + -1;\n    if (pNVar6->type == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      pcVar4 = array_vname(pNVar6);\n      pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar5,pcVar4);\n    }\n    if ((pNVar6->flags & 4) != 0) {\n      sVar8 = (pNVar6->sub).nodep.reserved;\n      if (sVar8 == 0xffffffff) {\n        return pNVar6;\n      }\n      if (iVar11 == sVar8) {\n        return pNVar6;\n      }\n    }\n    pNVar6 = (*format_val)(pcVar3,iVar11,pNVar6);\n    return pNVar6;\n  }\n  iVar11 = nargs + -1;\n  if (do_subsep) {\n    local_48 = SUBSEPlen;\n    local_20 = iVar11 * SUBSEPlen;\n    if (0 < nargs) goto LAB_00018810;\n    local_3c = 0;\n  }\n  else {\n    local_20 = 0;\n    local_48 = 0;\n    if (nargs < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      pNVar6 = stack_ptr->rptr;\n      if (pNVar6->type == Node_var_array) {\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }\n      else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(NODE **)((int)args_array + iVar9) = pNVar6;\n      local_3c = local_3c + (pNVar6->sub).val.slen;\n    } while (local_50 <= nargs);\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    set_loc("awk.h",0x7c5);\n    r_fatal("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = 0xffffffff;\n  }\nLAB_00018aa1:\n  pcVar3 = (char *)malloc(__size);\n  if (pcVar3 == (char *)0x0) {\n    set_loc("awk.h",0x7c9);\n    piVar7 = __errno_location();\n    pcVar4 = strerror(*piVar7);\n    pcVar5 = (char *)dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    r_fatal(pcVar5,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar4);\n  }\n  pNVar6 = args_array[nargs];\n  memcpy(pcVar3,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n  pcVar5 = pcVar3 + (pNVar6->sub).val.slen;\n  pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n  (pNVar6->sub).nodep.name = pcVar4;\n  if (pcVar4 == (char *)0x0) {\n    r_unref(pNVar6);\n  }\n  if (0 < iVar11) {\n    iVar9 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }\n        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];\n        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;\n        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n        (pNVar6->sub).nodep.name = pcVar4;\n        if (pcVar4 == (char *)0x0) break;\n        iVar9 = iVar9 + 1;\n        if (iVar11 == iVar9) goto LAB_00018b85;\n      }\n      iVar9 = iVar9 + 1;\n      r_unref(pNVar6);\n    } while (iVar11 != iVar9);\n  }\nLAB_00018b85:\n  pNVar6 = make_str_node(pcVar3,local_3c,2);\n  return pNVar6;\n}" { (declaration "char **ppcVar1;" primitive_type (pointer_declarator "**ppcVar1" * (pointer_declarator "*ppcVar1" * identifier)) ;) (declaration "NODE *tmp;" type_identifier (pointer_declarator "*tmp" * identifier) ;) (declaration "size_t sVar2;" primitive_type identifier ;) (declaration "char *pcVar3;" primitive_type (pointer_declarator "*pcVar3" * identifier) ;) (declaration "char *pcVar4;" primitive_type (pointer_declarator "*pcVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "NODE *pNVar6;" type_identifier (pointer_declarator "*pNVar6" * identifier) ;) (declaration "int *piVar7;" primitive_type (pointer_declarator "*piVar7" * identifier) ;) (declaration "size_t sVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "int iVar11;" primitive_type identifier ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "size_t local_48;" primitive_type identifier ;) (declaration "size_t local_3c;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar11 = CONVFMTidx;" (assignment_expression "iVar11 = CONVFMTidx" identifier = identifier) ;) (expression_statement "pcVar3 = CONVFMT;" (assignment_expression "pcVar3 = CONVFMT" identifier = identifier) ;) (if_statement "if (nargs == 1) {\n    pNVar6 = stack_ptr->rptr;\n    stack_ptr = stack_ptr + -1;\n    if (pNVar6->type == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      pcVar4 = array_vname(pNVar6);\n      pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar5,pcVar4);\n    }\n    if ((pNVar6->flags & 4) != 0) {\n      sVar8 = (pNVar6->sub).nodep.reserved;\n      if (sVar8 == 0xffffffff) {\n        return pNVar6;\n      }\n      if (iVar11 == sVar8) {\n        return pNVar6;\n      }\n    }\n    pNVar6 = (*format_val)(pcVar3,iVar11,pNVar6);\n    return pNVar6;\n  }" if (parenthesized_expression "(nargs == 1)" ( (binary_expression "nargs == 1" identifier == number_literal) )) (compound_statement "{\n    pNVar6 = stack_ptr->rptr;\n    stack_ptr = stack_ptr + -1;\n    if (pNVar6->type == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      pcVar4 = array_vname(pNVar6);\n      pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar5,pcVar4);\n    }\n    if ((pNVar6->flags & 4) != 0) {\n      sVar8 = (pNVar6->sub).nodep.reserved;\n      if (sVar8 == 0xffffffff) {\n        return pNVar6;\n      }\n      if (iVar11 == sVar8) {\n        return pNVar6;\n      }\n    }\n    pNVar6 = (*format_val)(pcVar3,iVar11,pNVar6);\n    return pNVar6;\n  }" { (expression_statement "pNVar6 = stack_ptr->rptr;" (assignment_expression "pNVar6 = stack_ptr->rptr" identifier = (field_expression "stack_ptr->rptr" identifier -> field_identifier)) ;) (expression_statement "stack_ptr = stack_ptr + -1;" (assignment_expression "stack_ptr = stack_ptr + -1" identifier = (binary_expression "stack_ptr + -1" identifier + number_literal)) ;) (if_statement "if (pNVar6->type == Node_var_array) {\n      set_loc("awk.h",0x72b);\n      pcVar4 = array_vname(pNVar6);\n      pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar5,pcVar4);\n    }" if (parenthesized_expression "(pNVar6->type == Node_var_array)" ( (binary_expression "pNVar6->type == Node_var_array" (field_expression "pNVar6->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n      set_loc("awk.h",0x72b);\n      pcVar4 = array_vname(pNVar6);\n      pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      r_fatal(pcVar5,pcVar4);\n    }" { (expression_statement "set_loc("awk.h",0x72b);" (call_expression "set_loc("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar4 = array_vname(pNVar6);" (assignment_expression "pcVar4 = array_vname(pNVar6)" identifier = (call_expression "array_vname(pNVar6)" identifier (argument_list "(pNVar6)" ( identifier )))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "r_fatal(pcVar5,pcVar4);" (call_expression "r_fatal(pcVar5,pcVar4)" identifier (argument_list "(pcVar5,pcVar4)" ( identifier , identifier ))) ;) })) (if_statement "if ((pNVar6->flags & 4) != 0) {\n      sVar8 = (pNVar6->sub).nodep.reserved;\n      if (sVar8 == 0xffffffff) {\n        return pNVar6;\n      }\n      if (iVar11 == sVar8) {\n        return pNVar6;\n      }\n    }" if (parenthesized_expression "((pNVar6->flags & 4) != 0)" ( (binary_expression "(pNVar6->flags & 4) != 0" (parenthesized_expression "(pNVar6->flags & 4)" ( (binary_expression "pNVar6->flags & 4" (field_expression "pNVar6->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n      sVar8 = (pNVar6->sub).nodep.reserved;\n      if (sVar8 == 0xffffffff) {\n        return pNVar6;\n      }\n      if (iVar11 == sVar8) {\n        return pNVar6;\n      }\n    }" { (expression_statement "sVar8 = (pNVar6->sub).nodep.reserved;" (assignment_expression "sVar8 = (pNVar6->sub).nodep.reserved" identifier = (field_expression "(pNVar6->sub).nodep.reserved" (field_expression "(pNVar6->sub).nodep" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;) (if_statement "if (sVar8 == 0xffffffff) {\n        return pNVar6;\n      }" if (parenthesized_expression "(sVar8 == 0xffffffff)" ( (binary_expression "sVar8 == 0xffffffff" identifier == number_literal) )) (compound_statement "{\n        return pNVar6;\n      }" { (return_statement "return pNVar6;" return identifier ;) })) (if_statement "if (iVar11 == sVar8) {\n        return pNVar6;\n      }" if (parenthesized_expression "(iVar11 == sVar8)" ( (binary_expression "iVar11 == sVar8" identifier == identifier) )) (compound_statement "{\n        return pNVar6;\n      }" { (return_statement "return pNVar6;" return identifier ;) })) })) (expression_statement "pNVar6 = (*format_val)(pcVar3,iVar11,pNVar6);" (assignment_expression "pNVar6 = (*format_val)(pcVar3,iVar11,pNVar6)" identifier = (call_expression "(*format_val)(pcVar3,iVar11,pNVar6)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(pcVar3,iVar11,pNVar6)" ( identifier , identifier , identifier )))) ;) (return_statement "return pNVar6;" return identifier ;) })) (expression_statement "iVar11 = nargs + -1;" (assignment_expression "iVar11 = nargs + -1" identifier = (binary_expression "nargs + -1" identifier + number_literal)) ;) (if_statement "if (do_subsep) {\n    local_48 = SUBSEPlen;\n    local_20 = iVar11 * SUBSEPlen;\n    if (0 < nargs) goto LAB_00018810;\n    local_3c = 0;\n  }\n  else {\n    local_20 = 0;\n    local_48 = 0;\n    if (nargs < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      pNVar6 = stack_ptr->rptr;\n      if (pNVar6->type == Node_var_array) {\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }\n      else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(NODE **)((int)args_array + iVar9) = pNVar6;\n      local_3c = local_3c + (pNVar6->sub).val.slen;\n    } while (local_50 <= nargs);\n  }" if (parenthesized_expression "(do_subsep)" ( identifier )) (compound_statement "{\n    local_48 = SUBSEPlen;\n    local_20 = iVar11 * SUBSEPlen;\n    if (0 < nargs) goto LAB_00018810;\n    local_3c = 0;\n  }" { (expression_statement "local_48 = SUBSEPlen;" (assignment_expression "local_48 = SUBSEPlen" identifier = identifier) ;) (expression_statement "local_20 = iVar11 * SUBSEPlen;" (assignment_expression "local_20 = iVar11 * SUBSEPlen" identifier = (binary_expression "iVar11 * SUBSEPlen" identifier * identifier)) ;) (if_statement "if (0 < nargs) goto LAB_00018810;" if (parenthesized_expression "(0 < nargs)" ( (binary_expression "0 < nargs" number_literal < identifier) )) (goto_statement "goto LAB_00018810;" goto statement_identifier ;)) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) }) (else_clause "else {\n    local_20 = 0;\n    local_48 = 0;\n    if (nargs < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      pNVar6 = stack_ptr->rptr;\n      if (pNVar6->type == Node_var_array) {\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }\n      else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(NODE **)((int)args_array + iVar9) = pNVar6;\n      local_3c = local_3c + (pNVar6->sub).val.slen;\n    } while (local_50 <= nargs);\n  }" else (compound_statement "{\n    local_20 = 0;\n    local_48 = 0;\n    if (nargs < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      pNVar6 = stack_ptr->rptr;\n      if (pNVar6->type == Node_var_array) {\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }\n      else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(NODE **)((int)args_array + iVar9) = pNVar6;\n      local_3c = local_3c + (pNVar6->sub).val.slen;\n    } while (local_50 <= nargs);\n  }" { (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (nargs < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }" if (parenthesized_expression "(nargs < 1)" ( (binary_expression "nargs < 1" identifier < number_literal) )) (compound_statement "{\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "__size = 1;" (assignment_expression "__size = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00018aa1;" goto statement_identifier ;) })) (labeled_statement "LAB_00018810:\n    local_50 = 1;" statement_identifier : (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;)) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (do_statement "do {\n      pNVar6 = stack_ptr->rptr;\n      if (pNVar6->type == Node_var_array) {\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }\n      else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(NODE **)((int)args_array + iVar9) = pNVar6;\n      local_3c = local_3c + (pNVar6->sub).val.slen;\n    } while (local_50 <= nargs);" do (compound_statement "{\n      pNVar6 = stack_ptr->rptr;\n      if (pNVar6->type == Node_var_array) {\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }\n      else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(NODE **)((int)args_array + iVar9) = pNVar6;\n      local_3c = local_3c + (pNVar6->sub).val.slen;\n    }" { (expression_statement "pNVar6 = stack_ptr->rptr;" (assignment_expression "pNVar6 = stack_ptr->rptr" identifier = (field_expression "stack_ptr->rptr" identifier -> field_identifier)) ;) (if_statement "if (pNVar6->type == Node_var_array) {\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }\n      else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }" if (parenthesized_expression "(pNVar6->type == Node_var_array)" ( (binary_expression "pNVar6->type == Node_var_array" (field_expression "pNVar6->type" identifier -> field_identifier) == identifier) )) (compound_statement "{\n        iVar9 = (local_50 + -1) * 4;\n        iVar10 = local_50;\n        while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }\n        iVar10 = 1;\n        if (0 < local_50) {\n          iVar10 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar10);\n        set_loc("array.c",0x191);\n        pcVar3 = array_vname(pNVar6);\n        pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar4,pcVar3);\n        sVar8 = CONVFMTidx;\n        pcVar3 = CONVFMT;\n        pNVar6 = stack_ptr->rptr;\n        stack_ptr = stack_ptr + -1;\n        if (pNVar6->type != Node_var_array) goto LAB_00018879;\n        set_loc("awk.h",0x72b);\n        pcVar4 = array_vname(pNVar6);\n        pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        r_fatal(pcVar5,pcVar4);\n        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);\n      }" { (expression_statement "iVar9 = (local_50 + -1) * 4;" (assignment_expression "iVar9 = (local_50 + -1) * 4" identifier = (binary_expression "(local_50 + -1) * 4" (parenthesized_expression "(local_50 + -1)" ( (binary_expression "local_50 + -1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "iVar10 = local_50;" (assignment_expression "iVar10 = local_50" identifier = identifier) ;) (while_statement "while (iVar10 = iVar10 + -1, 0 < iVar10) {\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }" while (parenthesized_expression "(iVar10 = iVar10 + -1, 0 < iVar10)" ( (comma_expression "iVar10 = iVar10 + -1, 0 < iVar10" (assignment_expression "iVar10 = iVar10 + -1" identifier = (binary_expression "iVar10 + -1" identifier + number_literal)) , (binary_expression "0 < iVar10" number_literal < identifier)) )) (compound_statement "{\n          tmp = *(NODE **)((int)args_array + iVar9);\n          ppcVar1 = &(tmp->sub).nodep.name;\n          *ppcVar1 = *ppcVar1 + -1;\n          if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }\n          iVar9 = iVar9 + -4;\n        }" { (expression_statement "tmp = *(NODE **)((int)args_array + iVar9);" (assignment_expression "tmp = *(NODE **)((int)args_array + iVar9)" identifier = (pointer_expression "*(NODE **)((int)args_array + iVar9)" * (cast_expression "(NODE **)((int)args_array + iVar9)" ( (type_descriptor "NODE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)args_array + iVar9)" ( (binary_expression "(int)args_array + iVar9" (cast_expression "(int)args_array" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) ))))) ;) (expression_statement "ppcVar1 = &(tmp->sub).nodep.name;" (assignment_expression "ppcVar1 = &(tmp->sub).nodep.name" identifier = (pointer_expression "&(tmp->sub).nodep.name" & (field_expression "(tmp->sub).nodep.name" (field_expression "(tmp->sub).nodep" (parenthesized_expression "(tmp->sub)" ( (field_expression "tmp->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "*ppcVar1 = *ppcVar1 + -1;" (assignment_expression "*ppcVar1 = *ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) = (binary_expression "*ppcVar1 + -1" (pointer_expression "*ppcVar1" * identifier) + number_literal)) ;) (if_statement "if (*ppcVar1 == (char *)0x0) {\n            r_unref(tmp);\n          }" if (parenthesized_expression "(*ppcVar1 == (char *)0x0)" ( (binary_expression "*ppcVar1 == (char *)0x0" (pointer_expression "*ppcVar1" * identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            r_unref(tmp);\n          }" { (expression_statement "r_unref(tmp);" (call_expression "r_unref(tmp)" identifier (argument_list "(tmp)" ( identifier ))) ;) })) (expression_statement "iVar9 = iVar9 + -4;" (assignment_expression "iVar9 = iVar9 + -4" identifier = (binary_expression "iVar9 + -4" identifier + number_literal)) ;) })) (expression_statement "iVar10 = 1;" (assignment_expression "iVar10 = 1" identifier = number_literal) ;) (if_statement "if (0 < local_50) {\n          iVar10 = local_50;\n        }" if (parenthesized_expression "(0 < local_50)" ( (binary_expression "0 < local_50" number_literal < identifier) )) (compound_statement "{\n          iVar10 = local_50;\n        }" { (expression_statement "iVar10 = local_50;" (assignment_expression "iVar10 = local_50" identifier = identifier) ;) })) (expression_statement "local_50 = local_50 + -1 + (1 - iVar10);" (assignment_expression "local_50 = local_50 + -1 + (1 - iVar10)" identifier = (binary_expression "local_50 + -1 + (1 - iVar10)" (binary_expression "local_50 + -1" identifier + number_literal) + (parenthesized_expression "(1 - iVar10)" ( (binary_expression "1 - iVar10" number_literal - identifier) )))) ;) (expression_statement "set_loc("array.c",0x191);" (call_expression "set_loc("array.c",0x191)" identifier (argument_list "("array.c",0x191)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar3 = array_vname(pNVar6);" (assignment_expression "pcVar3 = array_vname(pNVar6)" identifier = (call_expression "array_vname(pNVar6)" identifier (argument_list "(pNVar6)" ( identifier )))) ;) (expression_statement "pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "pcVar4 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "r_fatal(pcVar4,pcVar3);" (call_expression "r_fatal(pcVar4,pcVar3)" identifier (argument_list "(pcVar4,pcVar3)" ( identifier , identifier ))) ;) (expression_statement "sVar8 = CONVFMTidx;" (assignment_expression "sVar8 = CONVFMTidx" identifier = identifier) ;) (expression_statement "pcVar3 = CONVFMT;" (assignment_expression "pcVar3 = CONVFMT" identifier = identifier) ;) (expression_statement "pNVar6 = stack_ptr->rptr;" (assignment_expression "pNVar6 = stack_ptr->rptr" identifier = (field_expression "stack_ptr->rptr" identifier -> field_identifier)) ;) (expression_statement "stack_ptr = stack_ptr + -1;" (assignment_expression "stack_ptr = stack_ptr + -1" identifier = (binary_expression "stack_ptr + -1" identifier + number_literal)) ;) (if_statement "if (pNVar6->type != Node_var_array) goto LAB_00018879;" if (parenthesized_expression "(pNVar6->type != Node_var_array)" ( (binary_expression "pNVar6->type != Node_var_array" (field_expression "pNVar6->type" identifier -> field_identifier) != identifier) )) (goto_statement "goto LAB_00018879;" goto statement_identifier ;)) (expression_statement "set_loc("awk.h",0x72b);" (call_expression "set_loc("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "pcVar4 = array_vname(pNVar6);" (assignment_expression "pcVar4 = array_vname(pNVar6)" identifier = (call_expression "array_vname(pNVar6)" identifier (argument_list "(pNVar6)" ( identifier )))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (cast_expression "(char *)dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal ))))) ;) (expression_statement "r_fatal(pcVar5,pcVar4);" (call_expression "r_fatal(pcVar5,pcVar4)" identifier (argument_list "(pcVar5,pcVar4)" ( identifier , identifier ))) ;) (if_statement "if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;" if (parenthesized_expression "((pNVar6->flags & 4) != 0)" ( (binary_expression "(pNVar6->flags & 4) != 0" (parenthesized_expression "(pNVar6->flags & 4)" ( (binary_expression "pNVar6->flags & 4" (field_expression "pNVar6->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00018a35;" goto statement_identifier ;)) (labeled_statement "LAB_00018883:\n        pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);" statement_identifier : (expression_statement "pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6);" (assignment_expression "pNVar6 = (*format_val)(pcVar3,sVar8,pNVar6)" identifier = (call_expression "(*format_val)(pcVar3,sVar8,pNVar6)" (parenthesized_expression "(*format_val)" ( (pointer_expression "*format_val" * identifier) )) (argument_list "(pcVar3,sVar8,pNVar6)" ( identifier , identifier , identifier )))) ;)) }) (else_clause "else {\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }" else (compound_statement "{\n        stack_ptr = stack_ptr + -1;\n        iVar9 = local_50 * 4;\nLAB_00018879:\n        pcVar3 = CONVFMT;\n        sVar8 = CONVFMTidx;\n        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;\n        if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;\n      }" { (expression_statement "stack_ptr = stack_ptr + -1;" (assignment_expression "stack_ptr = stack_ptr + -1" identifier = (binary_expression "stack_ptr + -1" identifier + number_literal)) ;) (expression_statement "iVar9 = local_50 * 4;" (assignment_expression "iVar9 = local_50 * 4" identifier = (binary_expression "local_50 * 4" identifier * number_literal)) ;) (labeled_statement "LAB_00018879:\n        pcVar3 = CONVFMT;" statement_identifier : (expression_statement "pcVar3 = CONVFMT;" (assignment_expression "pcVar3 = CONVFMT" identifier = identifier) ;)) (expression_statement "sVar8 = CONVFMTidx;" (assignment_expression "sVar8 = CONVFMTidx" identifier = identifier) ;) (if_statement "if ((pNVar6->flags & 4) == 0) goto LAB_00018883;" if (parenthesized_expression "((pNVar6->flags & 4) == 0)" ( (binary_expression "(pNVar6->flags & 4) == 0" (parenthesized_expression "(pNVar6->flags & 4)" ( (binary_expression "pNVar6->flags & 4" (field_expression "pNVar6->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00018883;" goto statement_identifier ;)) (labeled_statement "LAB_00018a35:\n        sVar2 = (pNVar6->sub).nodep.reserved;" statement_identifier : (expression_statement "sVar2 = (pNVar6->sub).nodep.reserved;" (assignment_expression "sVar2 = (pNVar6->sub).nodep.reserved" identifier = (field_expression "(pNVar6->sub).nodep.reserved" (field_expression "(pNVar6->sub).nodep" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier)) ;)) (if_statement "if ((sVar2 != 0xffffffff) && (sVar8 != sVar2)) goto LAB_00018883;" if (parenthesized_expression "((sVar2 != 0xffffffff) && (sVar8 != sVar2))" ( (binary_expression "(sVar2 != 0xffffffff) && (sVar8 != sVar2)" (parenthesized_expression "(sVar2 != 0xffffffff)" ( (binary_expression "sVar2 != 0xffffffff" identifier != number_literal) )) && (parenthesized_expression "(sVar8 != sVar2)" ( (binary_expression "sVar8 != sVar2" identifier != identifier) ))) )) (goto_statement "goto LAB_00018883;" goto statement_identifier ;)) }))) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "*(NODE **)((int)args_array + iVar9) = pNVar6;" (assignment_expression "*(NODE **)((int)args_array + iVar9) = pNVar6" (pointer_expression "*(NODE **)((int)args_array + iVar9)" * (cast_expression "(NODE **)((int)args_array + iVar9)" ( (type_descriptor "NODE **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((int)args_array + iVar9)" ( (binary_expression "(int)args_array + iVar9" (cast_expression "(int)args_array" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) )))) = identifier) ;) (expression_statement "local_3c = local_3c + (pNVar6->sub).val.slen;" (assignment_expression "local_3c = local_3c + (pNVar6->sub).val.slen" identifier = (binary_expression "local_3c + (pNVar6->sub).val.slen" identifier + (field_expression "(pNVar6->sub).val.slen" (field_expression "(pNVar6->sub).val" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) }) while (parenthesized_expression "(local_50 <= nargs)" ( (binary_expression "local_50 <= nargs" identifier <= identifier) )) ;) }))) (expression_statement "local_3c = local_3c + local_20;" (assignment_expression "local_3c = local_3c + local_20" identifier = (binary_expression "local_3c + local_20" identifier + identifier)) ;) (expression_statement "__size = local_3c + 1;" (assignment_expression "__size = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (if_statement "if (__size == 0) {\n    set_loc("awk.h",0x7c5);\n    r_fatal("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = 0xffffffff;\n  }" if (parenthesized_expression "(__size == 0)" ( (binary_expression "__size == 0" identifier == number_literal) )) (compound_statement "{\n    set_loc("awk.h",0x7c5);\n    r_fatal("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = 0xffffffff;\n  }" { (expression_statement "set_loc("awk.h",0x7c5);" (call_expression "set_loc("awk.h",0x7c5)" identifier (argument_list "("awk.h",0x7c5)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "r_fatal("%s:%d: emalloc called with zero bytes","array.c",0x199);" (call_expression "r_fatal("%s:%d: emalloc called with zero bytes","array.c",0x199)" identifier (argument_list "("%s:%d: emalloc called with zero bytes","array.c",0x199)" ( (string_literal ""%s:%d: emalloc called with zero bytes"" " string_content ") , (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "local_3c = 0xffffffff;" (assignment_expression "local_3c = 0xffffffff" identifier = number_literal) ;) })) (labeled_statement "LAB_00018aa1:\n  pcVar3 = (char *)malloc(__size);" statement_identifier : (expression_statement "pcVar3 = (char *)malloc(__size);" (assignment_expression "pcVar3 = (char *)malloc(__size)" identifier = (cast_expression "(char *)malloc(__size)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier ))))) ;)) (if_statement "if (pcVar3 == (char *)0x0) {\n    set_loc("awk.h",0x7c9);\n    piVar7 = __errno_location();\n    pcVar4 = strerror(*piVar7);\n    pcVar5 = (char *)dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    r_fatal(pcVar5,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar4);\n  }" if (parenthesized_expression "(pcVar3 == (char *)0x0)" ( (binary_expression "pcVar3 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    set_loc("awk.h",0x7c9);\n    piVar7 = __errno_location();\n    pcVar4 = strerror(*piVar7);\n    pcVar5 = (char *)dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    r_fatal(pcVar5,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar4);\n  }" { (expression_statement "set_loc("awk.h",0x7c9);" (call_expression "set_loc("awk.h",0x7c9)" identifier (argument_list "("awk.h",0x7c9)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "piVar7 = __errno_location();" (assignment_expression "piVar7 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar4 = strerror(*piVar7);" (assignment_expression "pcVar4 = strerror(*piVar7)" identifier = (call_expression "strerror(*piVar7)" identifier (argument_list "(*piVar7)" ( (pointer_expression "*piVar7" * identifier) )))) ;) (expression_statement "pcVar5 = (char *)dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);" (assignment_expression "pcVar5 = (char *)dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" identifier = (cast_expression "(char *)dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" identifier (argument_list "(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" ( number_literal , (string_literal ""%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s"" " string_content ") , number_literal ))))) ;) (expression_statement "r_fatal(pcVar5,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar4);" (call_expression "r_fatal(pcVar5,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar4)" identifier (argument_list "(pcVar5,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar4)" ( identifier , (string_literal ""array.c"" " string_content ") , number_literal , (string_literal ""concat_exp"" " string_content ") , (pointer_expression "&DAT_0009478d" & identifier) , identifier , identifier ))) ;) })) (expression_statement "pNVar6 = args_array[nargs];" (assignment_expression "pNVar6 = args_array[nargs]" identifier = (subscript_expression "args_array[nargs]" identifier [ identifier ])) ;) (expression_statement "memcpy(pcVar3,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);" (call_expression "memcpy(pcVar3,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen)" identifier (argument_list "(pcVar3,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen)" ( identifier , (field_expression "(pNVar6->sub).val.sp" (field_expression "(pNVar6->sub).val" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (field_expression "(pNVar6->sub).val.slen" (field_expression "(pNVar6->sub).val" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) (expression_statement "pcVar5 = pcVar3 + (pNVar6->sub).val.slen;" (assignment_expression "pcVar5 = pcVar3 + (pNVar6->sub).val.slen" identifier = (binary_expression "pcVar3 + (pNVar6->sub).val.slen" identifier + (field_expression "(pNVar6->sub).val.slen" (field_expression "(pNVar6->sub).val" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');" (assignment_expression "pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff')" identifier = (cast_expression "(char *)((pNVar6->sub).val.sref + L'\xffffffff')" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((pNVar6->sub).val.sref + L'\xffffffff')" ( (binary_expression "(pNVar6->sub).val.sref + L'\xffffffff'" (field_expression "(pNVar6->sub).val.sref" (field_expression "(pNVar6->sub).val" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) )))) ;) (expression_statement "(pNVar6->sub).nodep.name = pcVar4;" (assignment_expression "(pNVar6->sub).nodep.name = pcVar4" (field_expression "(pNVar6->sub).nodep.name" (field_expression "(pNVar6->sub).nodep" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (pcVar4 == (char *)0x0) {\n    r_unref(pNVar6);\n  }" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    r_unref(pNVar6);\n  }" { (expression_statement "r_unref(pNVar6);" (call_expression "r_unref(pNVar6)" identifier (argument_list "(pNVar6)" ( identifier ))) ;) })) (if_statement "if (0 < iVar11) {\n    iVar9 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }\n        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];\n        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;\n        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n        (pNVar6->sub).nodep.name = pcVar4;\n        if (pcVar4 == (char *)0x0) break;\n        iVar9 = iVar9 + 1;\n        if (iVar11 == iVar9) goto LAB_00018b85;\n      }\n      iVar9 = iVar9 + 1;\n      r_unref(pNVar6);\n    } while (iVar11 != iVar9);\n  }" if (parenthesized_expression "(0 < iVar11)" ( (binary_expression "0 < iVar11" number_literal < identifier) )) (compound_statement "{\n    iVar9 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }\n        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];\n        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;\n        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n        (pNVar6->sub).nodep.name = pcVar4;\n        if (pcVar4 == (char *)0x0) break;\n        iVar9 = iVar9 + 1;\n        if (iVar11 == iVar9) goto LAB_00018b85;\n      }\n      iVar9 = iVar9 + 1;\n      r_unref(pNVar6);\n    } while (iVar11 != iVar9);\n  }" { (expression_statement "iVar9 = 0;" (assignment_expression "iVar9 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }\n        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];\n        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;\n        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n        (pNVar6->sub).nodep.name = pcVar4;\n        if (pcVar4 == (char *)0x0) break;\n        iVar9 = iVar9 + 1;\n        if (iVar11 == iVar9) goto LAB_00018b85;\n      }\n      iVar9 = iVar9 + 1;\n      r_unref(pNVar6);\n    } while (iVar11 != iVar9);" do (compound_statement "{\n      while( true ) {\n        if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }\n        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];\n        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;\n        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n        (pNVar6->sub).nodep.name = pcVar4;\n        if (pcVar4 == (char *)0x0) break;\n        iVar9 = iVar9 + 1;\n        if (iVar11 == iVar9) goto LAB_00018b85;\n      }\n      iVar9 = iVar9 + 1;\n      r_unref(pNVar6);\n    }" { (while_statement "while( true ) {\n        if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }\n        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];\n        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;\n        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n        (pNVar6->sub).nodep.name = pcVar4;\n        if (pcVar4 == (char *)0x0) break;\n        iVar9 = iVar9 + 1;\n        if (iVar11 == iVar9) goto LAB_00018b85;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }\n        pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];\n        memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);\n        pcVar5 = pcVar4 + (pNVar6->sub).val.slen;\n        pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');\n        (pNVar6->sub).nodep.name = pcVar4;\n        if (pcVar4 == (char *)0x0) break;\n        iVar9 = iVar9 + 1;\n        if (iVar11 == iVar9) goto LAB_00018b85;\n      }" { (if_statement "if (local_48 == 1) {\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }\n        else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }" if (parenthesized_expression "(local_48 == 1)" ( (binary_expression "local_48 == 1" identifier == number_literal) )) (compound_statement "{\n          *pcVar5 = *SUBSEP;\n          pcVar4 = pcVar5 + 1;\n        }" { (expression_statement "*pcVar5 = *SUBSEP;" (assignment_expression "*pcVar5 = *SUBSEP" (pointer_expression "*pcVar5" * identifier) = (pointer_expression "*SUBSEP" * identifier)) ;) (expression_statement "pcVar4 = pcVar5 + 1;" (assignment_expression "pcVar4 = pcVar5 + 1" identifier = (binary_expression "pcVar5 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }" else (compound_statement "{\n          pcVar4 = pcVar5;\n          if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }\n        }" { (expression_statement "pcVar4 = pcVar5;" (assignment_expression "pcVar4 = pcVar5" identifier = identifier) ;) (if_statement "if (local_48 != 0) {\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n            pcVar4 = pcVar5 + local_48;\n            memcpy(pcVar5,SUBSEP,local_48);\n          }" { (expression_statement "pcVar4 = pcVar5 + local_48;" (assignment_expression "pcVar4 = pcVar5 + local_48" identifier = (binary_expression "pcVar5 + local_48" identifier + identifier)) ;) (expression_statement "memcpy(pcVar5,SUBSEP,local_48);" (call_expression "memcpy(pcVar5,SUBSEP,local_48)" identifier (argument_list "(pcVar5,SUBSEP,local_48)" ( identifier , identifier , identifier ))) ;) })) }))) (expression_statement "pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9];" (assignment_expression "pNVar6 = args_array[(nargs + 0x3fffffff) - iVar9]" identifier = (subscript_expression "args_array[(nargs + 0x3fffffff) - iVar9]" identifier [ (binary_expression "(nargs + 0x3fffffff) - iVar9" (parenthesized_expression "(nargs + 0x3fffffff)" ( (binary_expression "nargs + 0x3fffffff" identifier + number_literal) )) - identifier) ])) ;) (expression_statement "memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);" (call_expression "memcpy(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen)" identifier (argument_list "(pcVar4,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen)" ( identifier , (field_expression "(pNVar6->sub).val.sp" (field_expression "(pNVar6->sub).val" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) , (field_expression "(pNVar6->sub).val.slen" (field_expression "(pNVar6->sub).val" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) ))) ;) (expression_statement "pcVar5 = pcVar4 + (pNVar6->sub).val.slen;" (assignment_expression "pcVar5 = pcVar4 + (pNVar6->sub).val.slen" identifier = (binary_expression "pcVar4 + (pNVar6->sub).val.slen" identifier + (field_expression "(pNVar6->sub).val.slen" (field_expression "(pNVar6->sub).val" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier))) ;) (expression_statement "pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');" (assignment_expression "pcVar4 = (char *)((pNVar6->sub).val.sref + L'\xffffffff')" identifier = (cast_expression "(char *)((pNVar6->sub).val.sref + L'\xffffffff')" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((pNVar6->sub).val.sref + L'\xffffffff')" ( (binary_expression "(pNVar6->sub).val.sref + L'\xffffffff'" (field_expression "(pNVar6->sub).val.sref" (field_expression "(pNVar6->sub).val" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) + (char_literal "L'\xffffffff'" L' escape_sequence character character character character ')) )))) ;) (expression_statement "(pNVar6->sub).nodep.name = pcVar4;" (assignment_expression "(pNVar6->sub).nodep.name = pcVar4" (field_expression "(pNVar6->sub).nodep.name" (field_expression "(pNVar6->sub).nodep" (parenthesized_expression "(pNVar6->sub)" ( (field_expression "pNVar6->sub" identifier -> field_identifier) )) . field_identifier) . field_identifier) = identifier) ;) (if_statement "if (pcVar4 == (char *)0x0) break;" if (parenthesized_expression "(pcVar4 == (char *)0x0)" ( (binary_expression "pcVar4 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (if_statement "if (iVar11 == iVar9) goto LAB_00018b85;" if (parenthesized_expression "(iVar11 == iVar9)" ( (binary_expression "iVar11 == iVar9" identifier == identifier) )) (goto_statement "goto LAB_00018b85;" goto statement_identifier ;)) })) (expression_statement "iVar9 = iVar9 + 1;" (assignment_expression "iVar9 = iVar9 + 1" identifier = (binary_expression "iVar9 + 1" identifier + number_literal)) ;) (expression_statement "r_unref(pNVar6);" (call_expression "r_unref(pNVar6)" identifier (argument_list "(pNVar6)" ( identifier ))) ;) }) while (parenthesized_expression "(iVar11 != iVar9)" ( (binary_expression "iVar11 != iVar9" identifier != identifier) )) ;) })) (labeled_statement "LAB_00018b85:\n  pNVar6 = make_str_node(pcVar3,local_3c,2);" statement_identifier : (expression_statement "pNVar6 = make_str_node(pcVar3,local_3c,2);" (assignment_expression "pNVar6 = make_str_node(pcVar3,local_3c,2)" identifier = (call_expression "make_str_node(pcVar3,local_3c,2)" identifier (argument_list "(pcVar3,local_3c,2)" ( identifier , identifier , number_literal )))) ;)) (return_statement "return pNVar6;" return identifier ;) })))
(translation_unit "int FUN_000187c0(int param_1,char param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  void *__dest;\n  int *piVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __size;\n  int iVar10;\n  undefined1 *__dest_00;\n  undefined1 *__dest_01;\n  int local_50;\n  size_t local_48;\n  int local_3c;\n  int local_20;\n  \n  iVar10 = DAT_000c4994;\n  puVar6 = PTR_DAT_000bf8f0;\n  if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }\n  iVar10 = param_1 + -1;\n  if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }\nLAB_00018aa1:\n  __dest = malloc(__size);\n  if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }\n  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);\n  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));\n  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));\n  iVar7 = *(int *)(iVar8 + 0x10) + -1;\n  *(int *)(iVar8 + 0x10) = iVar7;\n  if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }\n  if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }\nLAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);\n  return iVar10;\n}\n\n" (function_definition "int FUN_000187c0(int param_1,char param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  void *__dest;\n  int *piVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __size;\n  int iVar10;\n  undefined1 *__dest_00;\n  undefined1 *__dest_01;\n  int local_50;\n  size_t local_48;\n  int local_3c;\n  int local_20;\n  \n  iVar10 = DAT_000c4994;\n  puVar6 = PTR_DAT_000bf8f0;\n  if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }\n  iVar10 = param_1 + -1;\n  if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }\nLAB_00018aa1:\n  __dest = malloc(__size);\n  if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }\n  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);\n  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));\n  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));\n  iVar7 = *(int *)(iVar8 + 0x10) + -1;\n  *(int *)(iVar8 + 0x10) = iVar7;\n  if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }\n  if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }\nLAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);\n  return iVar10;\n}" primitive_type (function_declarator "FUN_000187c0(int param_1,char param_2)" identifier (parameter_list "(int param_1,char param_2)" ( (parameter_declaration "int param_1" primitive_type identifier) , (parameter_declaration "char param_2" primitive_type identifier) ))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  void *__dest;\n  int *piVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __size;\n  int iVar10;\n  undefined1 *__dest_00;\n  undefined1 *__dest_01;\n  int local_50;\n  size_t local_48;\n  int local_3c;\n  int local_20;\n  \n  iVar10 = DAT_000c4994;\n  puVar6 = PTR_DAT_000bf8f0;\n  if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }\n  iVar10 = param_1 + -1;\n  if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }\nLAB_00018aa1:\n  __dest = malloc(__size);\n  if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }\n  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);\n  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));\n  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));\n  iVar7 = *(int *)(iVar8 + 0x10) + -1;\n  *(int *)(iVar8 + 0x10) = iVar7;\n  if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }\n  if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }\nLAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);\n  return iVar10;\n}" { (declaration "int iVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "void *__dest;" primitive_type (pointer_declarator "*__dest" * identifier) ;) (declaration "int *piVar4;" primitive_type (pointer_declarator "*piVar4" * identifier) ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "int iVar9;" primitive_type identifier ;) (declaration "size_t __size;" primitive_type identifier ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined1 *__dest_00;" type_identifier (pointer_declarator "*__dest_00" * identifier) ;) (declaration "undefined1 *__dest_01;" type_identifier (pointer_declarator "*__dest_01" * identifier) ;) (declaration "int local_50;" primitive_type identifier ;) (declaration "size_t local_48;" primitive_type identifier ;) (declaration "int local_3c;" primitive_type identifier ;) (declaration "int local_20;" primitive_type identifier ;) (expression_statement "iVar10 = DAT_000c4994;" (assignment_expression "iVar10 = DAT_000c4994" identifier = identifier) ;) (expression_statement "puVar6 = PTR_DAT_000bf8f0;" (assignment_expression "puVar6 = PTR_DAT_000bf8f0" identifier = identifier) ;) (if_statement "if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }" if (parenthesized_expression "(param_1 == 1)" ( (binary_expression "param_1 == 1" identifier == number_literal) )) (compound_statement "{\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }" { (expression_statement "iVar8 = *DAT_000c13c8;" (assignment_expression "iVar8 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (if_statement "if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }" if (parenthesized_expression "(*(int *)(iVar8 + 0x28) == 5)" ( (binary_expression "*(int *)(iVar8 + 0x28) == 5" (pointer_expression "*(int *)(iVar8 + 0x28)" * (cast_expression "(int *)(iVar8 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }" { (expression_statement "FUN_000660d0("awk.h",0x72b);" (call_expression "FUN_000660d0("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "uVar2 = FUN_00018020(iVar8);" (assignment_expression "uVar2 = FUN_00018020(iVar8)" identifier = (call_expression "FUN_00018020(iVar8)" identifier (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar3,uVar2);" (call_expression "FUN_00066470(uVar3,uVar2)" identifier (argument_list "(uVar3,uVar2)" ( identifier , identifier ))) ;) })) (if_statement "if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }" if (parenthesized_expression "((*(byte *)(iVar8 + 0x2c) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2c) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar8 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar8 + 0x2c)" * (cast_expression "(byte *)(iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }" { (if_statement "if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }" if (parenthesized_expression "(*(int *)(iVar8 + 0x14) == -1)" ( (binary_expression "*(int *)(iVar8 + 0x14) == -1" (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        return iVar8;\n      }" { (return_statement "return iVar8;" return identifier ;) })) (if_statement "if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }" if (parenthesized_expression "(iVar10 == *(int *)(iVar8 + 0x14))" ( (binary_expression "iVar10 == *(int *)(iVar8 + 0x14)" identifier == (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) )) (compound_statement "{\n        return iVar8;\n      }" { (return_statement "return iVar8;" return identifier ;) })) })) (expression_statement "iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);" (assignment_expression "iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6,iVar10,iVar8)" ( identifier , identifier , identifier )))) ;) (return_statement "return iVar10;" return identifier ;) })) (expression_statement "iVar10 = param_1 + -1;" (assignment_expression "iVar10 = param_1 + -1" identifier = (binary_expression "param_1 + -1" identifier + number_literal)) ;) (if_statement "if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }" if (parenthesized_expression "(param_2 == '\0')" ( (binary_expression "param_2 == '\0'" identifier == (char_literal "'\0'" ' escape_sequence ')) )) (compound_statement "{\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }" { (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" identifier = number_literal) ;) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" identifier = number_literal) ;) (if_statement "if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }" if (parenthesized_expression "(param_1 < 1)" ( (binary_expression "param_1 < 1" identifier < number_literal) )) (compound_statement "{\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }" { (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (expression_statement "__size = 1;" (assignment_expression "__size = 1" identifier = number_literal) ;) (goto_statement "goto LAB_00018aa1;" goto statement_identifier ;) })) (labeled_statement "LAB_00018810:\n    local_50 = 1;" statement_identifier : (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" identifier = number_literal) ;)) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) (do_statement "do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);" do (compound_statement "{\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    }" { (expression_statement "iVar8 = *DAT_000c13c8;" (assignment_expression "iVar8 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (if_statement "if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }" if (parenthesized_expression "(*(int *)(iVar8 + 0x28) == 5)" ( (binary_expression "*(int *)(iVar8 + 0x28) == 5" (pointer_expression "*(int *)(iVar8 + 0x28)" * (cast_expression "(int *)(iVar8 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )))) == number_literal) )) (compound_statement "{\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }" { (expression_statement "iVar7 = (local_50 + -1) * 4;" (assignment_expression "iVar7 = (local_50 + -1) * 4" identifier = (binary_expression "(local_50 + -1) * 4" (parenthesized_expression "(local_50 + -1)" ( (binary_expression "local_50 + -1" identifier + number_literal) )) * number_literal)) ;) (expression_statement "iVar9 = local_50;" (assignment_expression "iVar9 = local_50" identifier = identifier) ;) (while_statement "while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }" while (parenthesized_expression "(iVar9 = iVar9 + -1, 0 < iVar9)" ( (comma_expression "iVar9 = iVar9 + -1, 0 < iVar9" (assignment_expression "iVar9 = iVar9 + -1" identifier = (binary_expression "iVar9 + -1" identifier + number_literal)) , (binary_expression "0 < iVar9" number_literal < identifier)) )) (compound_statement "{\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }" { (expression_statement "iVar1 = *(int *)(DAT_000c13c0 + iVar7);" (assignment_expression "iVar1 = *(int *)(DAT_000c13c0 + iVar7)" identifier = (pointer_expression "*(int *)(DAT_000c13c0 + iVar7)" * (cast_expression "(int *)(DAT_000c13c0 + iVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c0 + iVar7)" ( (binary_expression "DAT_000c13c0 + iVar7" identifier + identifier) ))))) ;) (expression_statement "piVar4 = (int *)(iVar1 + 0x10);" (assignment_expression "piVar4 = (int *)(iVar1 + 0x10)" identifier = (cast_expression "(int *)(iVar1 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar1 + 0x10)" ( (binary_expression "iVar1 + 0x10" identifier + number_literal) )))) ;) (expression_statement "*piVar4 = *piVar4 + -1;" (assignment_expression "*piVar4 = *piVar4 + -1" (pointer_expression "*piVar4" * identifier) = (binary_expression "*piVar4 + -1" (pointer_expression "*piVar4" * identifier) + number_literal)) ;) (if_statement "if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }" if (parenthesized_expression "(*piVar4 == 0)" ( (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" * identifier) == number_literal) )) (compound_statement "{\n            FUN_000668b0(iVar1);\n          }" { (expression_statement "FUN_000668b0(iVar1);" (call_expression "FUN_000668b0(iVar1)" identifier (argument_list "(iVar1)" ( identifier ))) ;) })) (expression_statement "iVar7 = iVar7 + -4;" (assignment_expression "iVar7 = iVar7 + -4" identifier = (binary_expression "iVar7 + -4" identifier + number_literal)) ;) })) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" identifier = number_literal) ;) (if_statement "if (0 < local_50) {\n          iVar9 = local_50;\n        }" if (parenthesized_expression "(0 < local_50)" ( (binary_expression "0 < local_50" number_literal < identifier) )) (compound_statement "{\n          iVar9 = local_50;\n        }" { (expression_statement "iVar9 = local_50;" (assignment_expression "iVar9 = local_50" identifier = identifier) ;) })) (expression_statement "local_50 = local_50 + -1 + (1 - iVar9);" (assignment_expression "local_50 = local_50 + -1 + (1 - iVar9)" identifier = (binary_expression "local_50 + -1 + (1 - iVar9)" (binary_expression "local_50 + -1" identifier + number_literal) + (parenthesized_expression "(1 - iVar9)" ( (binary_expression "1 - iVar9" number_literal - identifier) )))) ;) (expression_statement "FUN_000660d0("array.c",0x191);" (call_expression "FUN_000660d0("array.c",0x191)" identifier (argument_list "("array.c",0x191)" ( (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "uVar2 = FUN_00018020(iVar8);" (assignment_expression "uVar2 = FUN_00018020(iVar8)" identifier = (call_expression "FUN_00018020(iVar8)" identifier (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar3,uVar2);" (call_expression "FUN_00066470(uVar3,uVar2)" identifier (argument_list "(uVar3,uVar2)" ( identifier , identifier ))) ;) (expression_statement "iVar9 = DAT_000c4994;" (assignment_expression "iVar9 = DAT_000c4994" identifier = identifier) ;) (expression_statement "puVar6 = PTR_DAT_000bf8f0;" (assignment_expression "puVar6 = PTR_DAT_000bf8f0" identifier = identifier) ;) (expression_statement "iVar8 = *DAT_000c13c8;" (assignment_expression "iVar8 = *DAT_000c13c8" identifier = (pointer_expression "*DAT_000c13c8" * identifier)) ;) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (if_statement "if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;" if (parenthesized_expression "(*(int *)(iVar8 + 0x28) != 5)" ( (binary_expression "*(int *)(iVar8 + 0x28) != 5" (pointer_expression "*(int *)(iVar8 + 0x28)" * (cast_expression "(int *)(iVar8 + 0x28)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x28)" ( (binary_expression "iVar8 + 0x28" identifier + number_literal) )))) != number_literal) )) (goto_statement "goto LAB_00018879;" goto statement_identifier ;)) (expression_statement "FUN_000660d0("awk.h",0x72b);" (call_expression "FUN_000660d0("awk.h",0x72b)" identifier (argument_list "("awk.h",0x72b)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "uVar2 = FUN_00018020(iVar8);" (assignment_expression "uVar2 = FUN_00018020(iVar8)" identifier = (call_expression "FUN_00018020(iVar8)" identifier (argument_list "(iVar8)" ( identifier )))) ;) (expression_statement "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier = (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" identifier (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" ( number_literal , (string_literal ""attempt to use array `%s\' in a scalar context"" " string_content escape_sequence string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar3,uVar2);" (call_expression "FUN_00066470(uVar3,uVar2)" identifier (argument_list "(uVar3,uVar2)" ( identifier , identifier ))) ;) (if_statement "if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x2c) & 4) != 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2c) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar8 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar8 + 0x2c)" * (cast_expression "(byte *)(iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (goto_statement "goto LAB_00018a35;" goto statement_identifier ;)) (labeled_statement "LAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);" statement_identifier : (expression_statement "iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);" (assignment_expression "iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8)" identifier = (call_expression "(*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" ( (pointer_expression "*(code *)PTR_FUN_000bf944" * (cast_expression "(code *)PTR_FUN_000bf944" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) )) (argument_list "(puVar6,iVar9,iVar8)" ( identifier , identifier , identifier )))) ;)) }) (else_clause "else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }" else (compound_statement "{\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }" { (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" identifier = (binary_expression "DAT_000c13c8 + -1" identifier + number_literal)) ;) (expression_statement "iVar7 = local_50 * 4;" (assignment_expression "iVar7 = local_50 * 4" identifier = (binary_expression "local_50 * 4" identifier * number_literal)) ;) (labeled_statement "LAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;" statement_identifier : (expression_statement "puVar6 = PTR_DAT_000bf8f0;" (assignment_expression "puVar6 = PTR_DAT_000bf8f0" identifier = identifier) ;)) (expression_statement "iVar9 = DAT_000c4994;" (assignment_expression "iVar9 = DAT_000c4994" identifier = identifier) ;) (if_statement "if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;" if (parenthesized_expression "((*(byte *)(iVar8 + 0x2c) & 4) == 0)" ( (binary_expression "(*(byte *)(iVar8 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c) & 4)" ( (binary_expression "*(byte *)(iVar8 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar8 + 0x2c)" * (cast_expression "(byte *)(iVar8 + 0x2c)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x2c)" ( (binary_expression "iVar8 + 0x2c" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00018883;" goto statement_identifier ;)) (labeled_statement "LAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;" statement_identifier : (if_statement "if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;" if (parenthesized_expression "((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14)))" ( (binary_expression "(*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))" (parenthesized_expression "(*(int *)(iVar8 + 0x14) != -1)" ( (binary_expression "*(int *)(iVar8 + 0x14) != -1" (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(iVar9 != *(int *)(iVar8 + 0x14))" ( (binary_expression "iVar9 != *(int *)(iVar8 + 0x14)" identifier != (pointer_expression "*(int *)(iVar8 + 0x14)" * (cast_expression "(int *)(iVar8 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x14)" ( (binary_expression "iVar8 + 0x14" identifier + number_literal) ))))) ))) )) (goto_statement "goto LAB_00018883;" goto statement_identifier ;))) }))) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" identifier = (binary_expression "local_50 + 1" identifier + number_literal)) ;) (expression_statement "*(int *)(DAT_000c13c0 + iVar7) = iVar8;" (assignment_expression "*(int *)(DAT_000c13c0 + iVar7) = iVar8" (pointer_expression "*(int *)(DAT_000c13c0 + iVar7)" * (cast_expression "(int *)(DAT_000c13c0 + iVar7)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c0 + iVar7)" ( (binary_expression "DAT_000c13c0 + iVar7" identifier + identifier) )))) = identifier) ;) (expression_statement "local_3c = local_3c + *(int *)(iVar8 + 0xc);" (assignment_expression "local_3c = local_3c + *(int *)(iVar8 + 0xc)" identifier = (binary_expression "local_3c + *(int *)(iVar8 + 0xc)" identifier + (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))))) ;) }) while (parenthesized_expression "(local_50 <= param_1)" ( (binary_expression "local_50 <= param_1" identifier <= identifier) )) ;) }) (else_clause "else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }" else (compound_statement "{\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }" { (expression_statement "local_48 = DAT_000bfbcc;" (assignment_expression "local_48 = DAT_000bfbcc" identifier = identifier) ;) (expression_statement "local_20 = iVar10 * DAT_000bfbcc;" (assignment_expression "local_20 = iVar10 * DAT_000bfbcc" identifier = (binary_expression "iVar10 * DAT_000bfbcc" identifier * identifier)) ;) (if_statement "if (0 < param_1) goto LAB_00018810;" if (parenthesized_expression "(0 < param_1)" ( (binary_expression "0 < param_1" number_literal < identifier) )) (goto_statement "goto LAB_00018810;" goto statement_identifier ;)) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" identifier = number_literal) ;) }))) (expression_statement "local_3c = local_3c + local_20;" (assignment_expression "local_3c = local_3c + local_20" identifier = (binary_expression "local_3c + local_20" identifier + identifier)) ;) (expression_statement "__size = local_3c + 1;" (assignment_expression "__size = local_3c + 1" identifier = (binary_expression "local_3c + 1" identifier + number_literal)) ;) (if_statement "if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }" if (parenthesized_expression "(__size == 0)" ( (binary_expression "__size == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }" { (expression_statement "FUN_000660d0("awk.h",0x7c5);" (call_expression "FUN_000660d0("awk.h",0x7c5)" identifier (argument_list "("awk.h",0x7c5)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);" (call_expression "FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199)" identifier (argument_list "("%s:%d: emalloc called with zero bytes","array.c",0x199)" ( (string_literal ""%s:%d: emalloc called with zero bytes"" " string_content ") , (string_literal ""array.c"" " string_content ") , number_literal ))) ;) (expression_statement "local_3c = -1;" (assignment_expression "local_3c = -1" identifier = number_literal) ;) })) (labeled_statement "LAB_00018aa1:\n  __dest = malloc(__size);" statement_identifier : (expression_statement "__dest = malloc(__size);" (assignment_expression "__dest = malloc(__size)" identifier = (call_expression "malloc(__size)" identifier (argument_list "(__size)" ( identifier )))) ;)) (if_statement "if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }" if (parenthesized_expression "(__dest == (void *)0x0)" ( (binary_expression "__dest == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }" { (expression_statement "FUN_000660d0("awk.h",0x7c9);" (call_expression "FUN_000660d0("awk.h",0x7c9)" identifier (argument_list "("awk.h",0x7c9)" ( (string_literal ""awk.h"" " string_content ") , number_literal ))) ;) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" identifier = (call_expression "__errno_location()" identifier (argument_list "()" ( )))) ;) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" identifier = (call_expression "strerror(*piVar4)" identifier (argument_list "(*piVar4)" ( (pointer_expression "*piVar4" * identifier) )))) ;) (expression_statement "uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);" (assignment_expression "uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" identifier = (call_expression "dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" identifier (argument_list "(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" ( number_literal , (string_literal ""%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s"" " string_content ") , number_literal )))) ;) (expression_statement "FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);" (call_expression "FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5)" identifier (argument_list "(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5)" ( identifier , (string_literal ""array.c"" " string_content ") , number_literal , (string_literal ""concat_exp"" " string_content ") , (pointer_expression "&DAT_0009478d" & identifier) , identifier , identifier ))) ;) })) (expression_statement "iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);" (assignment_expression "iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4)" identifier = (pointer_expression "*(int *)(DAT_000c13c0 + param_1 * 4)" * (cast_expression "(int *)(DAT_000c13c0 + param_1 * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c0 + param_1 * 4)" ( (binary_expression "DAT_000c13c0 + param_1 * 4" identifier + (binary_expression "param_1 * 4" identifier * number_literal)) ))))) ;) (expression_statement "memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));" (call_expression "memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc))" identifier (argument_list "(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc))" ( identifier , (pointer_expression "*(void **)(iVar8 + 8)" * (cast_expression "(void **)(iVar8 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar8 + 8)" ( (binary_expression "iVar8 + 8" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(iVar8 + 0xc)" * (cast_expression "(size_t *)(iVar8 + 0xc)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "__dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));" (assignment_expression "__dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc))" identifier = (cast_expression "(undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc))" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)__dest + *(int *)(iVar8 + 0xc))" ( (binary_expression "(int)__dest + *(int *)(iVar8 + 0xc)" (cast_expression "(int)__dest" ( (type_descriptor "int" primitive_type) ) identifier) + (pointer_expression "*(int *)(iVar8 + 0xc)" * (cast_expression "(int *)(iVar8 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0xc)" ( (binary_expression "iVar8 + 0xc" identifier + number_literal) ))))) )))) ;) (expression_statement "iVar7 = *(int *)(iVar8 + 0x10) + -1;" (assignment_expression "iVar7 = *(int *)(iVar8 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar8 + 0x10) + -1" (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar8 + 0x10) = iVar7;" (assignment_expression "*(int *)(iVar8 + 0x10) = iVar7" (pointer_expression "*(int *)(iVar8 + 0x10)" * (cast_expression "(int *)(iVar8 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar8 + 0x10)" ( (binary_expression "iVar8 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n    FUN_000668b0(iVar8);\n  }" { (expression_statement "FUN_000668b0(iVar8);" (call_expression "FUN_000668b0(iVar8)" identifier (argument_list "(iVar8)" ( identifier ))) ;) })) (if_statement "if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }" if (parenthesized_expression "(0 < iVar10)" ( (binary_expression "0 < iVar10" number_literal < identifier) )) (compound_statement "{\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }" { (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (do_statement "do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);" do (compound_statement "{\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    }" { (while_statement "while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }" { (if_statement "if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }" if (parenthesized_expression "(local_48 == 1)" ( (binary_expression "local_48 == 1" identifier == number_literal) )) (compound_statement "{\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }" { (expression_statement "*__dest_00 = *DAT_000bfbc8;" (assignment_expression "*__dest_00 = *DAT_000bfbc8" (pointer_expression "*__dest_00" * identifier) = (pointer_expression "*DAT_000bfbc8" * identifier)) ;) (expression_statement "__dest_01 = __dest_00 + 1;" (assignment_expression "__dest_01 = __dest_00 + 1" identifier = (binary_expression "__dest_00 + 1" identifier + number_literal)) ;) }) (else_clause "else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }" else (compound_statement "{\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }" { (expression_statement "__dest_01 = __dest_00;" (assignment_expression "__dest_01 = __dest_00" identifier = identifier) ;) (if_statement "if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }" if (parenthesized_expression "(local_48 != 0)" ( (binary_expression "local_48 != 0" identifier != number_literal) )) (compound_statement "{\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }" { (expression_statement "__dest_01 = __dest_00 + local_48;" (assignment_expression "__dest_01 = __dest_00 + local_48" identifier = (binary_expression "__dest_00 + local_48" identifier + identifier)) ;) (expression_statement "memcpy(__dest_00,DAT_000bfbc8,local_48);" (call_expression "memcpy(__dest_00,DAT_000bfbc8,local_48)" identifier (argument_list "(__dest_00,DAT_000bfbc8,local_48)" ( identifier , identifier , identifier ))) ;) })) }))) (expression_statement "iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);" (assignment_expression "iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" identifier = (pointer_expression "*(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" * (cast_expression "(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" ( (binary_expression "DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4" identifier + (binary_expression "((param_1 + 0x3fffffff) - iVar8) * 4" (parenthesized_expression "((param_1 + 0x3fffffff) - iVar8)" ( (binary_expression "(param_1 + 0x3fffffff) - iVar8" (parenthesized_expression "(param_1 + 0x3fffffff)" ( (binary_expression "param_1 + 0x3fffffff" identifier + number_literal) )) - identifier) )) * number_literal)) ))))) ;) (expression_statement "memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));" (call_expression "memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc))" identifier (argument_list "(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc))" ( identifier , (pointer_expression "*(void **)(iVar7 + 8)" * (cast_expression "(void **)(iVar7 + 8)" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(iVar7 + 8)" ( (binary_expression "iVar7 + 8" identifier + number_literal) )))) , (pointer_expression "*(size_t *)(iVar7 + 0xc)" * (cast_expression "(size_t *)(iVar7 + 0xc)" ( (type_descriptor "size_t *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) )))) ))) ;) (expression_statement "__dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);" (assignment_expression "__dest_00 = __dest_01 + *(int *)(iVar7 + 0xc)" identifier = (binary_expression "__dest_01 + *(int *)(iVar7 + 0xc)" identifier + (pointer_expression "*(int *)(iVar7 + 0xc)" * (cast_expression "(int *)(iVar7 + 0xc)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0xc)" ( (binary_expression "iVar7 + 0xc" identifier + number_literal) )))))) ;) (expression_statement "iVar9 = *(int *)(iVar7 + 0x10) + -1;" (assignment_expression "iVar9 = *(int *)(iVar7 + 0x10) + -1" identifier = (binary_expression "*(int *)(iVar7 + 0x10) + -1" (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) + number_literal)) ;) (expression_statement "*(int *)(iVar7 + 0x10) = iVar9;" (assignment_expression "*(int *)(iVar7 + 0x10) = iVar9" (pointer_expression "*(int *)(iVar7 + 0x10)" * (cast_expression "(int *)(iVar7 + 0x10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar7 + 0x10)" ( (binary_expression "iVar7 + 0x10" identifier + number_literal) )))) = identifier) ;) (if_statement "if (iVar9 == 0) break;" if (parenthesized_expression "(iVar9 == 0)" ( (binary_expression "iVar9 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (if_statement "if (iVar10 == iVar8) goto LAB_00018b85;" if (parenthesized_expression "(iVar10 == iVar8)" ( (binary_expression "iVar10 == iVar8" identifier == identifier) )) (goto_statement "goto LAB_00018b85;" goto statement_identifier ;)) })) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" identifier = (binary_expression "iVar8 + 1" identifier + number_literal)) ;) (expression_statement "FUN_000668b0(iVar7);" (call_expression "FUN_000668b0(iVar7)" identifier (argument_list "(iVar7)" ( identifier ))) ;) }) while (parenthesized_expression "(iVar10 != iVar8)" ( (binary_expression "iVar10 != iVar8" identifier != identifier) )) ;) })) (labeled_statement "LAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);" statement_identifier : (expression_statement "iVar10 = FUN_00067f10(__dest,local_3c,2);" (assignment_expression "iVar10 = FUN_00067f10(__dest,local_3c,2)" identifier = (call_expression "FUN_00067f10(__dest,local_3c,2)" identifier (argument_list "(__dest,local_3c,2)" ( identifier , identifier , number_literal )))) ;)) (return_statement "return iVar10;" return identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE IDENT) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression 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 ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) })) (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 { (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 { (return_statement return IDENT ;) })) (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 { (return_statement return IDENT ;) })) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (char_literal ' escape_sequence ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (goto_statement goto statement_identifier ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * 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 (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) * LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (binary_expression IDENT + LIT)) , (binary_expression LIT < IDENT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (binary_expression (pointer_expression * IDENT) + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT + LIT) + (parenthesized_expression ( (binary_expression LIT - IDENT) )))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (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) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) IDENT)) )) (argument_list ( IDENT , IDENT , IDENT )))) ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * LIT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = IDENT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (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) )) (goto_statement goto statement_identifier ;)) (labeled_statement statement_identifier : (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) )) && (parenthesized_expression ( (binary_expression IDENT != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (goto_statement goto statement_identifier ;))) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) }) while (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( (string_literal " string_content ") , LIT ))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (string_literal " string_content ") , LIT , (string_literal " string_content ") , (pointer_expression & IDENT) , IDENT , IDENT ))) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression IDENT * LIT)) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (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 == LIT) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * IDENT) = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) })) }))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT + LIT) )) - IDENT) )) * LIT)) ))))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT)) ;) (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 == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (goto_statement goto statement_identifier ;)) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , LIT )))) ;)) (return_statement return IDENT ;) })))
(function_definition "int FUN_000187c0(int param_1,char param_2)\n\n{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  void *__dest;\n  int *piVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __size;\n  int iVar10;\n  undefined1 *__dest_00;\n  undefined1 *__dest_01;\n  int local_50;\n  size_t local_48;\n  int local_3c;\n  int local_20;\n  \n  iVar10 = DAT_000c4994;\n  puVar6 = PTR_DAT_000bf8f0;\n  if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }\n  iVar10 = param_1 + -1;\n  if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }\nLAB_00018aa1:\n  __dest = malloc(__size);\n  if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }\n  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);\n  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));\n  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));\n  iVar7 = *(int *)(iVar8 + 0x10) + -1;\n  *(int *)(iVar8 + 0x10) = iVar7;\n  if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }\n  if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }\nLAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);\n  return iVar10;\n}" (primitive_type "int") (function_declarator "FUN_000187c0(int param_1,char param_2)" (identifier "FUN_000187c0") (parameter_list "(int param_1,char param_2)" (( "(") (parameter_declaration "int param_1" (primitive_type "int") (identifier "param_1")) (, ",") (parameter_declaration "char param_2" (primitive_type "char") (identifier "param_2")) () ")"))) (compound_statement "{\n  int iVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  void *__dest;\n  int *piVar4;\n  char *pcVar5;\n  undefined *puVar6;\n  int iVar7;\n  int iVar8;\n  int iVar9;\n  size_t __size;\n  int iVar10;\n  undefined1 *__dest_00;\n  undefined1 *__dest_01;\n  int local_50;\n  size_t local_48;\n  int local_3c;\n  int local_20;\n  \n  iVar10 = DAT_000c4994;\n  puVar6 = PTR_DAT_000bf8f0;\n  if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }\n  iVar10 = param_1 + -1;\n  if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }\n  local_3c = local_3c + local_20;\n  __size = local_3c + 1;\n  if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }\nLAB_00018aa1:\n  __dest = malloc(__size);\n  if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }\n  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);\n  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));\n  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));\n  iVar7 = *(int *)(iVar8 + 0x10) + -1;\n  *(int *)(iVar8 + 0x10) = iVar7;\n  if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }\n  if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }\nLAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);\n  return iVar10;\n}" ({ "{") (declaration "int iVar1;" (primitive_type "int") (identifier "iVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "undefined4 uVar3;" (type_identifier "undefined4") (identifier "uVar3") (; ";")) (declaration "void *__dest;" (primitive_type "void") (pointer_declarator "*__dest" (* "*") (identifier "__dest")) (; ";")) (declaration "int *piVar4;" (primitive_type "int") (pointer_declarator "*piVar4" (* "*") (identifier "piVar4")) (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined *puVar6;" (type_identifier "undefined") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "int iVar8;" (primitive_type "int") (identifier "iVar8") (; ";")) (declaration "int iVar9;" (primitive_type "int") (identifier "iVar9") (; ";")) (declaration "size_t __size;" (primitive_type "size_t") (identifier "__size") (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined1 *__dest_00;" (type_identifier "undefined1") (pointer_declarator "*__dest_00" (* "*") (identifier "__dest_00")) (; ";")) (declaration "undefined1 *__dest_01;" (type_identifier "undefined1") (pointer_declarator "*__dest_01" (* "*") (identifier "__dest_01")) (; ";")) (declaration "int local_50;" (primitive_type "int") (identifier "local_50") (; ";")) (declaration "size_t local_48;" (primitive_type "size_t") (identifier "local_48") (; ";")) (declaration "int local_3c;" (primitive_type "int") (identifier "local_3c") (; ";")) (declaration "int local_20;" (primitive_type "int") (identifier "local_20") (; ";")) (expression_statement "iVar10 = DAT_000c4994;" (assignment_expression "iVar10 = DAT_000c4994" (identifier "iVar10") (= "=") (identifier "DAT_000c4994")) (; ";")) (expression_statement "puVar6 = PTR_DAT_000bf8f0;" (assignment_expression "puVar6 = PTR_DAT_000bf8f0" (identifier "puVar6") (= "=") (identifier "PTR_DAT_000bf8f0")) (; ";")) (if_statement "if (param_1 == 1) {\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }" (if "if") (parenthesized_expression "(param_1 == 1)" (( "(") (binary_expression "param_1 == 1" (identifier "param_1") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n    iVar8 = *DAT_000c13c8;\n    DAT_000c13c8 = DAT_000c13c8 + -1;\n    if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }\n    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }\n    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);\n    return iVar10;\n  }" ({ "{") (expression_statement "iVar8 = *DAT_000c13c8;" (assignment_expression "iVar8 = *DAT_000c13c8" (identifier "iVar8") (= "=") (pointer_expression "*DAT_000c13c8" (* "*") (identifier "DAT_000c13c8"))) (; ";")) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (= "=") (binary_expression "DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*(int *)(iVar8 + 0x28) == 5) {\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }" (if "if") (parenthesized_expression "(*(int *)(iVar8 + 0x28) == 5)" (( "(") (binary_expression "*(int *)(iVar8 + 0x28) == 5" (pointer_expression "*(int *)(iVar8 + 0x28)" (* "*") (cast_expression "(int *)(iVar8 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x28)" (( "(") (binary_expression "iVar8 + 0x28" (identifier "iVar8") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n      FUN_000660d0("awk.h",0x72b);\n      uVar2 = FUN_00018020(iVar8);\n      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n      FUN_00066470(uVar3,uVar2);\n    }" ({ "{") (expression_statement "FUN_000660d0("awk.h",0x72b);" (call_expression "FUN_000660d0("awk.h",0x72b)" (identifier "FUN_000660d0") (argument_list "("awk.h",0x72b)" (( "(") (string_literal ""awk.h"" (" """) (string_content "awk.h") (" """)) (, ",") (number_literal "0x72b") () ")"))) (; ";")) (expression_statement "uVar2 = FUN_00018020(iVar8);" (assignment_expression "uVar2 = FUN_00018020(iVar8)" (identifier "uVar2") (= "=") (call_expression "FUN_00018020(iVar8)" (identifier "FUN_00018020") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "dcgettext") (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to use array `%s\' in a scalar context"" (" """) (string_content "attempt to use array `%s") (escape_sequence "\'") (string_content " in a scalar context") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00066470(uVar3,uVar2);" (call_expression "FUN_00066470(uVar3,uVar2)" (identifier "FUN_00066470") (argument_list "(uVar3,uVar2)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar2") () ")"))) (; ";")) (} "}"))) (if_statement "if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x2c) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x2c) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar8 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar8 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x2c)" (( "(") (binary_expression "iVar8 + 0x2c" (identifier "iVar8") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }\n      if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }\n    }" ({ "{") (if_statement "if (*(int *)(iVar8 + 0x14) == -1) {\n        return iVar8;\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar8 + 0x14) == -1)" (( "(") (binary_expression "*(int *)(iVar8 + 0x14) == -1" (pointer_expression "*(int *)(iVar8 + 0x14)" (* "*") (cast_expression "(int *)(iVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "-1")) () ")")) (compound_statement "{\n        return iVar8;\n      }" ({ "{") (return_statement "return iVar8;" (return "return") (identifier "iVar8") (; ";")) (} "}"))) (if_statement "if (iVar10 == *(int *)(iVar8 + 0x14)) {\n        return iVar8;\n      }" (if "if") (parenthesized_expression "(iVar10 == *(int *)(iVar8 + 0x14))" (( "(") (binary_expression "iVar10 == *(int *)(iVar8 + 0x14)" (identifier "iVar10") (== "==") (pointer_expression "*(int *)(iVar8 + 0x14)" (* "*") (cast_expression "(int *)(iVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")"))))) () ")")) (compound_statement "{\n        return iVar8;\n      }" ({ "{") (return_statement "return iVar8;" (return "return") (identifier "iVar8") (; ";")) (} "}"))) (} "}"))) (expression_statement "iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);" (assignment_expression "iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8)" (identifier "iVar10") (= "=") (call_expression "(*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf944" (* "*") (cast_expression "(code *)PTR_FUN_000bf944" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf944"))) () ")")) (argument_list "(puVar6,iVar10,iVar8)" (( "(") (identifier "puVar6") (, ",") (identifier "iVar10") (, ",") (identifier "iVar8") () ")")))) (; ";")) (return_statement "return iVar10;" (return "return") (identifier "iVar10") (; ";")) (} "}"))) (expression_statement "iVar10 = param_1 + -1;" (assignment_expression "iVar10 = param_1 + -1" (identifier "iVar10") (= "=") (binary_expression "param_1 + -1" (identifier "param_1") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (param_2 == '\0') {\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }\n  else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }" (if "if") (parenthesized_expression "(param_2 == '\0')" (( "(") (binary_expression "param_2 == '\0'" (identifier "param_2") (== "==") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (compound_statement "{\n    local_20 = 0;\n    local_48 = 0;\n    if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }\nLAB_00018810:\n    local_50 = 1;\n    local_3c = 0;\n    do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);\n  }" ({ "{") (expression_statement "local_20 = 0;" (assignment_expression "local_20 = 0" (identifier "local_20") (= "=") (number_literal "0")) (; ";")) (expression_statement "local_48 = 0;" (assignment_expression "local_48 = 0" (identifier "local_48") (= "=") (number_literal "0")) (; ";")) (if_statement "if (param_1 < 1) {\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }" (if "if") (parenthesized_expression "(param_1 < 1)" (( "(") (binary_expression "param_1 < 1" (identifier "param_1") (< "<") (number_literal "1")) () ")")) (compound_statement "{\n      local_3c = 0;\n      __size = 1;\n      goto LAB_00018aa1;\n    }" ({ "{") (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (expression_statement "__size = 1;" (assignment_expression "__size = 1" (identifier "__size") (= "=") (number_literal "1")) (; ";")) (goto_statement "goto LAB_00018aa1;" (goto "goto") (statement_identifier "LAB_00018aa1") (; ";")) (} "}"))) (labeled_statement "LAB_00018810:\n    local_50 = 1;" (statement_identifier "LAB_00018810") (: ":") (expression_statement "local_50 = 1;" (assignment_expression "local_50 = 1" (identifier "local_50") (= "=") (number_literal "1")) (; ";"))) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    } while (local_50 <= param_1);" (do "do") (compound_statement "{\n      iVar8 = *DAT_000c13c8;\n      if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }\n      local_50 = local_50 + 1;\n      *(int *)(DAT_000c13c0 + iVar7) = iVar8;\n      local_3c = local_3c + *(int *)(iVar8 + 0xc);\n    }" ({ "{") (expression_statement "iVar8 = *DAT_000c13c8;" (assignment_expression "iVar8 = *DAT_000c13c8" (identifier "iVar8") (= "=") (pointer_expression "*DAT_000c13c8" (* "*") (identifier "DAT_000c13c8"))) (; ";")) (if_statement "if (*(int *)(iVar8 + 0x28) == 5) {\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }\n      else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }" (if "if") (parenthesized_expression "(*(int *)(iVar8 + 0x28) == 5)" (( "(") (binary_expression "*(int *)(iVar8 + 0x28) == 5" (pointer_expression "*(int *)(iVar8 + 0x28)" (* "*") (cast_expression "(int *)(iVar8 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x28)" (( "(") (binary_expression "iVar8 + 0x28" (identifier "iVar8") (+ "+") (number_literal "0x28")) () ")")))) (== "==") (number_literal "5")) () ")")) (compound_statement "{\n        iVar7 = (local_50 + -1) * 4;\n        iVar9 = local_50;\n        while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }\n        iVar9 = 1;\n        if (0 < local_50) {\n          iVar9 = local_50;\n        }\n        local_50 = local_50 + -1 + (1 - iVar9);\n        FUN_000660d0("array.c",0x191);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        iVar9 = DAT_000c4994;\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar8 = *DAT_000c13c8;\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;\n        FUN_000660d0("awk.h",0x72b);\n        uVar2 = FUN_00018020(iVar8);\n        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);\n        FUN_00066470(uVar3,uVar2);\n        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;\nLAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);\n      }" ({ "{") (expression_statement "iVar7 = (local_50 + -1) * 4;" (assignment_expression "iVar7 = (local_50 + -1) * 4" (identifier "iVar7") (= "=") (binary_expression "(local_50 + -1) * 4" (parenthesized_expression "(local_50 + -1)" (( "(") (binary_expression "local_50 + -1" (identifier "local_50") (+ "+") (number_literal "-1")) () ")")) (* "*") (number_literal "4"))) (; ";")) (expression_statement "iVar9 = local_50;" (assignment_expression "iVar9 = local_50" (identifier "iVar9") (= "=") (identifier "local_50")) (; ";")) (while_statement "while (iVar9 = iVar9 + -1, 0 < iVar9) {\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }" (while "while") (parenthesized_expression "(iVar9 = iVar9 + -1, 0 < iVar9)" (( "(") (comma_expression "iVar9 = iVar9 + -1, 0 < iVar9" (assignment_expression "iVar9 = iVar9 + -1" (identifier "iVar9") (= "=") (binary_expression "iVar9 + -1" (identifier "iVar9") (+ "+") (number_literal "-1"))) (, ",") (binary_expression "0 < iVar9" (number_literal "0") (< "<") (identifier "iVar9"))) () ")")) (compound_statement "{\n          iVar1 = *(int *)(DAT_000c13c0 + iVar7);\n          piVar4 = (int *)(iVar1 + 0x10);\n          *piVar4 = *piVar4 + -1;\n          if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }\n          iVar7 = iVar7 + -4;\n        }" ({ "{") (expression_statement "iVar1 = *(int *)(DAT_000c13c0 + iVar7);" (assignment_expression "iVar1 = *(int *)(DAT_000c13c0 + iVar7)" (identifier "iVar1") (= "=") (pointer_expression "*(int *)(DAT_000c13c0 + iVar7)" (* "*") (cast_expression "(int *)(DAT_000c13c0 + iVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000c13c0 + iVar7)" (( "(") (binary_expression "DAT_000c13c0 + iVar7" (identifier "DAT_000c13c0") (+ "+") (identifier "iVar7")) () ")"))))) (; ";")) (expression_statement "piVar4 = (int *)(iVar1 + 0x10);" (assignment_expression "piVar4 = (int *)(iVar1 + 0x10)" (identifier "piVar4") (= "=") (cast_expression "(int *)(iVar1 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar1 + 0x10)" (( "(") (binary_expression "iVar1 + 0x10" (identifier "iVar1") (+ "+") (number_literal "0x10")) () ")")))) (; ";")) (expression_statement "*piVar4 = *piVar4 + -1;" (assignment_expression "*piVar4 = *piVar4 + -1" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (= "=") (binary_expression "*piVar4 + -1" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*piVar4 == 0) {\n            FUN_000668b0(iVar1);\n          }" (if "if") (parenthesized_expression "(*piVar4 == 0)" (( "(") (binary_expression "*piVar4 == 0" (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            FUN_000668b0(iVar1);\n          }" ({ "{") (expression_statement "FUN_000668b0(iVar1);" (call_expression "FUN_000668b0(iVar1)" (identifier "FUN_000668b0") (argument_list "(iVar1)" (( "(") (identifier "iVar1") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar7 = iVar7 + -4;" (assignment_expression "iVar7 = iVar7 + -4" (identifier "iVar7") (= "=") (binary_expression "iVar7 + -4" (identifier "iVar7") (+ "+") (number_literal "-4"))) (; ";")) (} "}"))) (expression_statement "iVar9 = 1;" (assignment_expression "iVar9 = 1" (identifier "iVar9") (= "=") (number_literal "1")) (; ";")) (if_statement "if (0 < local_50) {\n          iVar9 = local_50;\n        }" (if "if") (parenthesized_expression "(0 < local_50)" (( "(") (binary_expression "0 < local_50" (number_literal "0") (< "<") (identifier "local_50")) () ")")) (compound_statement "{\n          iVar9 = local_50;\n        }" ({ "{") (expression_statement "iVar9 = local_50;" (assignment_expression "iVar9 = local_50" (identifier "iVar9") (= "=") (identifier "local_50")) (; ";")) (} "}"))) (expression_statement "local_50 = local_50 + -1 + (1 - iVar9);" (assignment_expression "local_50 = local_50 + -1 + (1 - iVar9)" (identifier "local_50") (= "=") (binary_expression "local_50 + -1 + (1 - iVar9)" (binary_expression "local_50 + -1" (identifier "local_50") (+ "+") (number_literal "-1")) (+ "+") (parenthesized_expression "(1 - iVar9)" (( "(") (binary_expression "1 - iVar9" (number_literal "1") (- "-") (identifier "iVar9")) () ")")))) (; ";")) (expression_statement "FUN_000660d0("array.c",0x191);" (call_expression "FUN_000660d0("array.c",0x191)" (identifier "FUN_000660d0") (argument_list "("array.c",0x191)" (( "(") (string_literal ""array.c"" (" """) (string_content "array.c") (" """)) (, ",") (number_literal "0x191") () ")"))) (; ";")) (expression_statement "uVar2 = FUN_00018020(iVar8);" (assignment_expression "uVar2 = FUN_00018020(iVar8)" (identifier "uVar2") (= "=") (call_expression "FUN_00018020(iVar8)" (identifier "FUN_00018020") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "dcgettext") (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to use array `%s\' in a scalar context"" (" """) (string_content "attempt to use array `%s") (escape_sequence "\'") (string_content " in a scalar context") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00066470(uVar3,uVar2);" (call_expression "FUN_00066470(uVar3,uVar2)" (identifier "FUN_00066470") (argument_list "(uVar3,uVar2)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar2") () ")"))) (; ";")) (expression_statement "iVar9 = DAT_000c4994;" (assignment_expression "iVar9 = DAT_000c4994" (identifier "iVar9") (= "=") (identifier "DAT_000c4994")) (; ";")) (expression_statement "puVar6 = PTR_DAT_000bf8f0;" (assignment_expression "puVar6 = PTR_DAT_000bf8f0" (identifier "puVar6") (= "=") (identifier "PTR_DAT_000bf8f0")) (; ";")) (expression_statement "iVar8 = *DAT_000c13c8;" (assignment_expression "iVar8 = *DAT_000c13c8" (identifier "iVar8") (= "=") (pointer_expression "*DAT_000c13c8" (* "*") (identifier "DAT_000c13c8"))) (; ";")) (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (= "=") (binary_expression "DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (+ "+") (number_literal "-1"))) (; ";")) (if_statement "if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;" (if "if") (parenthesized_expression "(*(int *)(iVar8 + 0x28) != 5)" (( "(") (binary_expression "*(int *)(iVar8 + 0x28) != 5" (pointer_expression "*(int *)(iVar8 + 0x28)" (* "*") (cast_expression "(int *)(iVar8 + 0x28)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x28)" (( "(") (binary_expression "iVar8 + 0x28" (identifier "iVar8") (+ "+") (number_literal "0x28")) () ")")))) (!= "!=") (number_literal "5")) () ")")) (goto_statement "goto LAB_00018879;" (goto "goto") (statement_identifier "LAB_00018879") (; ";"))) (expression_statement "FUN_000660d0("awk.h",0x72b);" (call_expression "FUN_000660d0("awk.h",0x72b)" (identifier "FUN_000660d0") (argument_list "("awk.h",0x72b)" (( "(") (string_literal ""awk.h"" (" """) (string_content "awk.h") (" """)) (, ",") (number_literal "0x72b") () ")"))) (; ";")) (expression_statement "uVar2 = FUN_00018020(iVar8);" (assignment_expression "uVar2 = FUN_00018020(iVar8)" (identifier "uVar2") (= "=") (call_expression "FUN_00018020(iVar8)" (identifier "FUN_00018020") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")")))) (; ";")) (expression_statement "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);" (assignment_expression "uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "uVar3") (= "=") (call_expression "dcgettext(0,"attempt to use array `%s\' in a scalar context",5)" (identifier "dcgettext") (argument_list "(0,"attempt to use array `%s\' in a scalar context",5)" (( "(") (number_literal "0") (, ",") (string_literal ""attempt to use array `%s\' in a scalar context"" (" """) (string_content "attempt to use array `%s") (escape_sequence "\'") (string_content " in a scalar context") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00066470(uVar3,uVar2);" (call_expression "FUN_00066470(uVar3,uVar2)" (identifier "FUN_00066470") (argument_list "(uVar3,uVar2)" (( "(") (identifier "uVar3") (, ",") (identifier "uVar2") () ")"))) (; ";")) (if_statement "if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x2c) & 4) != 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x2c) & 4) != 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar8 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar8 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x2c)" (( "(") (binary_expression "iVar8 + 0x2c" (identifier "iVar8") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018a35;" (goto "goto") (statement_identifier "LAB_00018a35") (; ";"))) (labeled_statement "LAB_00018883:\n        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);" (statement_identifier "LAB_00018883") (: ":") (expression_statement "iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);" (assignment_expression "iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8)" (identifier "iVar8") (= "=") (call_expression "(*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8)" (parenthesized_expression "(*(code *)PTR_FUN_000bf944)" (( "(") (pointer_expression "*(code *)PTR_FUN_000bf944" (* "*") (cast_expression "(code *)PTR_FUN_000bf944" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "PTR_FUN_000bf944"))) () ")")) (argument_list "(puVar6,iVar9,iVar8)" (( "(") (identifier "puVar6") (, ",") (identifier "iVar9") (, ",") (identifier "iVar8") () ")")))) (; ";"))) (} "}")) (else_clause "else {\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }" (else "else") (compound_statement "{\n        DAT_000c13c8 = DAT_000c13c8 + -1;\n        iVar7 = local_50 * 4;\nLAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;\n        iVar9 = DAT_000c4994;\n        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;\nLAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;\n      }" ({ "{") (expression_statement "DAT_000c13c8 = DAT_000c13c8 + -1;" (assignment_expression "DAT_000c13c8 = DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (= "=") (binary_expression "DAT_000c13c8 + -1" (identifier "DAT_000c13c8") (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "iVar7 = local_50 * 4;" (assignment_expression "iVar7 = local_50 * 4" (identifier "iVar7") (= "=") (binary_expression "local_50 * 4" (identifier "local_50") (* "*") (number_literal "4"))) (; ";")) (labeled_statement "LAB_00018879:\n        puVar6 = PTR_DAT_000bf8f0;" (statement_identifier "LAB_00018879") (: ":") (expression_statement "puVar6 = PTR_DAT_000bf8f0;" (assignment_expression "puVar6 = PTR_DAT_000bf8f0" (identifier "puVar6") (= "=") (identifier "PTR_DAT_000bf8f0")) (; ";"))) (expression_statement "iVar9 = DAT_000c4994;" (assignment_expression "iVar9 = DAT_000c4994" (identifier "iVar9") (= "=") (identifier "DAT_000c4994")) (; ";")) (if_statement "if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;" (if "if") (parenthesized_expression "((*(byte *)(iVar8 + 0x2c) & 4) == 0)" (( "(") (binary_expression "(*(byte *)(iVar8 + 0x2c) & 4) == 0" (parenthesized_expression "(*(byte *)(iVar8 + 0x2c) & 4)" (( "(") (binary_expression "*(byte *)(iVar8 + 0x2c) & 4" (pointer_expression "*(byte *)(iVar8 + 0x2c)" (* "*") (cast_expression "(byte *)(iVar8 + 0x2c)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x2c)" (( "(") (binary_expression "iVar8 + 0x2c" (identifier "iVar8") (+ "+") (number_literal "0x2c")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00018883;" (goto "goto") (statement_identifier "LAB_00018883") (; ";"))) (labeled_statement "LAB_00018a35:\n        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;" (statement_identifier "LAB_00018a35") (: ":") (if_statement "if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;" (if "if") (parenthesized_expression "((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14)))" (( "(") (binary_expression "(*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))" (parenthesized_expression "(*(int *)(iVar8 + 0x14) != -1)" (( "(") (binary_expression "*(int *)(iVar8 + 0x14) != -1" (pointer_expression "*(int *)(iVar8 + 0x14)" (* "*") (cast_expression "(int *)(iVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")")))) (!= "!=") (number_literal "-1")) () ")")) (&& "&&") (parenthesized_expression "(iVar9 != *(int *)(iVar8 + 0x14))" (( "(") (binary_expression "iVar9 != *(int *)(iVar8 + 0x14)" (identifier "iVar9") (!= "!=") (pointer_expression "*(int *)(iVar8 + 0x14)" (* "*") (cast_expression "(int *)(iVar8 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x14)" (( "(") (binary_expression "iVar8 + 0x14" (identifier "iVar8") (+ "+") (number_literal "0x14")) () ")"))))) () ")"))) () ")")) (goto_statement "goto LAB_00018883;" (goto "goto") (statement_identifier "LAB_00018883") (; ";")))) (} "}")))) (expression_statement "local_50 = local_50 + 1;" (assignment_expression "local_50 = local_50 + 1" (identifier "local_50") (= "=") (binary_expression "local_50 + 1" (identifier "local_50") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "*(int *)(DAT_000c13c0 + iVar7) = iVar8;" (assignment_expression "*(int *)(DAT_000c13c0 + iVar7) = iVar8" (pointer_expression "*(int *)(DAT_000c13c0 + iVar7)" (* "*") (cast_expression "(int *)(DAT_000c13c0 + iVar7)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000c13c0 + iVar7)" (( "(") (binary_expression "DAT_000c13c0 + iVar7" (identifier "DAT_000c13c0") (+ "+") (identifier "iVar7")) () ")")))) (= "=") (identifier "iVar8")) (; ";")) (expression_statement "local_3c = local_3c + *(int *)(iVar8 + 0xc);" (assignment_expression "local_3c = local_3c + *(int *)(iVar8 + 0xc)" (identifier "local_3c") (= "=") (binary_expression "local_3c + *(int *)(iVar8 + 0xc)" (identifier "local_3c") (+ "+") (pointer_expression "*(int *)(iVar8 + 0xc)" (* "*") (cast_expression "(int *)(iVar8 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_50 <= param_1)" (( "(") (binary_expression "local_50 <= param_1" (identifier "local_50") (<= "<=") (identifier "param_1")) () ")")) (; ";")) (} "}")) (else_clause "else {\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }" (else "else") (compound_statement "{\n    local_48 = DAT_000bfbcc;\n    local_20 = iVar10 * DAT_000bfbcc;\n    if (0 < param_1) goto LAB_00018810;\n    local_3c = 0;\n  }" ({ "{") (expression_statement "local_48 = DAT_000bfbcc;" (assignment_expression "local_48 = DAT_000bfbcc" (identifier "local_48") (= "=") (identifier "DAT_000bfbcc")) (; ";")) (expression_statement "local_20 = iVar10 * DAT_000bfbcc;" (assignment_expression "local_20 = iVar10 * DAT_000bfbcc" (identifier "local_20") (= "=") (binary_expression "iVar10 * DAT_000bfbcc" (identifier "iVar10") (* "*") (identifier "DAT_000bfbcc"))) (; ";")) (if_statement "if (0 < param_1) goto LAB_00018810;" (if "if") (parenthesized_expression "(0 < param_1)" (( "(") (binary_expression "0 < param_1" (number_literal "0") (< "<") (identifier "param_1")) () ")")) (goto_statement "goto LAB_00018810;" (goto "goto") (statement_identifier "LAB_00018810") (; ";"))) (expression_statement "local_3c = 0;" (assignment_expression "local_3c = 0" (identifier "local_3c") (= "=") (number_literal "0")) (; ";")) (} "}")))) (expression_statement "local_3c = local_3c + local_20;" (assignment_expression "local_3c = local_3c + local_20" (identifier "local_3c") (= "=") (binary_expression "local_3c + local_20" (identifier "local_3c") (+ "+") (identifier "local_20"))) (; ";")) (expression_statement "__size = local_3c + 1;" (assignment_expression "__size = local_3c + 1" (identifier "__size") (= "=") (binary_expression "local_3c + 1" (identifier "local_3c") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (__size == 0) {\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }" (if "if") (parenthesized_expression "(__size == 0)" (( "(") (binary_expression "__size == 0" (identifier "__size") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000660d0("awk.h",0x7c5);\n    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);\n    local_3c = -1;\n  }" ({ "{") (expression_statement "FUN_000660d0("awk.h",0x7c5);" (call_expression "FUN_000660d0("awk.h",0x7c5)" (identifier "FUN_000660d0") (argument_list "("awk.h",0x7c5)" (( "(") (string_literal ""awk.h"" (" """) (string_content "awk.h") (" """)) (, ",") (number_literal "0x7c5") () ")"))) (; ";")) (expression_statement "FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);" (call_expression "FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199)" (identifier "FUN_00066470") (argument_list "("%s:%d: emalloc called with zero bytes","array.c",0x199)" (( "(") (string_literal ""%s:%d: emalloc called with zero bytes"" (" """) (string_content "%s:%d: emalloc called with zero bytes") (" """)) (, ",") (string_literal ""array.c"" (" """) (string_content "array.c") (" """)) (, ",") (number_literal "0x199") () ")"))) (; ";")) (expression_statement "local_3c = -1;" (assignment_expression "local_3c = -1" (identifier "local_3c") (= "=") (number_literal "-1")) (; ";")) (} "}"))) (labeled_statement "LAB_00018aa1:\n  __dest = malloc(__size);" (statement_identifier "LAB_00018aa1") (: ":") (expression_statement "__dest = malloc(__size);" (assignment_expression "__dest = malloc(__size)" (identifier "__dest") (= "=") (call_expression "malloc(__size)" (identifier "malloc") (argument_list "(__size)" (( "(") (identifier "__size") () ")")))) (; ";"))) (if_statement "if (__dest == (void *)0x0) {\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }" (if "if") (parenthesized_expression "(__dest == (void *)0x0)" (( "(") (binary_expression "__dest == (void *)0x0" (identifier "__dest") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    FUN_000660d0("awk.h",0x7c9);\n    piVar4 = __errno_location();\n    pcVar5 = strerror(*piVar4);\n    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);\n    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);\n  }" ({ "{") (expression_statement "FUN_000660d0("awk.h",0x7c9);" (call_expression "FUN_000660d0("awk.h",0x7c9)" (identifier "FUN_000660d0") (argument_list "("awk.h",0x7c9)" (( "(") (string_literal ""awk.h"" (" """) (string_content "awk.h") (" """)) (, ",") (number_literal "0x7c9") () ")"))) (; ";")) (expression_statement "piVar4 = __errno_location();" (assignment_expression "piVar4 = __errno_location()" (identifier "piVar4") (= "=") (call_expression "__errno_location()" (identifier "__errno_location") (argument_list "()" (( "(") () ")")))) (; ";")) (expression_statement "pcVar5 = strerror(*piVar4);" (assignment_expression "pcVar5 = strerror(*piVar4)" (identifier "pcVar5") (= "=") (call_expression "strerror(*piVar4)" (identifier "strerror") (argument_list "(*piVar4)" (( "(") (pointer_expression "*piVar4" (* "*") (identifier "piVar4")) () ")")))) (; ";")) (expression_statement "uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);" (assignment_expression "uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" (identifier "uVar2") (= "=") (call_expression "dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" (identifier "dcgettext") (argument_list "(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5)" (( "(") (number_literal "0") (, ",") (string_literal ""%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s"" (" """) (string_content "%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);" (call_expression "FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5)" (identifier "FUN_00066470") (argument_list "(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5)" (( "(") (identifier "uVar2") (, ",") (string_literal ""array.c"" (" """) (string_content "array.c") (" """)) (, ",") (number_literal "0x199") (, ",") (string_literal ""concat_exp"" (" """) (string_content "concat_exp") (" """)) (, ",") (pointer_expression "&DAT_0009478d" (& "&") (identifier "DAT_0009478d")) (, ",") (identifier "__size") (, ",") (identifier "pcVar5") () ")"))) (; ";")) (} "}"))) (expression_statement "iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);" (assignment_expression "iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4)" (identifier "iVar8") (= "=") (pointer_expression "*(int *)(DAT_000c13c0 + param_1 * 4)" (* "*") (cast_expression "(int *)(DAT_000c13c0 + param_1 * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000c13c0 + param_1 * 4)" (( "(") (binary_expression "DAT_000c13c0 + param_1 * 4" (identifier "DAT_000c13c0") (+ "+") (binary_expression "param_1 * 4" (identifier "param_1") (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));" (call_expression "memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc))" (identifier "memcpy") (argument_list "(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc))" (( "(") (identifier "__dest") (, ",") (pointer_expression "*(void **)(iVar8 + 8)" (* "*") (cast_expression "(void **)(iVar8 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar8 + 8)" (( "(") (binary_expression "iVar8 + 8" (identifier "iVar8") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(size_t *)(iVar8 + 0xc)" (* "*") (cast_expression "(size_t *)(iVar8 + 0xc)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "__dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));" (assignment_expression "__dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc))" (identifier "__dest_00") (= "=") (cast_expression "(undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc))" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)__dest + *(int *)(iVar8 + 0xc))" (( "(") (binary_expression "(int)__dest + *(int *)(iVar8 + 0xc)" (cast_expression "(int)__dest" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "__dest")) (+ "+") (pointer_expression "*(int *)(iVar8 + 0xc)" (* "*") (cast_expression "(int *)(iVar8 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0xc)" (( "(") (binary_expression "iVar8 + 0xc" (identifier "iVar8") (+ "+") (number_literal "0xc")) () ")"))))) () ")")))) (; ";")) (expression_statement "iVar7 = *(int *)(iVar8 + 0x10) + -1;" (assignment_expression "iVar7 = *(int *)(iVar8 + 0x10) + -1" (identifier "iVar7") (= "=") (binary_expression "*(int *)(iVar8 + 0x10) + -1" (pointer_expression "*(int *)(iVar8 + 0x10)" (* "*") (cast_expression "(int *)(iVar8 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(iVar8 + 0x10) = iVar7;" (assignment_expression "*(int *)(iVar8 + 0x10) = iVar7" (pointer_expression "*(int *)(iVar8 + 0x10)" (* "*") (cast_expression "(int *)(iVar8 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar8 + 0x10)" (( "(") (binary_expression "iVar8 + 0x10" (identifier "iVar8") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (if_statement "if (iVar7 == 0) {\n    FUN_000668b0(iVar8);\n  }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n    FUN_000668b0(iVar8);\n  }" ({ "{") (expression_statement "FUN_000668b0(iVar8);" (call_expression "FUN_000668b0(iVar8)" (identifier "FUN_000668b0") (argument_list "(iVar8)" (( "(") (identifier "iVar8") () ")"))) (; ";")) (} "}"))) (if_statement "if (0 < iVar10) {\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }" (if "if") (parenthesized_expression "(0 < iVar10)" (( "(") (binary_expression "0 < iVar10" (number_literal "0") (< "<") (identifier "iVar10")) () ")")) (compound_statement "{\n    iVar8 = 0;\n    do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);\n  }" ({ "{") (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" (identifier "iVar8") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    } while (iVar10 != iVar8);" (do "do") (compound_statement "{\n      while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }\n      iVar8 = iVar8 + 1;\n      FUN_000668b0(iVar7);\n    }" ({ "{") (while_statement "while( true ) {\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n        if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }\n        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);\n        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));\n        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);\n        iVar9 = *(int *)(iVar7 + 0x10) + -1;\n        *(int *)(iVar7 + 0x10) = iVar9;\n        if (iVar9 == 0) break;\n        iVar8 = iVar8 + 1;\n        if (iVar10 == iVar8) goto LAB_00018b85;\n      }" ({ "{") (if_statement "if (local_48 == 1) {\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }\n        else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }" (if "if") (parenthesized_expression "(local_48 == 1)" (( "(") (binary_expression "local_48 == 1" (identifier "local_48") (== "==") (number_literal "1")) () ")")) (compound_statement "{\n          *__dest_00 = *DAT_000bfbc8;\n          __dest_01 = __dest_00 + 1;\n        }" ({ "{") (expression_statement "*__dest_00 = *DAT_000bfbc8;" (assignment_expression "*__dest_00 = *DAT_000bfbc8" (pointer_expression "*__dest_00" (* "*") (identifier "__dest_00")) (= "=") (pointer_expression "*DAT_000bfbc8" (* "*") (identifier "DAT_000bfbc8"))) (; ";")) (expression_statement "__dest_01 = __dest_00 + 1;" (assignment_expression "__dest_01 = __dest_00 + 1" (identifier "__dest_01") (= "=") (binary_expression "__dest_00 + 1" (identifier "__dest_00") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (else_clause "else {\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }" (else "else") (compound_statement "{\n          __dest_01 = __dest_00;\n          if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }\n        }" ({ "{") (expression_statement "__dest_01 = __dest_00;" (assignment_expression "__dest_01 = __dest_00" (identifier "__dest_01") (= "=") (identifier "__dest_00")) (; ";")) (if_statement "if (local_48 != 0) {\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }" (if "if") (parenthesized_expression "(local_48 != 0)" (( "(") (binary_expression "local_48 != 0" (identifier "local_48") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            __dest_01 = __dest_00 + local_48;\n            memcpy(__dest_00,DAT_000bfbc8,local_48);\n          }" ({ "{") (expression_statement "__dest_01 = __dest_00 + local_48;" (assignment_expression "__dest_01 = __dest_00 + local_48" (identifier "__dest_01") (= "=") (binary_expression "__dest_00 + local_48" (identifier "__dest_00") (+ "+") (identifier "local_48"))) (; ";")) (expression_statement "memcpy(__dest_00,DAT_000bfbc8,local_48);" (call_expression "memcpy(__dest_00,DAT_000bfbc8,local_48)" (identifier "memcpy") (argument_list "(__dest_00,DAT_000bfbc8,local_48)" (( "(") (identifier "__dest_00") (, ",") (identifier "DAT_000bfbc8") (, ",") (identifier "local_48") () ")"))) (; ";")) (} "}"))) (} "}")))) (expression_statement "iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);" (assignment_expression "iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" (identifier "iVar7") (= "=") (pointer_expression "*(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" (* "*") (cast_expression "(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4)" (( "(") (binary_expression "DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4" (identifier "DAT_000c13c0") (+ "+") (binary_expression "((param_1 + 0x3fffffff) - iVar8) * 4" (parenthesized_expression "((param_1 + 0x3fffffff) - iVar8)" (( "(") (binary_expression "(param_1 + 0x3fffffff) - iVar8" (parenthesized_expression "(param_1 + 0x3fffffff)" (( "(") (binary_expression "param_1 + 0x3fffffff" (identifier "param_1") (+ "+") (number_literal "0x3fffffff")) () ")")) (- "-") (identifier "iVar8")) () ")")) (* "*") (number_literal "4"))) () ")"))))) (; ";")) (expression_statement "memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));" (call_expression "memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc))" (identifier "memcpy") (argument_list "(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc))" (( "(") (identifier "__dest_01") (, ",") (pointer_expression "*(void **)(iVar7 + 8)" (* "*") (cast_expression "(void **)(iVar7 + 8)" (( "(") (type_descriptor "void **" (primitive_type "void") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(iVar7 + 8)" (( "(") (binary_expression "iVar7 + 8" (identifier "iVar7") (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(size_t *)(iVar7 + 0xc)" (* "*") (cast_expression "(size_t *)(iVar7 + 0xc)" (( "(") (type_descriptor "size_t *" (primitive_type "size_t") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")")))) () ")"))) (; ";")) (expression_statement "__dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);" (assignment_expression "__dest_00 = __dest_01 + *(int *)(iVar7 + 0xc)" (identifier "__dest_00") (= "=") (binary_expression "__dest_01 + *(int *)(iVar7 + 0xc)" (identifier "__dest_01") (+ "+") (pointer_expression "*(int *)(iVar7 + 0xc)" (* "*") (cast_expression "(int *)(iVar7 + 0xc)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0xc)" (( "(") (binary_expression "iVar7 + 0xc" (identifier "iVar7") (+ "+") (number_literal "0xc")) () ")")))))) (; ";")) (expression_statement "iVar9 = *(int *)(iVar7 + 0x10) + -1;" (assignment_expression "iVar9 = *(int *)(iVar7 + 0x10) + -1" (identifier "iVar9") (= "=") (binary_expression "*(int *)(iVar7 + 0x10) + -1" (pointer_expression "*(int *)(iVar7 + 0x10)" (* "*") (cast_expression "(int *)(iVar7 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")")))) (+ "+") (number_literal "-1"))) (; ";")) (expression_statement "*(int *)(iVar7 + 0x10) = iVar9;" (assignment_expression "*(int *)(iVar7 + 0x10) = iVar9" (pointer_expression "*(int *)(iVar7 + 0x10)" (* "*") (cast_expression "(int *)(iVar7 + 0x10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar7 + 0x10)" (( "(") (binary_expression "iVar7 + 0x10" (identifier "iVar7") (+ "+") (number_literal "0x10")) () ")")))) (= "=") (identifier "iVar9")) (; ";")) (if_statement "if (iVar9 == 0) break;" (if "if") (parenthesized_expression "(iVar9 == 0)" (( "(") (binary_expression "iVar9 == 0" (identifier "iVar9") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (iVar10 == iVar8) goto LAB_00018b85;" (if "if") (parenthesized_expression "(iVar10 == iVar8)" (( "(") (binary_expression "iVar10 == iVar8" (identifier "iVar10") (== "==") (identifier "iVar8")) () ")")) (goto_statement "goto LAB_00018b85;" (goto "goto") (statement_identifier "LAB_00018b85") (; ";"))) (} "}"))) (expression_statement "iVar8 = iVar8 + 1;" (assignment_expression "iVar8 = iVar8 + 1" (identifier "iVar8") (= "=") (binary_expression "iVar8 + 1" (identifier "iVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "FUN_000668b0(iVar7);" (call_expression "FUN_000668b0(iVar7)" (identifier "FUN_000668b0") (argument_list "(iVar7)" (( "(") (identifier "iVar7") () ")"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(iVar10 != iVar8)" (( "(") (binary_expression "iVar10 != iVar8" (identifier "iVar10") (!= "!=") (identifier "iVar8")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00018b85:\n  iVar10 = FUN_00067f10(__dest,local_3c,2);" (statement_identifier "LAB_00018b85") (: ":") (expression_statement "iVar10 = FUN_00067f10(__dest,local_3c,2);" (assignment_expression "iVar10 = FUN_00067f10(__dest,local_3c,2)" (identifier "iVar10") (= "=") (call_expression "FUN_00067f10(__dest,local_3c,2)" (identifier "FUN_00067f10") (argument_list "(__dest,local_3c,2)" (( "(") (identifier "__dest") (, ",") (identifier "local_3c") (, ",") (number_literal "2") () ")")))) (; ";"))) (return_statement "return iVar10;" (return "return") (identifier "iVar10") (; ";")) (} "}")))

/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */
/* WARNING: Unknown calling convention */

type_1 * function_1(int var_1,type_2 do_subsep)

{
  char **ppcVar1;
  type_1 *tmp;
  size_t var_15;
  char *var_20;
  char *var_24;
  char *var_26;
  type_1 *pNVar6;
  int *piVar7;
  size_t var_8;
  int var_13;
  int var_12;
  size_t var_18;
  int var_9;
  int var_11;
  size_t var_25;
  size_t var_16;
  int var_17;
  
  var_9 = CONVFMTidx;
  var_20 = CONVFMT;
  if (var_1 == 1) {
    pNVar6 = var_2->rptr;
    var_2 = var_2 + -1;
    if (pNVar6->type == var_3) {
      var_4("awk.h",0x72b);
      var_24 = var_5(pNVar6);
      var_26 = (char *)var_6(0,"attempt to use array `%s\' in a scalar context",5);
      var_7(var_26,var_24);
    }
    if ((pNVar6->flags & 4) != 0) {
      var_8 = (pNVar6->sub).nodep.reserved;
      if (var_8 == 0xffffffff) {
        return pNVar6;
      }
      if (var_9 == var_8) {
        return pNVar6;
      }
    }
    pNVar6 = (*format_val)(var_20,var_9,pNVar6);
    return pNVar6;
  }
  var_9 = var_1 + -1;
  if (do_subsep) {
    var_25 = var_10;
    var_17 = var_9 * var_10;
    if (0 < var_1) goto LAB_00018810;
    var_16 = 0;
  }
  else {
    var_17 = 0;
    var_25 = 0;
    if (var_1 < 1) {
      var_16 = 0;
      var_18 = 1;
      goto LAB_00018aa1;
    }
LAB_00018810:
    var_11 = 1;
    var_16 = 0;
    do {
      pNVar6 = var_2->rptr;
      if (pNVar6->type == var_3) {
        var_13 = (var_11 + -1) * 4;
        var_12 = var_11;
        while (var_12 = var_12 + -1, 0 < var_12) {
          tmp = *(type_1 **)((int)args_array + var_13);
          ppcVar1 = &(tmp->sub).nodep.name;
          *ppcVar1 = *ppcVar1 + -1;
          if (*ppcVar1 == (char *)0x0) {
            var_14(tmp);
          }
          var_13 = var_13 + -4;
        }
        var_12 = 1;
        if (0 < var_11) {
          var_12 = var_11;
        }
        var_11 = var_11 + -1 + (1 - var_12);
        var_4("array.c",0x191);
        var_20 = var_5(pNVar6);
        var_24 = (char *)var_6(0,"attempt to use array `%s\' in a scalar context",5);
        var_7(var_24,var_20);
        var_8 = CONVFMTidx;
        var_20 = CONVFMT;
        pNVar6 = var_2->rptr;
        var_2 = var_2 + -1;
        if (pNVar6->type != var_3) goto LAB_00018879;
        var_4("awk.h",0x72b);
        var_24 = var_5(pNVar6);
        var_26 = (char *)var_6(0,"attempt to use array `%s\' in a scalar context",5);
        var_7(var_26,var_24);
        if ((pNVar6->flags & 4) != 0) goto LAB_00018a35;
LAB_00018883:
        pNVar6 = (*format_val)(var_20,var_8,pNVar6);
      }
      else {
        var_2 = var_2 + -1;
        var_13 = var_11 * 4;
LAB_00018879:
        var_20 = CONVFMT;
        var_8 = CONVFMTidx;
        if ((pNVar6->flags & 4) == 0) goto LAB_00018883;
LAB_00018a35:
        var_15 = (pNVar6->sub).nodep.reserved;
        if ((var_15 != 0xffffffff) && (var_8 != var_15)) goto LAB_00018883;
      }
      var_11 = var_11 + 1;
      *(type_1 **)((int)args_array + var_13) = pNVar6;
      var_16 = var_16 + (pNVar6->sub).val.slen;
    } while (var_11 <= var_1);
  }
  var_16 = var_16 + var_17;
  var_18 = var_16 + 1;
  if (var_18 == 0) {
    var_4("awk.h",0x7c5);
    var_7("%s:%d: emalloc called with zero bytes","array.c",0x199);
    var_16 = 0xffffffff;
  }
LAB_00018aa1:
  var_20 = (char *)var_19(var_18);
  if (var_20 == (char *)0x0) {
    var_4("awk.h",0x7c9);
    piVar7 = var_21();
    var_24 = var_22(*piVar7);
    var_26 = (char *)var_6(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);
    var_7(var_26,"array.c",0x199,"concat_exp",&DAT_0009478d,var_18,var_24);
  }
  pNVar6 = args_array[var_1];
  var_23(var_20,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);
  var_26 = var_20 + (pNVar6->sub).val.slen;
  var_24 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');
  (pNVar6->sub).nodep.name = var_24;
  if (var_24 == (char *)0x0) {
    var_14(pNVar6);
  }
  if (0 < var_9) {
    var_13 = 0;
    do {
      while( true ) {
        if (var_25 == 1) {
          *var_26 = *SUBSEP;
          var_24 = var_26 + 1;
        }
        else {
          var_24 = var_26;
          if (var_25 != 0) {
            var_24 = var_26 + var_25;
            var_23(var_26,SUBSEP,var_25);
          }
        }
        pNVar6 = args_array[(var_1 + 0x3fffffff) - var_13];
        var_23(var_24,(pNVar6->sub).val.sp,(pNVar6->sub).val.slen);
        var_26 = var_24 + (pNVar6->sub).val.slen;
        var_24 = (char *)((pNVar6->sub).val.sref + L'\xffffffff');
        (pNVar6->sub).nodep.name = var_24;
        if (var_24 == (char *)0x0) break;
        var_13 = var_13 + 1;
        if (var_9 == var_13) goto LAB_00018b85;
      }
      var_13 = var_13 + 1;
      var_14(pNVar6);
    } while (var_9 != var_13);
  }
LAB_00018b85:
  pNVar6 = var_27(var_20,var_16,2);
  return pNVar6;
}


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

/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */

int MASKED(int param_1,char param_2)

{
  int iVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  void *__dest;
  int *piVar4;
  char *pcVar5;
  undefined *puVar6;
  int iVar7;
  int iVar8;
  int iVar9;
  size_t __size;
  int iVar10;
  undefined1 *__dest_00;
  undefined1 *__dest_01;
  int local_50;
  size_t local_48;
  int local_3c;
  int local_20;
  
  iVar10 = DAT_000c4994;
  puVar6 = PTR_DAT_000bf8f0;
  if (param_1 == 1) {
    iVar8 = *DAT_000c13c8;
    DAT_000c13c8 = DAT_000c13c8 + -1;
    if (*(int *)(iVar8 + 0x28) == 5) {
      FUN_000660d0("awk.h",0x72b);
      uVar2 = FUN_00018020(iVar8);
      uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
      FUN_00066470(uVar3,uVar2);
    }
    if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) {
      if (*(int *)(iVar8 + 0x14) == -1) {
        return iVar8;
      }
      if (iVar10 == *(int *)(iVar8 + 0x14)) {
        return iVar8;
      }
    }
    iVar10 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar10,iVar8);
    return iVar10;
  }
  iVar10 = param_1 + -1;
  if (param_2 == '\0') {
    local_20 = 0;
    local_48 = 0;
    if (param_1 < 1) {
      local_3c = 0;
      __size = 1;
      goto LAB_00018aa1;
    }
LAB_00018810:
    local_50 = 1;
    local_3c = 0;
    do {
      iVar8 = *DAT_000c13c8;
      if (*(int *)(iVar8 + 0x28) == 5) {
        iVar7 = (local_50 + -1) * 4;
        iVar9 = local_50;
        while (iVar9 = iVar9 + -1, 0 < iVar9) {
          iVar1 = *(int *)(DAT_000c13c0 + iVar7);
          piVar4 = (int *)(iVar1 + 0x10);
          *piVar4 = *piVar4 + -1;
          if (*piVar4 == 0) {
            FUN_000668b0(iVar1);
          }
          iVar7 = iVar7 + -4;
        }
        iVar9 = 1;
        if (0 < local_50) {
          iVar9 = local_50;
        }
        local_50 = local_50 + -1 + (1 - iVar9);
        FUN_000660d0("array.c",0x191);
        uVar2 = FUN_00018020(iVar8);
        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
        FUN_00066470(uVar3,uVar2);
        iVar9 = DAT_000c4994;
        puVar6 = PTR_DAT_000bf8f0;
        iVar8 = *DAT_000c13c8;
        DAT_000c13c8 = DAT_000c13c8 + -1;
        if (*(int *)(iVar8 + 0x28) != 5) goto LAB_00018879;
        FUN_000660d0("awk.h",0x72b);
        uVar2 = FUN_00018020(iVar8);
        uVar3 = dcgettext(0,"attempt to use array `%s\' in a scalar context",5);
        FUN_00066470(uVar3,uVar2);
        if ((*(byte *)(iVar8 + 0x2c) & 4) != 0) goto LAB_00018a35;
LAB_00018883:
        iVar8 = (*(code *)PTR_FUN_000bf944)(puVar6,iVar9,iVar8);
      }
      else {
        DAT_000c13c8 = DAT_000c13c8 + -1;
        iVar7 = local_50 * 4;
LAB_00018879:
        puVar6 = PTR_DAT_000bf8f0;
        iVar9 = DAT_000c4994;
        if ((*(byte *)(iVar8 + 0x2c) & 4) == 0) goto LAB_00018883;
LAB_00018a35:
        if ((*(int *)(iVar8 + 0x14) != -1) && (iVar9 != *(int *)(iVar8 + 0x14))) goto LAB_00018883;
      }
      local_50 = local_50 + 1;
      *(int *)(DAT_000c13c0 + iVar7) = iVar8;
      local_3c = local_3c + *(int *)(iVar8 + 0xc);
    } while (local_50 <= param_1);
  }
  else {
    local_48 = DAT_000bfbcc;
    local_20 = iVar10 * DAT_000bfbcc;
    if (0 < param_1) goto LAB_00018810;
    local_3c = 0;
  }
  local_3c = local_3c + local_20;
  __size = local_3c + 1;
  if (__size == 0) {
    FUN_000660d0("awk.h",0x7c5);
    FUN_00066470("%s:%d: emalloc called with zero bytes","array.c",0x199);
    local_3c = -1;
  }
LAB_00018aa1:
  __dest = malloc(__size);
  if (__dest == (void *)0x0) {
    FUN_000660d0("awk.h",0x7c9);
    piVar4 = __errno_location();
    pcVar5 = strerror(*piVar4);
    uVar2 = dcgettext(0,"%s:%d:%s: %s: cannot allocate %ld bytes of memory: %s",5);
    FUN_00066470(uVar2,"array.c",0x199,"concat_exp",&DAT_0009478d,__size,pcVar5);
  }
  iVar8 = *(int *)(DAT_000c13c0 + param_1 * 4);
  memcpy(__dest,*(void **)(iVar8 + 8),*(size_t *)(iVar8 + 0xc));
  __dest_00 = (undefined1 *)((int)__dest + *(int *)(iVar8 + 0xc));
  iVar7 = *(int *)(iVar8 + 0x10) + -1;
  *(int *)(iVar8 + 0x10) = iVar7;
  if (iVar7 == 0) {
    FUN_000668b0(iVar8);
  }
  if (0 < iVar10) {
    iVar8 = 0;
    do {
      while( true ) {
        if (local_48 == 1) {
          *__dest_00 = *DAT_000bfbc8;
          __dest_01 = __dest_00 + 1;
        }
        else {
          __dest_01 = __dest_00;
          if (local_48 != 0) {
            __dest_01 = __dest_00 + local_48;
            memcpy(__dest_00,DAT_000bfbc8,local_48);
          }
        }
        iVar7 = *(int *)(DAT_000c13c0 + ((param_1 + 0x3fffffff) - iVar8) * 4);
        memcpy(__dest_01,*(void **)(iVar7 + 8),*(size_t *)(iVar7 + 0xc));
        __dest_00 = __dest_01 + *(int *)(iVar7 + 0xc);
        iVar9 = *(int *)(iVar7 + 0x10) + -1;
        *(int *)(iVar7 + 0x10) = iVar9;
        if (iVar9 == 0) break;
        iVar8 = iVar8 + 1;
        if (iVar10 == iVar8) goto LAB_00018b85;
      }
      iVar8 = iVar8 + 1;
      FUN_000668b0(iVar7);
    } while (iVar10 != iVar8);
  }
LAB_00018b85:
  iVar10 = FUN_00067f10(__dest,local_3c,2);
  return iVar10;
}

