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

char * get_archive_member_name(archive_info *arch,archive_info *nested_arch)

{
  char cVar1;
  undefined4 uVar2;
  undefined4 uVar3;
  uint uVar4;
  int iVar5;
  char *pcVar6;
  ulong uVar7;
  ulong uVar8;
  uint uVar9;
  char *member_file_name;
  int iVar10;
  char *endp;
  undefined4 uStack_14;
  
  uStack_14 = 0x6777b;
  iVar10 = 0;
  if ((arch->arhdr).ar_name[0] == '/') {
    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {
      pcVar6 = "Archive member uses long names, but no longname table found\n";
LAB_000677e9:
      pcVar6 = (char *)dcgettext(0,pcVar6,5);
      error(pcVar6);
      return (char *)0x0;
    }
    cVar1 = (arch->arhdr).ar_fmag[0];
    arch->nested_member_origin = 0;
    (arch->arhdr).ar_fmag[0] = '\0';
    uVar7 = strtoul((arch->arhdr).ar_name + 1,&endp,10);
    if (((arch->is_thin_archive != 0) && (endp != (char *)0x0)) && (*endp == ':')) {
      uVar8 = strtoul(endp + 1,(char **)0x0,10);
      arch->nested_member_origin = uVar8;
    }
    uVar4 = arch->longnames_size;
    (arch->arhdr).ar_fmag[0] = cVar1;
    if (uVar4 < uVar7) {
      pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);
      error(pcVar6,uVar7);
      pcVar6 = (char *)0x0;
    }
    else {
      pcVar6 = arch->longnames;
      uVar9 = uVar7;
      if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {
        do {
          uVar8 = uVar8 + 1;
          uVar9 = uVar4;
          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;
        } while (pcVar6[uVar8] != '\0');
      }
      if (uVar9 != 0) {
        if (pcVar6[uVar9 - 1] == '/') {
          uVar9 = uVar9 - 1;
        }
        if (uVar4 < uVar9) {
          uVar9 = uVar4;
        }
      }
      pcVar6[uVar9] = '\0';
      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {
        pcVar6 = arch->longnames + uVar7;
      }
      else {
        if (uVar9 <= uVar7) {
          pcVar6 = "Invalid Thin archive member name\n";
          goto LAB_000677e9;
        }
        member_file_name =
             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);
        if (((member_file_name == (char *)0x0) ||
            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||
           (pcVar6 = get_archive_member_name_at
                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),
           pcVar6 == (char *)0x0)) {
          free(member_file_name);
          pcVar6 = arch->longnames + uVar7;
        }
        else {
          free(member_file_name);
        }
      }
    }
  }
  else {
    while (iVar5 = iVar10, iVar5 + 1 != 0x10) {
      iVar10 = iVar5 + 1;
      if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {
        (arch->arhdr).ar_name[iVar5 + 1] = '\0';
        return (arch->arhdr).ar_name;
      }
    }
    pcVar6 = (char *)xmalloc(0x11);
    uVar2 = *(undefined4 *)(arch->arhdr).ar_name;
    uVar3 = *(undefined4 *)((arch->arhdr).ar_name + 0xc);
    pcVar6[0x10] = '\0';
    *(undefined4 *)pcVar6 = uVar2;
    uVar2 = *(undefined4 *)((arch->arhdr).ar_name + 4);
    *(undefined4 *)(pcVar6 + 0xc) = uVar3;
    *(undefined4 *)(pcVar6 + 4) = uVar2;
    *(undefined4 *)(pcVar6 + 8) = *(undefined4 *)((arch->arhdr).ar_name + 8);
  }
  return pcVar6;
}



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

undefined4 * FUN_00067770(undefined4 *param_1,undefined4 param_2)

{
  undefined1 uVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  char *pcVar5;
  undefined4 uVar6;
  ulong uVar7;
  ulong uVar8;
  uint uVar9;
  void *__ptr;
  int iVar10;
  undefined4 *puVar11;
  char *local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x6777b;
  iVar10 = 0;
  if (*(char *)(param_1 + 0xd) == '/') {
    if ((param_1[7] == 0) || (param_1[8] == 0)) {
      pcVar5 = "Archive member uses long names, but no longname table found\n";
LAB_000677e9:
      uVar6 = dcgettext(0,pcVar5,5);
      error(uVar6);
      return (undefined4 *)0x0;
    }
    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);
    param_1[9] = 0;
    *(undefined1 *)((int)param_1 + 0x6e) = 0;
    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);
    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {
      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);
      param_1[9] = uVar8;
    }
    uVar3 = param_1[8];
    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;
    if (uVar3 < uVar7) {
      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);
      error(uVar6,uVar7);
      puVar11 = (undefined4 *)0x0;
    }
    else {
      iVar10 = param_1[7];
      uVar9 = uVar7;
      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&
         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {
        do {
          uVar8 = uVar8 + 1;
          uVar9 = uVar3;
          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;
        } while (*(char *)(iVar10 + uVar8) != '\0');
      }
      if (uVar9 != 0) {
        if (*(char *)(iVar10 + -1 + uVar9) == '/') {
          uVar9 = uVar9 - 1;
        }
        if (uVar3 < uVar9) {
          uVar9 = uVar3;
        }
      }
      *(undefined1 *)(iVar10 + uVar9) = 0;
      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {
        puVar11 = (undefined4 *)(param_1[7] + uVar7);
      }
      else {
        if (uVar9 <= uVar7) {
          pcVar5 = "Invalid Thin archive member name\n";
          goto LAB_000677e9;
        }
        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);
        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||
           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0
           )) {
          free(__ptr);
          puVar11 = (undefined4 *)(param_1[7] + uVar7);
        }
        else {
          free(__ptr);
        }
      }
    }
  }
  else {
    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {
      iVar10 = iVar4 + 1;
      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {
        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;
        return param_1 + 0xd;
      }
    }
    puVar11 = (undefined4 *)FUN_0006b190(0x11);
    uVar6 = param_1[0xd];
    uVar2 = param_1[0x10];
    *(undefined1 *)(puVar11 + 4) = 0;
    *puVar11 = uVar6;
    uVar6 = param_1[0xe];
    puVar11[3] = uVar2;
    puVar11[1] = uVar6;
    puVar11[2] = param_1[0xf];
  }
  return puVar11;
}


PUSH EBP
XOR EAX,EAX
PUSH EDI
PUSH ESI
PUSH EBX
CALL 0x00013f70
ADD EBX,0x4c885
SUB ESP,0x2c
MOV ESI,dword ptr [ESP + 0x40]
CMP byte ptr [ESI + 0x34],0x2f
JNZ 0x00067797
JMP 0x000677d0
CMP byte ptr [ESI + EAX*0x1 + 0x34],0x2f
JZ 0x00067810
ADD EAX,0x1
CMP EAX,0x10
JNZ 0x00067790
SUB ESP,0xc
PUSH 0x11
CALL 0x0006b190
MOV ECX,dword ptr [ESI + 0x34]
MOV EDX,dword ptr [ESI + 0x40]
ADD ESP,0x10
MOV byte ptr [EAX + 0x10],0x0
MOV dword ptr [EAX],ECX
MOV ECX,dword ptr [ESI + 0x38]
MOV dword ptr [EAX + 0xc],EDX
MOV dword ptr [EAX + 0x4],ECX
MOV ECX,dword ptr [ESI + 0x3c]
MOV dword ptr [EAX + 0x8],ECX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV EAX,dword ptr [ESI + 0x1c]
TEST EAX,EAX
JZ 0x000677de
MOV EAX,dword ptr [ESI + 0x20]
TEST EAX,EAX
JNZ 0x00067820
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe2268]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000130f0
MOV dword ptr [ESP],EAX
CALL 0x00066870
ADD ESP,0x10
XOR EAX,EAX
ADD ESP,0x2c
POP EBX
POP ESI
POP EDI
POP EBP
RET
MOV byte ptr [ESI + EAX*0x1 + 0x34],0x0
ADD ESP,0x2c
LEA EAX,[ESI + 0x34]
POP EBX
POP ESI
POP EDI
POP EBP
RET
SUB ESP,0x4
MOVZX EDI,byte ptr [ESI + 0x6e]
MOV dword ptr [ESI + 0x24],0x0
MOV byte ptr [ESI + 0x6e],0x0
PUSH 0xa
LEA EAX,[ESP + 0x24]
PUSH EAX
LEA EAX,[ESI + 0x35]
PUSH EAX
CALL 0x00013230
ADD ESP,0x10
MOV EBP,EAX
MOV EAX,dword ptr [ESI + 0x2c]
TEST EAX,EAX
JZ 0x0006785f
MOV EAX,dword ptr [ESP + 0x1c]
TEST EAX,EAX
JZ 0x0006785f
CMP byte ptr [EAX],0x3a
JZ 0x0006795a
MOV ECX,dword ptr [ESI + 0x20]
MOV EAX,EDI
MOV byte ptr [ESI + 0x6e],AL
CMP EBP,ECX
JA 0x00067975
MOV EDI,dword ptr [ESI + 0x1c]
JNC 0x000679b1
MOVZX EDX,byte ptr [EDI + EBP*0x1]
TEST DL,DL
JZ 0x000679b1
MOV EAX,EBP
CMP DL,0xa
JNZ 0x0006789d
JMP 0x000679b1
MOVZX EDX,byte ptr [EDI + EAX*0x1]
CMP DL,0xa
JZ 0x000678a6
TEST DL,DL
JZ 0x000678a6
ADD EAX,0x1
CMP ECX,EAX
JNZ 0x00067890
MOV EAX,ECX
TEST EAX,EAX
JZ 0x000678ba
CMP byte ptr [EDI + EAX*0x1 + -0x1],0x2f
LEA EDX,[EAX + -0x1]
CMOVZ EAX,EDX
CMP EAX,ECX
CMOVA EAX,ECX
MOV byte ptr [EDI + EAX*0x1],0x0
MOV ECX,dword ptr [ESI + 0x2c]
TEST ECX,ECX
JZ 0x00067940
MOV EDX,dword ptr [ESI + 0x24]
TEST EDX,EDX
JZ 0x00067940
CMP EBP,EAX
JNC 0x0006794a
SUB ESP,0x4
SUB EAX,EBP
PUSH EAX
MOV EAX,dword ptr [ESI + 0x1c]
ADD EAX,EBP
PUSH EAX
PUSH dword ptr [ESI]
CALL 0x00067180
ADD ESP,0x10
MOV EDI,EAX
TEST EAX,EAX
JZ 0x0006799b
SUB ESP,0x8
PUSH EAX
PUSH dword ptr [ESP + 0x50]
CALL 0x00067640
ADD ESP,0x10
TEST EAX,EAX
JNZ 0x0006799b
SUB ESP,0x4
PUSH 0x0
PUSH dword ptr [ESI + 0x24]
PUSH dword ptr [ESP + 0x50]
CALL 0x000676c0
ADD ESP,0x10
TEST EAX,EAX
MOV dword ptr [ESP + 0xc],EAX
JZ 0x0006799b
SUB ESP,0xc
PUSH EDI
CALL 0x000130a0
ADD ESP,0x10
MOV EAX,dword ptr [ESP + 0xc]
JMP 0x000677c7
MOV EAX,dword ptr [ESI + 0x1c]
ADD EAX,EBP
JMP 0x000677c7
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe22e4]
PUSH 0x5
JMP 0x000677e9
SUB ESP,0x4
ADD EAX,0x1
PUSH 0xa
PUSH 0x0
PUSH EAX
CALL 0x00013230
ADD ESP,0x10
MOV dword ptr [ESI + 0x24],EAX
JMP 0x0006785f
SUB ESP,0x4
LEA EAX,[EBX + 0xfffe22a8]
PUSH 0x5
PUSH EAX
PUSH 0x0
CALL 0x000130f0
POP EBX
POP ESI
PUSH EBP
PUSH EAX
CALL 0x00066870
ADD ESP,0x10
XOR EAX,EAX
JMP 0x000677c7
SUB ESP,0xc
PUSH EDI
CALL 0x000130a0
MOV EAX,dword ptr [ESI + 0x1c]
ADD ESP,0x10
ADD EAX,EBP
JMP 0x000677c7
MOV EAX,EBP
JMP 0x000678a6
(translation_unit "/* WARNING: Function: __i686.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n\nundefined4 * FUN_00067770(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  void *__ptr;\n  int iVar10;\n  undefined4 *puVar11;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }\n  return puVar11;\n}\n\n" comment (function_definition "undefined4 * FUN_00067770(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  void *__ptr;\n  int iVar10;\n  undefined4 *puVar11;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }\n  return puVar11;\n}" type_identifier (pointer_declarator "* FUN_00067770(undefined4 *param_1,undefined4 param_2)" * (function_declarator "FUN_00067770(undefined4 *param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) )))) (compound_statement "{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  void *__ptr;\n  int iVar10;\n  undefined4 *puVar11;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }\n  return puVar11;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "char *local_20 [3];" primitive_type (pointer_declarator "*local_20 [3]" * (array_declarator "local_20 [3]" identifier [ number_literal ])) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x6777b;" (assignment_expression "uStack_14 = 0x6777b" identifier = number_literal) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0xd) == '/')" ( (binary_expression "*(char *)(param_1 + 0xd) == '/'" (pointer_expression "*(char *)(param_1 + 0xd)" * (cast_expression "(char *)(param_1 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }" { (if_statement "if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }" if (parenthesized_expression "((param_1[7] == 0) || (param_1[8] == 0))" ( (binary_expression "(param_1[7] == 0) || (param_1[8] == 0)" (parenthesized_expression "(param_1[7] == 0)" ( (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(param_1[8] == 0)" ( (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }" { (expression_statement "pcVar5 = "Archive member uses long names, but no longname table found\n";" (assignment_expression "pcVar5 = "Archive member uses long names, but no longname table found\n"" identifier = (string_literal ""Archive member uses long names, but no longname table found\n"" " string_content escape_sequence ")) ;) (labeled_statement "LAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);" statement_identifier : (expression_statement "uVar6 = dcgettext(0,pcVar5,5);" (assignment_expression "uVar6 = dcgettext(0,pcVar5,5)" identifier = (call_expression "dcgettext(0,pcVar5,5)" identifier (argument_list "(0,pcVar5,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "error(uVar6);" (call_expression "error(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar1 = *(undefined1 *)((int)param_1 + 0x6e);" (assignment_expression "uVar1 = *(undefined1 *)((int)param_1 + 0x6e)" identifier = (pointer_expression "*(undefined1 *)((int)param_1 + 0x6e)" * (cast_expression "(undefined1 *)((int)param_1 + 0x6e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x6e)" ( (binary_expression "(int)param_1 + 0x6e" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x6e) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x6e) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x6e)" * (cast_expression "(undefined1 *)((int)param_1 + 0x6e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x6e)" ( (binary_expression "(int)param_1 + 0x6e" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);" (assignment_expression "uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10)" identifier = (call_expression "strtoul((char *)((int)param_1 + 0x35),local_20,10)" identifier (argument_list "((char *)((int)param_1 + 0x35),local_20,10)" ( (cast_expression "(char *)((int)param_1 + 0x35)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x35)" ( (binary_expression "(int)param_1 + 0x35" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , number_literal )))) ;) (if_statement "if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }" if (parenthesized_expression "(((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':'))" ( (binary_expression "((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')" (parenthesized_expression "((param_1[0xb] != 0) && (local_20[0] != (char *)0x0))" ( (binary_expression "(param_1[0xb] != 0) && (local_20[0] != (char *)0x0)" (parenthesized_expression "(param_1[0xb] != 0)" ( (binary_expression "param_1[0xb] != 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_20[0] != (char *)0x0)" ( (binary_expression "local_20[0] != (char *)0x0" (subscript_expression "local_20[0]" identifier [ number_literal ]) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(*local_20[0] == ':')" ( (binary_expression "*local_20[0] == ':'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) == (char_literal "':'" ' character ')) ))) )) (compound_statement "{\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }" { (expression_statement "uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);" (assignment_expression "uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10)" identifier = (call_expression "strtoul(local_20[0] + 1,(char **)0x0,10)" identifier (argument_list "(local_20[0] + 1,(char **)0x0,10)" ( (binary_expression "local_20[0] + 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "param_1[9] = uVar8;" (assignment_expression "param_1[9] = uVar8" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar3 = param_1[8];" (assignment_expression "uVar3 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x6e) = uVar1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x6e) = uVar1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x6e)" * (cast_expression "(undefined1 *)((int)param_1 + 0x6e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x6e)" ( (binary_expression "(int)param_1 + 0x6e" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }" if (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) )) (compound_statement "{\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }" { (expression_statement "uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);" (assignment_expression "uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)" identifier = (call_expression "dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)" identifier (argument_list "(0,"Found long name index (%ld) beyond end of long name table\n",5)" ( number_literal , (string_literal ""Found long name index (%ld) beyond end of long name table\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "error(uVar6,uVar7);" (call_expression "error(uVar6,uVar7)" identifier (argument_list "(uVar6,uVar7)" ( identifier , identifier ))) ;) (expression_statement "puVar11 = (undefined4 *)0x0;" (assignment_expression "puVar11 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }" else (compound_statement "{\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }" { (expression_statement "iVar10 = param_1[7];" (assignment_expression "iVar10 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (if_statement "if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }" if (parenthesized_expression "(((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n'))" ( (binary_expression "((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')" (parenthesized_expression "((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0'))" ( (binary_expression "(uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')" (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) && (parenthesized_expression "(*(char *)(iVar10 + uVar7) != '\0')" ( (binary_expression "*(char *)(iVar10 + uVar7) != '\0'" (pointer_expression "*(char *)(iVar10 + uVar7)" * (cast_expression "(char *)(iVar10 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar7)" ( (binary_expression "iVar10 + uVar7" identifier + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')" ( (comma_expression "uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n'" (assignment_expression "uVar8 = uVar7" identifier = identifier) , (binary_expression "*(char *)(iVar10 + uVar7) != '\n'" (pointer_expression "*(char *)(iVar10 + uVar7)" * (cast_expression "(char *)(iVar10 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar7)" ( (binary_expression "iVar10 + uVar7" identifier + identifier) )))) != (char_literal "'\n'" ' escape_sequence '))) ))) )) (compound_statement "{\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }" { (do_statement "do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');" do (compound_statement "{\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        }" { (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar3;" (assignment_expression "uVar9 = uVar3" identifier = identifier) ;) (if_statement "if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;" if (parenthesized_expression "((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n'))" ( (binary_expression "(uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')" (parenthesized_expression "(uVar3 == uVar8)" ( (binary_expression "uVar3 == uVar8" identifier == identifier) )) || (parenthesized_expression "(uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')" ( (comma_expression "uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n'" (assignment_expression "uVar9 = uVar8" identifier = identifier) , (binary_expression "*(char *)(iVar10 + uVar8) == '\n'" (pointer_expression "*(char *)(iVar10 + uVar8)" * (cast_expression "(char *)(iVar10 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar8)" ( (binary_expression "iVar10 + uVar8" identifier + identifier) )))) == (char_literal "'\n'" ' escape_sequence '))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(*(char *)(iVar10 + uVar8) != '\0')" ( (binary_expression "*(char *)(iVar10 + uVar8) != '\0'" (pointer_expression "*(char *)(iVar10 + uVar8)" * (cast_expression "(char *)(iVar10 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar8)" ( (binary_expression "iVar10 + uVar8" identifier + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }" { (if_statement "if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }" if (parenthesized_expression "(*(char *)(iVar10 + -1 + uVar9) == '/')" ( (binary_expression "*(char *)(iVar10 + -1 + uVar9) == '/'" (pointer_expression "*(char *)(iVar10 + -1 + uVar9)" * (cast_expression "(char *)(iVar10 + -1 + uVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -1 + uVar9)" ( (binary_expression "iVar10 + -1 + uVar9" (binary_expression "iVar10 + -1" identifier + number_literal) + identifier) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n          uVar9 = uVar9 - 1;\n        }" { (expression_statement "uVar9 = uVar9 - 1;" (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }" if (parenthesized_expression "(uVar3 < uVar9)" ( (binary_expression "uVar3 < uVar9" identifier < identifier) )) (compound_statement "{\n          uVar9 = uVar3;\n        }" { (expression_statement "uVar9 = uVar3;" (assignment_expression "uVar9 = uVar3" identifier = identifier) ;) })) })) (expression_statement "*(undefined1 *)(iVar10 + uVar9) = 0;" (assignment_expression "*(undefined1 *)(iVar10 + uVar9) = 0" (pointer_expression "*(undefined1 *)(iVar10 + uVar9)" * (cast_expression "(undefined1 *)(iVar10 + uVar9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar9)" ( (binary_expression "iVar10 + uVar9" identifier + identifier) )))) = number_literal) ;) (if_statement "if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }" if (parenthesized_expression "((param_1[0xb] == 0) || (param_1[9] == 0))" ( (binary_expression "(param_1[0xb] == 0) || (param_1[9] == 0)" (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(param_1[9] == 0)" ( (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }" { (expression_statement "puVar11 = (undefined4 *)(param_1[7] + uVar7);" (assignment_expression "puVar11 = (undefined4 *)(param_1[7] + uVar7)" identifier = (cast_expression "(undefined4 *)(param_1[7] + uVar7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[7] + uVar7)" ( (binary_expression "param_1[7] + uVar7" (subscript_expression "param_1[7]" identifier [ number_literal ]) + identifier) )))) ;) }) (else_clause "else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }" else (compound_statement "{\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }" { (if_statement "if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }" if (parenthesized_expression "(uVar9 <= uVar7)" ( (binary_expression "uVar9 <= uVar7" identifier <= identifier) )) (compound_statement "{\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }" { (expression_statement "pcVar5 = "Invalid Thin archive member name\n";" (assignment_expression "pcVar5 = "Invalid Thin archive member name\n"" identifier = (string_literal ""Invalid Thin archive member name\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_000677e9;" goto statement_identifier ;) })) (expression_statement "__ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);" (assignment_expression "__ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" identifier = (cast_expression "(void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" identifier (argument_list "(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" ( (pointer_expression "*param_1" * identifier) , (binary_expression "param_1[7] + uVar7" (subscript_expression "param_1[7]" identifier [ number_literal ]) + identifier) , (binary_expression "uVar9 - uVar7" identifier - identifier) ))))) ;) (if_statement "if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }" if (parenthesized_expression "(((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           ))" ( (binary_expression "((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )" (parenthesized_expression "((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0))" ( (binary_expression "(__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)" (parenthesized_expression "(__ptr == (void *)0x0)" ( (binary_expression "__ptr == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)" ( (comma_expression "iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0" (assignment_expression "iVar10 = FUN_00067640(param_2,__ptr)" identifier = (call_expression "FUN_00067640(param_2,__ptr)" identifier (argument_list "(param_2,__ptr)" ( identifier , identifier )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )" ( (comma_expression "puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0" (assignment_expression "puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0)" identifier = (cast_expression "(undefined4 *)FUN_000676c0(param_2,param_1[9],0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000676c0(param_2,param_1[9],0)" identifier (argument_list "(param_2,param_1[9],0)" ( identifier , (subscript_expression "param_1[9]" identifier [ number_literal ]) , number_literal ))))) , (binary_expression "puVar11 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "puVar11 = (undefined4 *)(param_1[7] + uVar7);" (assignment_expression "puVar11 = (undefined4 *)(param_1[7] + uVar7)" identifier = (cast_expression "(undefined4 *)(param_1[7] + uVar7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[7] + uVar7)" ( (binary_expression "param_1[7] + uVar7" (subscript_expression "param_1[7]" identifier [ number_literal ]) + identifier) )))) ;) }) (else_clause "else {\n          free(__ptr);\n        }" else (compound_statement "{\n          free(__ptr);\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) }))) }))) }))) }) (else_clause "else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }" else (compound_statement "{\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }" { (while_statement "while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }" while (parenthesized_expression "(iVar4 = iVar10, iVar4 + 1 != 0x10)" ( (comma_expression "iVar4 = iVar10, iVar4 + 1 != 0x10" (assignment_expression "iVar4 = iVar10" identifier = identifier) , (binary_expression "iVar4 + 1 != 0x10" (binary_expression "iVar4 + 1" identifier + number_literal) != number_literal)) )) (compound_statement "{\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }" { (expression_statement "iVar10 = iVar4 + 1;" (assignment_expression "iVar10 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }" if (parenthesized_expression "(*(char *)((int)param_1 + iVar4 + 0x35) == '/')" ( (binary_expression "*(char *)((int)param_1 + iVar4 + 0x35) == '/'" (pointer_expression "*(char *)((int)param_1 + iVar4 + 0x35)" * (cast_expression "(char *)((int)param_1 + iVar4 + 0x35)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + iVar4 + 0x35)" ( (binary_expression "(int)param_1 + iVar4 + 0x35" (binary_expression "(int)param_1 + iVar4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }" { (expression_statement "*(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + iVar4 + 0x35)" * (cast_expression "(undefined1 *)((int)param_1 + iVar4 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + iVar4 + 0x35)" ( (binary_expression "(int)param_1 + iVar4 + 0x35" (binary_expression "(int)param_1 + iVar4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (return_statement "return param_1 + 0xd;" return (binary_expression "param_1 + 0xd" identifier + number_literal) ;) })) })) (expression_statement "puVar11 = (undefined4 *)FUN_0006b190(0x11);" (assignment_expression "puVar11 = (undefined4 *)FUN_0006b190(0x11)" identifier = (cast_expression "(undefined4 *)FUN_0006b190(0x11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0006b190(0x11)" identifier (argument_list "(0x11)" ( number_literal ))))) ;) (expression_statement "uVar6 = param_1[0xd];" (assignment_expression "uVar6 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = param_1[0x10];" (assignment_expression "uVar2 = param_1[0x10]" identifier = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar11 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar11 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar11 + 4)" * (cast_expression "(undefined1 *)(puVar11 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar11 = uVar6;" (assignment_expression "*puVar11 = uVar6" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "uVar6 = param_1[0xe];" (assignment_expression "uVar6 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "puVar11[3] = uVar2;" (assignment_expression "puVar11[3] = uVar2" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[1] = uVar6;" (assignment_expression "puVar11[1] = uVar6" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[2] = param_1[0xf];" (assignment_expression "puVar11[2] = param_1[0xf]" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) }))) (return_statement "return puVar11;" return identifier ;) })))
(translation_unit "/* WARNING: Function: __x86.get_pc_thunk.bx replaced with injection: get_pc_thunk_bx */\n/* WARNING: Unknown calling convention */\n\nchar * get_archive_member_name(archive_info *arch,archive_info *nested_arch)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  char *pcVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  char *member_file_name;\n  int iVar10;\n  char *endp;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if ((arch->arhdr).ar_name[0] == '/') {\n    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar6 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      pcVar6 = (char *)dcgettext(0,pcVar6,5);\n      error(pcVar6);\n      return (char *)0x0;\n    }\n    cVar1 = (arch->arhdr).ar_fmag[0];\n    arch->nested_member_origin = 0;\n    (arch->arhdr).ar_fmag[0] = '\0';\n    uVar7 = strtoul((arch->arhdr).ar_name + 1,&endp,10);\n    if (((arch->is_thin_archive != 0) && (endp != (char *)0x0)) && (*endp == ':')) {\n      uVar8 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar8;\n    }\n    uVar4 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar4 < uVar7) {\n      pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(pcVar6,uVar7);\n      pcVar6 = (char *)0x0;\n    }\n    else {\n      pcVar6 = arch->longnames;\n      uVar9 = uVar7;\n      if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }\n      if (uVar9 != 0) {\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }\n      pcVar6[uVar9] = '\0';\n      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {\n        pcVar6 = arch->longnames + uVar7;\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar5 = iVar10, iVar5 + 1 != 0x10) {\n      iVar10 = iVar5 + 1;\n      if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar6 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined4 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined4 *)((arch->arhdr).ar_name + 0xc);\n    pcVar6[0x10] = '\0';\n    *(undefined4 *)pcVar6 = uVar2;\n    uVar2 = *(undefined4 *)((arch->arhdr).ar_name + 4);\n    *(undefined4 *)(pcVar6 + 0xc) = uVar3;\n    *(undefined4 *)(pcVar6 + 4) = uVar2;\n    *(undefined4 *)(pcVar6 + 8) = *(undefined4 *)((arch->arhdr).ar_name + 8);\n  }\n  return pcVar6;\n}\n\n" comment comment (function_definition "char * get_archive_member_name(archive_info *arch,archive_info *nested_arch)\n\n{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  char *pcVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  char *member_file_name;\n  int iVar10;\n  char *endp;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if ((arch->arhdr).ar_name[0] == '/') {\n    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar6 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      pcVar6 = (char *)dcgettext(0,pcVar6,5);\n      error(pcVar6);\n      return (char *)0x0;\n    }\n    cVar1 = (arch->arhdr).ar_fmag[0];\n    arch->nested_member_origin = 0;\n    (arch->arhdr).ar_fmag[0] = '\0';\n    uVar7 = strtoul((arch->arhdr).ar_name + 1,&endp,10);\n    if (((arch->is_thin_archive != 0) && (endp != (char *)0x0)) && (*endp == ':')) {\n      uVar8 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar8;\n    }\n    uVar4 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar4 < uVar7) {\n      pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(pcVar6,uVar7);\n      pcVar6 = (char *)0x0;\n    }\n    else {\n      pcVar6 = arch->longnames;\n      uVar9 = uVar7;\n      if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }\n      if (uVar9 != 0) {\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }\n      pcVar6[uVar9] = '\0';\n      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {\n        pcVar6 = arch->longnames + uVar7;\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar5 = iVar10, iVar5 + 1 != 0x10) {\n      iVar10 = iVar5 + 1;\n      if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar6 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined4 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined4 *)((arch->arhdr).ar_name + 0xc);\n    pcVar6[0x10] = '\0';\n    *(undefined4 *)pcVar6 = uVar2;\n    uVar2 = *(undefined4 *)((arch->arhdr).ar_name + 4);\n    *(undefined4 *)(pcVar6 + 0xc) = uVar3;\n    *(undefined4 *)(pcVar6 + 4) = uVar2;\n    *(undefined4 *)(pcVar6 + 8) = *(undefined4 *)((arch->arhdr).ar_name + 8);\n  }\n  return pcVar6;\n}" primitive_type (pointer_declarator "* get_archive_member_name(archive_info *arch,archive_info *nested_arch)" * (function_declarator "get_archive_member_name(archive_info *arch,archive_info *nested_arch)" identifier (parameter_list "(archive_info *arch,archive_info *nested_arch)" ( (parameter_declaration "archive_info *arch" type_identifier (pointer_declarator "*arch" * identifier)) , (parameter_declaration "archive_info *nested_arch" type_identifier (pointer_declarator "*nested_arch" * identifier)) )))) (compound_statement "{\n  char cVar1;\n  undefined4 uVar2;\n  undefined4 uVar3;\n  uint uVar4;\n  int iVar5;\n  char *pcVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  char *member_file_name;\n  int iVar10;\n  char *endp;\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if ((arch->arhdr).ar_name[0] == '/') {\n    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar6 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      pcVar6 = (char *)dcgettext(0,pcVar6,5);\n      error(pcVar6);\n      return (char *)0x0;\n    }\n    cVar1 = (arch->arhdr).ar_fmag[0];\n    arch->nested_member_origin = 0;\n    (arch->arhdr).ar_fmag[0] = '\0';\n    uVar7 = strtoul((arch->arhdr).ar_name + 1,&endp,10);\n    if (((arch->is_thin_archive != 0) && (endp != (char *)0x0)) && (*endp == ':')) {\n      uVar8 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar8;\n    }\n    uVar4 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar4 < uVar7) {\n      pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(pcVar6,uVar7);\n      pcVar6 = (char *)0x0;\n    }\n    else {\n      pcVar6 = arch->longnames;\n      uVar9 = uVar7;\n      if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }\n      if (uVar9 != 0) {\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }\n      pcVar6[uVar9] = '\0';\n      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {\n        pcVar6 = arch->longnames + uVar7;\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar5 = iVar10, iVar5 + 1 != 0x10) {\n      iVar10 = iVar5 + 1;\n      if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar6 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined4 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined4 *)((arch->arhdr).ar_name + 0xc);\n    pcVar6[0x10] = '\0';\n    *(undefined4 *)pcVar6 = uVar2;\n    uVar2 = *(undefined4 *)((arch->arhdr).ar_name + 4);\n    *(undefined4 *)(pcVar6 + 0xc) = uVar3;\n    *(undefined4 *)(pcVar6 + 4) = uVar2;\n    *(undefined4 *)(pcVar6 + 8) = *(undefined4 *)((arch->arhdr).ar_name + 8);\n  }\n  return pcVar6;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "undefined4 uVar3;" type_identifier identifier ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "char *pcVar6;" primitive_type (pointer_declarator "*pcVar6" * identifier) ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "char *member_file_name;" primitive_type (pointer_declarator "*member_file_name" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "char *endp;" primitive_type (pointer_declarator "*endp" * identifier) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x6777b;" (assignment_expression "uStack_14 = 0x6777b" identifier = number_literal) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if ((arch->arhdr).ar_name[0] == '/') {\n    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar6 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      pcVar6 = (char *)dcgettext(0,pcVar6,5);\n      error(pcVar6);\n      return (char *)0x0;\n    }\n    cVar1 = (arch->arhdr).ar_fmag[0];\n    arch->nested_member_origin = 0;\n    (arch->arhdr).ar_fmag[0] = '\0';\n    uVar7 = strtoul((arch->arhdr).ar_name + 1,&endp,10);\n    if (((arch->is_thin_archive != 0) && (endp != (char *)0x0)) && (*endp == ':')) {\n      uVar8 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar8;\n    }\n    uVar4 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar4 < uVar7) {\n      pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(pcVar6,uVar7);\n      pcVar6 = (char *)0x0;\n    }\n    else {\n      pcVar6 = arch->longnames;\n      uVar9 = uVar7;\n      if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }\n      if (uVar9 != 0) {\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }\n      pcVar6[uVar9] = '\0';\n      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {\n        pcVar6 = arch->longnames + uVar7;\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar5 = iVar10, iVar5 + 1 != 0x10) {\n      iVar10 = iVar5 + 1;\n      if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar6 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined4 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined4 *)((arch->arhdr).ar_name + 0xc);\n    pcVar6[0x10] = '\0';\n    *(undefined4 *)pcVar6 = uVar2;\n    uVar2 = *(undefined4 *)((arch->arhdr).ar_name + 4);\n    *(undefined4 *)(pcVar6 + 0xc) = uVar3;\n    *(undefined4 *)(pcVar6 + 4) = uVar2;\n    *(undefined4 *)(pcVar6 + 8) = *(undefined4 *)((arch->arhdr).ar_name + 8);\n  }" if (parenthesized_expression "((arch->arhdr).ar_name[0] == '/')" ( (binary_expression "(arch->arhdr).ar_name[0] == '/'" (subscript_expression "(arch->arhdr).ar_name[0]" (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar6 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      pcVar6 = (char *)dcgettext(0,pcVar6,5);\n      error(pcVar6);\n      return (char *)0x0;\n    }\n    cVar1 = (arch->arhdr).ar_fmag[0];\n    arch->nested_member_origin = 0;\n    (arch->arhdr).ar_fmag[0] = '\0';\n    uVar7 = strtoul((arch->arhdr).ar_name + 1,&endp,10);\n    if (((arch->is_thin_archive != 0) && (endp != (char *)0x0)) && (*endp == ':')) {\n      uVar8 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar8;\n    }\n    uVar4 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar4 < uVar7) {\n      pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(pcVar6,uVar7);\n      pcVar6 = (char *)0x0;\n    }\n    else {\n      pcVar6 = arch->longnames;\n      uVar9 = uVar7;\n      if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }\n      if (uVar9 != 0) {\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }\n      pcVar6[uVar9] = '\0';\n      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {\n        pcVar6 = arch->longnames + uVar7;\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }\n    }\n  }" { (if_statement "if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar6 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      pcVar6 = (char *)dcgettext(0,pcVar6,5);\n      error(pcVar6);\n      return (char *)0x0;\n    }" if (parenthesized_expression "((arch->longnames == (char *)0x0) || (arch->longnames_size == 0))" ( (binary_expression "(arch->longnames == (char *)0x0) || (arch->longnames_size == 0)" (parenthesized_expression "(arch->longnames == (char *)0x0)" ( (binary_expression "arch->longnames == (char *)0x0" (field_expression "arch->longnames" identifier -> field_identifier) == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(arch->longnames_size == 0)" ( (binary_expression "arch->longnames_size == 0" (field_expression "arch->longnames_size" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n      pcVar6 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      pcVar6 = (char *)dcgettext(0,pcVar6,5);\n      error(pcVar6);\n      return (char *)0x0;\n    }" { (expression_statement "pcVar6 = "Archive member uses long names, but no longname table found\n";" (assignment_expression "pcVar6 = "Archive member uses long names, but no longname table found\n"" identifier = (string_literal ""Archive member uses long names, but no longname table found\n"" " string_content escape_sequence ")) ;) (labeled_statement "LAB_000677e9:\n      pcVar6 = (char *)dcgettext(0,pcVar6,5);" statement_identifier : (expression_statement "pcVar6 = (char *)dcgettext(0,pcVar6,5);" (assignment_expression "pcVar6 = (char *)dcgettext(0,pcVar6,5)" identifier = (cast_expression "(char *)dcgettext(0,pcVar6,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,pcVar6,5)" identifier (argument_list "(0,pcVar6,5)" ( number_literal , identifier , number_literal ))))) ;)) (expression_statement "error(pcVar6);" (call_expression "error(pcVar6)" identifier (argument_list "(pcVar6)" ( identifier ))) ;) (return_statement "return (char *)0x0;" return (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "cVar1 = (arch->arhdr).ar_fmag[0];" (assignment_expression "cVar1 = (arch->arhdr).ar_fmag[0]" identifier = (subscript_expression "(arch->arhdr).ar_fmag[0]" (field_expression "(arch->arhdr).ar_fmag" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ])) ;) (expression_statement "arch->nested_member_origin = 0;" (assignment_expression "arch->nested_member_origin = 0" (field_expression "arch->nested_member_origin" identifier -> field_identifier) = number_literal) ;) (expression_statement "(arch->arhdr).ar_fmag[0] = '\0';" (assignment_expression "(arch->arhdr).ar_fmag[0] = '\0'" (subscript_expression "(arch->arhdr).ar_fmag[0]" (field_expression "(arch->arhdr).ar_fmag" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "uVar7 = strtoul((arch->arhdr).ar_name + 1,&endp,10);" (assignment_expression "uVar7 = strtoul((arch->arhdr).ar_name + 1,&endp,10)" identifier = (call_expression "strtoul((arch->arhdr).ar_name + 1,&endp,10)" identifier (argument_list "((arch->arhdr).ar_name + 1,&endp,10)" ( (binary_expression "(arch->arhdr).ar_name + 1" (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) + number_literal) , (pointer_expression "&endp" & identifier) , number_literal )))) ;) (if_statement "if (((arch->is_thin_archive != 0) && (endp != (char *)0x0)) && (*endp == ':')) {\n      uVar8 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar8;\n    }" if (parenthesized_expression "(((arch->is_thin_archive != 0) && (endp != (char *)0x0)) && (*endp == ':'))" ( (binary_expression "((arch->is_thin_archive != 0) && (endp != (char *)0x0)) && (*endp == ':')" (parenthesized_expression "((arch->is_thin_archive != 0) && (endp != (char *)0x0))" ( (binary_expression "(arch->is_thin_archive != 0) && (endp != (char *)0x0)" (parenthesized_expression "(arch->is_thin_archive != 0)" ( (binary_expression "arch->is_thin_archive != 0" (field_expression "arch->is_thin_archive" identifier -> field_identifier) != number_literal) )) && (parenthesized_expression "(endp != (char *)0x0)" ( (binary_expression "endp != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(*endp == ':')" ( (binary_expression "*endp == ':'" (pointer_expression "*endp" * identifier) == (char_literal "':'" ' character ')) ))) )) (compound_statement "{\n      uVar8 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar8;\n    }" { (expression_statement "uVar8 = strtoul(endp + 1,(char **)0x0,10);" (assignment_expression "uVar8 = strtoul(endp + 1,(char **)0x0,10)" identifier = (call_expression "strtoul(endp + 1,(char **)0x0,10)" identifier (argument_list "(endp + 1,(char **)0x0,10)" ( (binary_expression "endp + 1" identifier + number_literal) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "arch->nested_member_origin = uVar8;" (assignment_expression "arch->nested_member_origin = uVar8" (field_expression "arch->nested_member_origin" identifier -> field_identifier) = identifier) ;) })) (expression_statement "uVar4 = arch->longnames_size;" (assignment_expression "uVar4 = arch->longnames_size" identifier = (field_expression "arch->longnames_size" identifier -> field_identifier)) ;) (expression_statement "(arch->arhdr).ar_fmag[0] = cVar1;" (assignment_expression "(arch->arhdr).ar_fmag[0] = cVar1" (subscript_expression "(arch->arhdr).ar_fmag[0]" (field_expression "(arch->arhdr).ar_fmag" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) [ number_literal ]) = identifier) ;) (if_statement "if (uVar4 < uVar7) {\n      pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(pcVar6,uVar7);\n      pcVar6 = (char *)0x0;\n    }\n    else {\n      pcVar6 = arch->longnames;\n      uVar9 = uVar7;\n      if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }\n      if (uVar9 != 0) {\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }\n      pcVar6[uVar9] = '\0';\n      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {\n        pcVar6 = arch->longnames + uVar7;\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }\n    }" if (parenthesized_expression "(uVar4 < uVar7)" ( (binary_expression "uVar4 < uVar7" identifier < identifier) )) (compound_statement "{\n      pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(pcVar6,uVar7);\n      pcVar6 = (char *)0x0;\n    }" { (expression_statement "pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);" (assignment_expression "pcVar6 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)" identifier = (cast_expression "(char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)" identifier (argument_list "(0,"Found long name index (%ld) beyond end of long name table\n",5)" ( number_literal , (string_literal ""Found long name index (%ld) beyond end of long name table\n"" " string_content escape_sequence ") , number_literal ))))) ;) (expression_statement "error(pcVar6,uVar7);" (call_expression "error(pcVar6,uVar7)" identifier (argument_list "(pcVar6,uVar7)" ( identifier , identifier ))) ;) (expression_statement "pcVar6 = (char *)0x0;" (assignment_expression "pcVar6 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      pcVar6 = arch->longnames;\n      uVar9 = uVar7;\n      if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }\n      if (uVar9 != 0) {\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }\n      pcVar6[uVar9] = '\0';\n      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {\n        pcVar6 = arch->longnames + uVar7;\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }\n    }" else (compound_statement "{\n      pcVar6 = arch->longnames;\n      uVar9 = uVar7;\n      if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }\n      if (uVar9 != 0) {\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }\n      pcVar6[uVar9] = '\0';\n      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {\n        pcVar6 = arch->longnames + uVar7;\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }\n    }" { (expression_statement "pcVar6 = arch->longnames;" (assignment_expression "pcVar6 = arch->longnames" identifier = (field_expression "arch->longnames" identifier -> field_identifier)) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (if_statement "if (((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }" if (parenthesized_expression "(((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n'))" ( (binary_expression "((uVar7 < uVar4) && (pcVar6[uVar7] != '\0')) && (uVar8 = uVar7, pcVar6[uVar7] != '\n')" (parenthesized_expression "((uVar7 < uVar4) && (pcVar6[uVar7] != '\0'))" ( (binary_expression "(uVar7 < uVar4) && (pcVar6[uVar7] != '\0')" (parenthesized_expression "(uVar7 < uVar4)" ( (binary_expression "uVar7 < uVar4" identifier < identifier) )) && (parenthesized_expression "(pcVar6[uVar7] != '\0')" ( (binary_expression "pcVar6[uVar7] != '\0'" (subscript_expression "pcVar6[uVar7]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(uVar8 = uVar7, pcVar6[uVar7] != '\n')" ( (comma_expression "uVar8 = uVar7, pcVar6[uVar7] != '\n'" (assignment_expression "uVar8 = uVar7" identifier = identifier) , (binary_expression "pcVar6[uVar7] != '\n'" (subscript_expression "pcVar6[uVar7]" identifier [ identifier ]) != (char_literal "'\n'" ' escape_sequence '))) ))) )) (compound_statement "{\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');\n      }" { (do_statement "do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        } while (pcVar6[uVar8] != '\0');" do (compound_statement "{\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar4;\n          if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;\n        }" { (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar4;" (assignment_expression "uVar9 = uVar4" identifier = identifier) ;) (if_statement "if ((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')) break;" if (parenthesized_expression "((uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n'))" ( (binary_expression "(uVar4 == uVar8) || (uVar9 = uVar8, pcVar6[uVar8] == '\n')" (parenthesized_expression "(uVar4 == uVar8)" ( (binary_expression "uVar4 == uVar8" identifier == identifier) )) || (parenthesized_expression "(uVar9 = uVar8, pcVar6[uVar8] == '\n')" ( (comma_expression "uVar9 = uVar8, pcVar6[uVar8] == '\n'" (assignment_expression "uVar9 = uVar8" identifier = identifier) , (binary_expression "pcVar6[uVar8] == '\n'" (subscript_expression "pcVar6[uVar8]" identifier [ identifier ]) == (char_literal "'\n'" ' escape_sequence '))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(pcVar6[uVar8] != '\0')" ( (binary_expression "pcVar6[uVar8] != '\0'" (subscript_expression "pcVar6[uVar8]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (uVar9 != 0) {\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }\n      }" { (if_statement "if (pcVar6[uVar9 - 1] == '/') {\n          uVar9 = uVar9 - 1;\n        }" if (parenthesized_expression "(pcVar6[uVar9 - 1] == '/')" ( (binary_expression "pcVar6[uVar9 - 1] == '/'" (subscript_expression "pcVar6[uVar9 - 1]" identifier [ (binary_expression "uVar9 - 1" identifier - number_literal) ]) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n          uVar9 = uVar9 - 1;\n        }" { (expression_statement "uVar9 = uVar9 - 1;" (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar4 < uVar9) {\n          uVar9 = uVar4;\n        }" if (parenthesized_expression "(uVar4 < uVar9)" ( (binary_expression "uVar4 < uVar9" identifier < identifier) )) (compound_statement "{\n          uVar9 = uVar4;\n        }" { (expression_statement "uVar9 = uVar4;" (assignment_expression "uVar9 = uVar4" identifier = identifier) ;) })) })) (expression_statement "pcVar6[uVar9] = '\0';" (assignment_expression "pcVar6[uVar9] = '\0'" (subscript_expression "pcVar6[uVar9]" identifier [ identifier ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {\n        pcVar6 = arch->longnames + uVar7;\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }" if (parenthesized_expression "((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0))" ( (binary_expression "(arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)" (parenthesized_expression "(arch->is_thin_archive == 0)" ( (binary_expression "arch->is_thin_archive == 0" (field_expression "arch->is_thin_archive" identifier -> field_identifier) == number_literal) )) || (parenthesized_expression "(arch->nested_member_origin == 0)" ( (binary_expression "arch->nested_member_origin == 0" (field_expression "arch->nested_member_origin" identifier -> field_identifier) == number_literal) ))) )) (compound_statement "{\n        pcVar6 = arch->longnames + uVar7;\n      }" { (expression_statement "pcVar6 = arch->longnames + uVar7;" (assignment_expression "pcVar6 = arch->longnames + uVar7" identifier = (binary_expression "arch->longnames + uVar7" (field_expression "arch->longnames" identifier -> field_identifier) + identifier)) ;) }) (else_clause "else {\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }" else (compound_statement "{\n        if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);\n        if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }\n      }" { (if_statement "if (uVar9 <= uVar7) {\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }" if (parenthesized_expression "(uVar9 <= uVar7)" ( (binary_expression "uVar9 <= uVar7" identifier <= identifier) )) (compound_statement "{\n          pcVar6 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }" { (expression_statement "pcVar6 = "Invalid Thin archive member name\n";" (assignment_expression "pcVar6 = "Invalid Thin archive member name\n"" identifier = (string_literal ""Invalid Thin archive member name\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_000677e9;" goto statement_identifier ;) })) (expression_statement "member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7);" (assignment_expression "member_file_name =\n             adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7)" identifier = (call_expression "adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7)" identifier (argument_list "(arch->file_name,arch->longnames + uVar7,uVar9 - uVar7)" ( (field_expression "arch->file_name" identifier -> field_identifier) , (binary_expression "arch->longnames + uVar7" (field_expression "arch->longnames" identifier -> field_identifier) + identifier) , (binary_expression "uVar9 - uVar7" identifier - identifier) )))) ;) (if_statement "if (((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)) {\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }\n        else {\n          free(member_file_name);\n        }" if (parenthesized_expression "(((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0))" ( (binary_expression "((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)) ||\n           (pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)" (parenthesized_expression "((member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0))" ( (binary_expression "(member_file_name == (char *)0x0) ||\n            (iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)" (parenthesized_expression "(member_file_name == (char *)0x0)" ( (binary_expression "member_file_name == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0)" ( (comma_expression "iVar10 = setup_nested_archive(nested_arch,member_file_name), iVar10 != 0" (assignment_expression "iVar10 = setup_nested_archive(nested_arch,member_file_name)" identifier = (call_expression "setup_nested_archive(nested_arch,member_file_name)" identifier (argument_list "(nested_arch,member_file_name)" ( identifier , identifier )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0)" ( (comma_expression "pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar6 == (char *)0x0" (assignment_expression "pcVar6 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0)" identifier = (call_expression "get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0)" identifier (argument_list "(nested_arch,arch->nested_member_origin,(archive_info *)0x0)" ( identifier , (field_expression "arch->nested_member_origin" identifier -> field_identifier) , (cast_expression "(archive_info *)0x0" ( (type_descriptor "archive_info *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) , (binary_expression "pcVar6 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          free(member_file_name);\n          pcVar6 = arch->longnames + uVar7;\n        }" { (expression_statement "free(member_file_name);" (call_expression "free(member_file_name)" identifier (argument_list "(member_file_name)" ( identifier ))) ;) (expression_statement "pcVar6 = arch->longnames + uVar7;" (assignment_expression "pcVar6 = arch->longnames + uVar7" identifier = (binary_expression "arch->longnames + uVar7" (field_expression "arch->longnames" identifier -> field_identifier) + identifier)) ;) }) (else_clause "else {\n          free(member_file_name);\n        }" else (compound_statement "{\n          free(member_file_name);\n        }" { (expression_statement "free(member_file_name);" (call_expression "free(member_file_name)" identifier (argument_list "(member_file_name)" ( identifier ))) ;) }))) }))) }))) }) (else_clause "else {\n    while (iVar5 = iVar10, iVar5 + 1 != 0x10) {\n      iVar10 = iVar5 + 1;\n      if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar6 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined4 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined4 *)((arch->arhdr).ar_name + 0xc);\n    pcVar6[0x10] = '\0';\n    *(undefined4 *)pcVar6 = uVar2;\n    uVar2 = *(undefined4 *)((arch->arhdr).ar_name + 4);\n    *(undefined4 *)(pcVar6 + 0xc) = uVar3;\n    *(undefined4 *)(pcVar6 + 4) = uVar2;\n    *(undefined4 *)(pcVar6 + 8) = *(undefined4 *)((arch->arhdr).ar_name + 8);\n  }" else (compound_statement "{\n    while (iVar5 = iVar10, iVar5 + 1 != 0x10) {\n      iVar10 = iVar5 + 1;\n      if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar6 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined4 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined4 *)((arch->arhdr).ar_name + 0xc);\n    pcVar6[0x10] = '\0';\n    *(undefined4 *)pcVar6 = uVar2;\n    uVar2 = *(undefined4 *)((arch->arhdr).ar_name + 4);\n    *(undefined4 *)(pcVar6 + 0xc) = uVar3;\n    *(undefined4 *)(pcVar6 + 4) = uVar2;\n    *(undefined4 *)(pcVar6 + 8) = *(undefined4 *)((arch->arhdr).ar_name + 8);\n  }" { (while_statement "while (iVar5 = iVar10, iVar5 + 1 != 0x10) {\n      iVar10 = iVar5 + 1;\n      if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }" while (parenthesized_expression "(iVar5 = iVar10, iVar5 + 1 != 0x10)" ( (comma_expression "iVar5 = iVar10, iVar5 + 1 != 0x10" (assignment_expression "iVar5 = iVar10" identifier = identifier) , (binary_expression "iVar5 + 1 != 0x10" (binary_expression "iVar5 + 1" identifier + number_literal) != number_literal)) )) (compound_statement "{\n      iVar10 = iVar5 + 1;\n      if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }" { (expression_statement "iVar10 = iVar5 + 1;" (assignment_expression "iVar10 = iVar5 + 1" identifier = (binary_expression "iVar5 + 1" identifier + number_literal)) ;) (if_statement "if ((arch->arhdr).ar_name[iVar5 + 1] == '/') {\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }" if (parenthesized_expression "((arch->arhdr).ar_name[iVar5 + 1] == '/')" ( (binary_expression "(arch->arhdr).ar_name[iVar5 + 1] == '/'" (subscript_expression "(arch->arhdr).ar_name[iVar5 + 1]" (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) [ (binary_expression "iVar5 + 1" identifier + number_literal) ]) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n        (arch->arhdr).ar_name[iVar5 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }" { (expression_statement "(arch->arhdr).ar_name[iVar5 + 1] = '\0';" (assignment_expression "(arch->arhdr).ar_name[iVar5 + 1] = '\0'" (subscript_expression "(arch->arhdr).ar_name[iVar5 + 1]" (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) [ (binary_expression "iVar5 + 1" identifier + number_literal) ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (return_statement "return (arch->arhdr).ar_name;" return (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) ;) })) })) (expression_statement "pcVar6 = (char *)xmalloc(0x11);" (assignment_expression "pcVar6 = (char *)xmalloc(0x11)" identifier = (cast_expression "(char *)xmalloc(0x11)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "xmalloc(0x11)" identifier (argument_list "(0x11)" ( number_literal ))))) ;) (expression_statement "uVar2 = *(undefined4 *)(arch->arhdr).ar_name;" (assignment_expression "uVar2 = *(undefined4 *)(arch->arhdr).ar_name" identifier = (pointer_expression "*(undefined4 *)(arch->arhdr).ar_name" * (cast_expression "(undefined4 *)(arch->arhdr).ar_name" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier)))) ;) (expression_statement "uVar3 = *(undefined4 *)((arch->arhdr).ar_name + 0xc);" (assignment_expression "uVar3 = *(undefined4 *)((arch->arhdr).ar_name + 0xc)" identifier = (pointer_expression "*(undefined4 *)((arch->arhdr).ar_name + 0xc)" * (cast_expression "(undefined4 *)((arch->arhdr).ar_name + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((arch->arhdr).ar_name + 0xc)" ( (binary_expression "(arch->arhdr).ar_name + 0xc" (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) + number_literal) ))))) ;) (expression_statement "pcVar6[0x10] = '\0';" (assignment_expression "pcVar6[0x10] = '\0'" (subscript_expression "pcVar6[0x10]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined4 *)pcVar6 = uVar2;" (assignment_expression "*(undefined4 *)pcVar6 = uVar2" (pointer_expression "*(undefined4 *)pcVar6" * (cast_expression "(undefined4 *)pcVar6" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "uVar2 = *(undefined4 *)((arch->arhdr).ar_name + 4);" (assignment_expression "uVar2 = *(undefined4 *)((arch->arhdr).ar_name + 4)" identifier = (pointer_expression "*(undefined4 *)((arch->arhdr).ar_name + 4)" * (cast_expression "(undefined4 *)((arch->arhdr).ar_name + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((arch->arhdr).ar_name + 4)" ( (binary_expression "(arch->arhdr).ar_name + 4" (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) + number_literal) ))))) ;) (expression_statement "*(undefined4 *)(pcVar6 + 0xc) = uVar3;" (assignment_expression "*(undefined4 *)(pcVar6 + 0xc) = uVar3" (pointer_expression "*(undefined4 *)(pcVar6 + 0xc)" * (cast_expression "(undefined4 *)(pcVar6 + 0xc)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 0xc)" ( (binary_expression "pcVar6 + 0xc" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(pcVar6 + 4) = uVar2;" (assignment_expression "*(undefined4 *)(pcVar6 + 4) = uVar2" (pointer_expression "*(undefined4 *)(pcVar6 + 4)" * (cast_expression "(undefined4 *)(pcVar6 + 4)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 4)" ( (binary_expression "pcVar6 + 4" identifier + number_literal) )))) = identifier) ;) (expression_statement "*(undefined4 *)(pcVar6 + 8) = *(undefined4 *)((arch->arhdr).ar_name + 8);" (assignment_expression "*(undefined4 *)(pcVar6 + 8) = *(undefined4 *)((arch->arhdr).ar_name + 8)" (pointer_expression "*(undefined4 *)(pcVar6 + 8)" * (cast_expression "(undefined4 *)(pcVar6 + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar6 + 8)" ( (binary_expression "pcVar6 + 8" identifier + number_literal) )))) = (pointer_expression "*(undefined4 *)((arch->arhdr).ar_name + 8)" * (cast_expression "(undefined4 *)((arch->arhdr).ar_name + 8)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((arch->arhdr).ar_name + 8)" ( (binary_expression "(arch->arhdr).ar_name + 8" (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) + number_literal) ))))) ;) }))) (return_statement "return pcVar6;" return identifier ;) })))
(translation_unit "undefined4 * FUN_00067770(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  void *__ptr;\n  int iVar10;\n  undefined4 *puVar11;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }\n  return puVar11;\n}\n\n" (function_definition "undefined4 * FUN_00067770(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  void *__ptr;\n  int iVar10;\n  undefined4 *puVar11;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }\n  return puVar11;\n}" type_identifier (pointer_declarator "* FUN_00067770(undefined4 *param_1,undefined4 param_2)" * (function_declarator "FUN_00067770(undefined4 *param_1,undefined4 param_2)" identifier (parameter_list "(undefined4 *param_1,undefined4 param_2)" ( (parameter_declaration "undefined4 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined4 param_2" type_identifier identifier) )))) (compound_statement "{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  void *__ptr;\n  int iVar10;\n  undefined4 *puVar11;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }\n  return puVar11;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined4 uVar2;" type_identifier identifier ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "char *pcVar5;" primitive_type (pointer_declarator "*pcVar5" * identifier) ;) (declaration "undefined4 uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "ulong uVar8;" type_identifier identifier ;) (declaration "uint uVar9;" type_identifier identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "int iVar10;" primitive_type identifier ;) (declaration "undefined4 *puVar11;" type_identifier (pointer_declarator "*puVar11" * identifier) ;) (declaration "char *local_20 [3];" primitive_type (pointer_declarator "*local_20 [3]" * (array_declarator "local_20 [3]" identifier [ number_literal ])) ;) (declaration "undefined4 uStack_14;" type_identifier identifier ;) (expression_statement "uStack_14 = 0x6777b;" (assignment_expression "uStack_14 = 0x6777b" identifier = number_literal) ;) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0xd) == '/')" ( (binary_expression "*(char *)(param_1 + 0xd) == '/'" (pointer_expression "*(char *)(param_1 + 0xd)" * (cast_expression "(char *)(param_1 + 0xd)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xd)" ( (binary_expression "param_1 + 0xd" identifier + number_literal) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }" { (if_statement "if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }" if (parenthesized_expression "((param_1[7] == 0) || (param_1[8] == 0))" ( (binary_expression "(param_1[7] == 0) || (param_1[8] == 0)" (parenthesized_expression "(param_1[7] == 0)" ( (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(param_1[8] == 0)" ( (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }" { (expression_statement "pcVar5 = "Archive member uses long names, but no longname table found\n";" (assignment_expression "pcVar5 = "Archive member uses long names, but no longname table found\n"" identifier = (string_literal ""Archive member uses long names, but no longname table found\n"" " string_content escape_sequence ")) ;) (labeled_statement "LAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);" statement_identifier : (expression_statement "uVar6 = dcgettext(0,pcVar5,5);" (assignment_expression "uVar6 = dcgettext(0,pcVar5,5)" identifier = (call_expression "dcgettext(0,pcVar5,5)" identifier (argument_list "(0,pcVar5,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "error(uVar6);" (call_expression "error(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (return_statement "return (undefined4 *)0x0;" return (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar1 = *(undefined1 *)((int)param_1 + 0x6e);" (assignment_expression "uVar1 = *(undefined1 *)((int)param_1 + 0x6e)" identifier = (pointer_expression "*(undefined1 *)((int)param_1 + 0x6e)" * (cast_expression "(undefined1 *)((int)param_1 + 0x6e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x6e)" ( (binary_expression "(int)param_1 + 0x6e" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x6e) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x6e) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x6e)" * (cast_expression "(undefined1 *)((int)param_1 + 0x6e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x6e)" ( (binary_expression "(int)param_1 + 0x6e" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);" (assignment_expression "uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10)" identifier = (call_expression "strtoul((char *)((int)param_1 + 0x35),local_20,10)" identifier (argument_list "((char *)((int)param_1 + 0x35),local_20,10)" ( (cast_expression "(char *)((int)param_1 + 0x35)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x35)" ( (binary_expression "(int)param_1 + 0x35" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) ))) , identifier , number_literal )))) ;) (if_statement "if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }" if (parenthesized_expression "(((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':'))" ( (binary_expression "((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')" (parenthesized_expression "((param_1[0xb] != 0) && (local_20[0] != (char *)0x0))" ( (binary_expression "(param_1[0xb] != 0) && (local_20[0] != (char *)0x0)" (parenthesized_expression "(param_1[0xb] != 0)" ( (binary_expression "param_1[0xb] != 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(local_20[0] != (char *)0x0)" ( (binary_expression "local_20[0] != (char *)0x0" (subscript_expression "local_20[0]" identifier [ number_literal ]) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(*local_20[0] == ':')" ( (binary_expression "*local_20[0] == ':'" (pointer_expression "*local_20[0]" * (subscript_expression "local_20[0]" identifier [ number_literal ])) == (char_literal "':'" ' character ')) ))) )) (compound_statement "{\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }" { (expression_statement "uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);" (assignment_expression "uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10)" identifier = (call_expression "strtoul(local_20[0] + 1,(char **)0x0,10)" identifier (argument_list "(local_20[0] + 1,(char **)0x0,10)" ( (binary_expression "local_20[0] + 1" (subscript_expression "local_20[0]" identifier [ number_literal ]) + number_literal) , (cast_expression "(char **)0x0" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal) , number_literal )))) ;) (expression_statement "param_1[9] = uVar8;" (assignment_expression "param_1[9] = uVar8" (subscript_expression "param_1[9]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar3 = param_1[8];" (assignment_expression "uVar3 = param_1[8]" identifier = (subscript_expression "param_1[8]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)((int)param_1 + 0x6e) = uVar1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x6e) = uVar1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x6e)" * (cast_expression "(undefined1 *)((int)param_1 + 0x6e)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + 0x6e)" ( (binary_expression "(int)param_1 + 0x6e" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }" if (parenthesized_expression "(uVar3 < uVar7)" ( (binary_expression "uVar3 < uVar7" identifier < identifier) )) (compound_statement "{\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }" { (expression_statement "uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);" (assignment_expression "uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)" identifier = (call_expression "dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)" identifier (argument_list "(0,"Found long name index (%ld) beyond end of long name table\n",5)" ( number_literal , (string_literal ""Found long name index (%ld) beyond end of long name table\n"" " string_content escape_sequence ") , number_literal )))) ;) (expression_statement "error(uVar6,uVar7);" (call_expression "error(uVar6,uVar7)" identifier (argument_list "(uVar6,uVar7)" ( identifier , identifier ))) ;) (expression_statement "puVar11 = (undefined4 *)0x0;" (assignment_expression "puVar11 = (undefined4 *)0x0" identifier = (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }" else (compound_statement "{\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }" { (expression_statement "iVar10 = param_1[7];" (assignment_expression "iVar10 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" identifier = identifier) ;) (if_statement "if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }" if (parenthesized_expression "(((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n'))" ( (binary_expression "((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')" (parenthesized_expression "((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0'))" ( (binary_expression "(uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')" (parenthesized_expression "(uVar7 < uVar3)" ( (binary_expression "uVar7 < uVar3" identifier < identifier) )) && (parenthesized_expression "(*(char *)(iVar10 + uVar7) != '\0')" ( (binary_expression "*(char *)(iVar10 + uVar7) != '\0'" (pointer_expression "*(char *)(iVar10 + uVar7)" * (cast_expression "(char *)(iVar10 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar7)" ( (binary_expression "iVar10 + uVar7" identifier + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')" ( (comma_expression "uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n'" (assignment_expression "uVar8 = uVar7" identifier = identifier) , (binary_expression "*(char *)(iVar10 + uVar7) != '\n'" (pointer_expression "*(char *)(iVar10 + uVar7)" * (cast_expression "(char *)(iVar10 + uVar7)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar7)" ( (binary_expression "iVar10 + uVar7" identifier + identifier) )))) != (char_literal "'\n'" ' escape_sequence '))) ))) )) (compound_statement "{\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }" { (do_statement "do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');" do (compound_statement "{\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        }" { (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" identifier = (binary_expression "uVar8 + 1" identifier + number_literal)) ;) (expression_statement "uVar9 = uVar3;" (assignment_expression "uVar9 = uVar3" identifier = identifier) ;) (if_statement "if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;" if (parenthesized_expression "((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n'))" ( (binary_expression "(uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')" (parenthesized_expression "(uVar3 == uVar8)" ( (binary_expression "uVar3 == uVar8" identifier == identifier) )) || (parenthesized_expression "(uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')" ( (comma_expression "uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n'" (assignment_expression "uVar9 = uVar8" identifier = identifier) , (binary_expression "*(char *)(iVar10 + uVar8) == '\n'" (pointer_expression "*(char *)(iVar10 + uVar8)" * (cast_expression "(char *)(iVar10 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar8)" ( (binary_expression "iVar10 + uVar8" identifier + identifier) )))) == (char_literal "'\n'" ' escape_sequence '))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(*(char *)(iVar10 + uVar8) != '\0')" ( (binary_expression "*(char *)(iVar10 + uVar8) != '\0'" (pointer_expression "*(char *)(iVar10 + uVar8)" * (cast_expression "(char *)(iVar10 + uVar8)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar8)" ( (binary_expression "iVar10 + uVar8" identifier + identifier) )))) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }" if (parenthesized_expression "(uVar9 != 0)" ( (binary_expression "uVar9 != 0" identifier != number_literal) )) (compound_statement "{\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }" { (if_statement "if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }" if (parenthesized_expression "(*(char *)(iVar10 + -1 + uVar9) == '/')" ( (binary_expression "*(char *)(iVar10 + -1 + uVar9) == '/'" (pointer_expression "*(char *)(iVar10 + -1 + uVar9)" * (cast_expression "(char *)(iVar10 + -1 + uVar9)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + -1 + uVar9)" ( (binary_expression "iVar10 + -1 + uVar9" (binary_expression "iVar10 + -1" identifier + number_literal) + identifier) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n          uVar9 = uVar9 - 1;\n        }" { (expression_statement "uVar9 = uVar9 - 1;" (assignment_expression "uVar9 = uVar9 - 1" identifier = (binary_expression "uVar9 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }" if (parenthesized_expression "(uVar3 < uVar9)" ( (binary_expression "uVar3 < uVar9" identifier < identifier) )) (compound_statement "{\n          uVar9 = uVar3;\n        }" { (expression_statement "uVar9 = uVar3;" (assignment_expression "uVar9 = uVar3" identifier = identifier) ;) })) })) (expression_statement "*(undefined1 *)(iVar10 + uVar9) = 0;" (assignment_expression "*(undefined1 *)(iVar10 + uVar9) = 0" (pointer_expression "*(undefined1 *)(iVar10 + uVar9)" * (cast_expression "(undefined1 *)(iVar10 + uVar9)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(iVar10 + uVar9)" ( (binary_expression "iVar10 + uVar9" identifier + identifier) )))) = number_literal) ;) (if_statement "if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }" if (parenthesized_expression "((param_1[0xb] == 0) || (param_1[9] == 0))" ( (binary_expression "(param_1[0xb] == 0) || (param_1[9] == 0)" (parenthesized_expression "(param_1[0xb] == 0)" ( (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(param_1[9] == 0)" ( (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }" { (expression_statement "puVar11 = (undefined4 *)(param_1[7] + uVar7);" (assignment_expression "puVar11 = (undefined4 *)(param_1[7] + uVar7)" identifier = (cast_expression "(undefined4 *)(param_1[7] + uVar7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[7] + uVar7)" ( (binary_expression "param_1[7] + uVar7" (subscript_expression "param_1[7]" identifier [ number_literal ]) + identifier) )))) ;) }) (else_clause "else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }" else (compound_statement "{\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }" { (if_statement "if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }" if (parenthesized_expression "(uVar9 <= uVar7)" ( (binary_expression "uVar9 <= uVar7" identifier <= identifier) )) (compound_statement "{\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }" { (expression_statement "pcVar5 = "Invalid Thin archive member name\n";" (assignment_expression "pcVar5 = "Invalid Thin archive member name\n"" identifier = (string_literal ""Invalid Thin archive member name\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_000677e9;" goto statement_identifier ;) })) (expression_statement "__ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);" (assignment_expression "__ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" identifier = (cast_expression "(void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" identifier (argument_list "(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" ( (pointer_expression "*param_1" * identifier) , (binary_expression "param_1[7] + uVar7" (subscript_expression "param_1[7]" identifier [ number_literal ]) + identifier) , (binary_expression "uVar9 - uVar7" identifier - identifier) ))))) ;) (if_statement "if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }" if (parenthesized_expression "(((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           ))" ( (binary_expression "((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )" (parenthesized_expression "((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0))" ( (binary_expression "(__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)" (parenthesized_expression "(__ptr == (void *)0x0)" ( (binary_expression "__ptr == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)" ( (comma_expression "iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0" (assignment_expression "iVar10 = FUN_00067640(param_2,__ptr)" identifier = (call_expression "FUN_00067640(param_2,__ptr)" identifier (argument_list "(param_2,__ptr)" ( identifier , identifier )))) , (binary_expression "iVar10 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "(puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )" ( (comma_expression "puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0" (assignment_expression "puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0)" identifier = (cast_expression "(undefined4 *)FUN_000676c0(param_2,param_1[9],0)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_000676c0(param_2,param_1[9],0)" identifier (argument_list "(param_2,param_1[9],0)" ( identifier , (subscript_expression "param_1[9]" identifier [ number_literal ]) , number_literal ))))) , (binary_expression "puVar11 == (undefined4 *)0x0" identifier == (cast_expression "(undefined4 *)0x0" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (expression_statement "puVar11 = (undefined4 *)(param_1[7] + uVar7);" (assignment_expression "puVar11 = (undefined4 *)(param_1[7] + uVar7)" identifier = (cast_expression "(undefined4 *)(param_1[7] + uVar7)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[7] + uVar7)" ( (binary_expression "param_1[7] + uVar7" (subscript_expression "param_1[7]" identifier [ number_literal ]) + identifier) )))) ;) }) (else_clause "else {\n          free(__ptr);\n        }" else (compound_statement "{\n          free(__ptr);\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) }))) }))) }))) }) (else_clause "else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }" else (compound_statement "{\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }" { (while_statement "while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }" while (parenthesized_expression "(iVar4 = iVar10, iVar4 + 1 != 0x10)" ( (comma_expression "iVar4 = iVar10, iVar4 + 1 != 0x10" (assignment_expression "iVar4 = iVar10" identifier = identifier) , (binary_expression "iVar4 + 1 != 0x10" (binary_expression "iVar4 + 1" identifier + number_literal) != number_literal)) )) (compound_statement "{\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }" { (expression_statement "iVar10 = iVar4 + 1;" (assignment_expression "iVar10 = iVar4 + 1" identifier = (binary_expression "iVar4 + 1" identifier + number_literal)) ;) (if_statement "if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }" if (parenthesized_expression "(*(char *)((int)param_1 + iVar4 + 0x35) == '/')" ( (binary_expression "*(char *)((int)param_1 + iVar4 + 0x35) == '/'" (pointer_expression "*(char *)((int)param_1 + iVar4 + 0x35)" * (cast_expression "(char *)((int)param_1 + iVar4 + 0x35)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + iVar4 + 0x35)" ( (binary_expression "(int)param_1 + iVar4 + 0x35" (binary_expression "(int)param_1 + iVar4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }" { (expression_statement "*(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + iVar4 + 0x35)" * (cast_expression "(undefined1 *)((int)param_1 + iVar4 + 0x35)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((int)param_1 + iVar4 + 0x35)" ( (binary_expression "(int)param_1 + iVar4 + 0x35" (binary_expression "(int)param_1 + iVar4" (cast_expression "(int)param_1" ( (type_descriptor "int" primitive_type) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (return_statement "return param_1 + 0xd;" return (binary_expression "param_1 + 0xd" identifier + number_literal) ;) })) })) (expression_statement "puVar11 = (undefined4 *)FUN_0006b190(0x11);" (assignment_expression "puVar11 = (undefined4 *)FUN_0006b190(0x11)" identifier = (cast_expression "(undefined4 *)FUN_0006b190(0x11)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_0006b190(0x11)" identifier (argument_list "(0x11)" ( number_literal ))))) ;) (expression_statement "uVar6 = param_1[0xd];" (assignment_expression "uVar6 = param_1[0xd]" identifier = (subscript_expression "param_1[0xd]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = param_1[0x10];" (assignment_expression "uVar2 = param_1[0x10]" identifier = (subscript_expression "param_1[0x10]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar11 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar11 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar11 + 4)" * (cast_expression "(undefined1 *)(puVar11 + 4)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar11 + 4)" ( (binary_expression "puVar11 + 4" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar11 = uVar6;" (assignment_expression "*puVar11 = uVar6" (pointer_expression "*puVar11" * identifier) = identifier) ;) (expression_statement "uVar6 = param_1[0xe];" (assignment_expression "uVar6 = param_1[0xe]" identifier = (subscript_expression "param_1[0xe]" identifier [ number_literal ])) ;) (expression_statement "puVar11[3] = uVar2;" (assignment_expression "puVar11[3] = uVar2" (subscript_expression "puVar11[3]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[1] = uVar6;" (assignment_expression "puVar11[1] = uVar6" (subscript_expression "puVar11[1]" identifier [ number_literal ]) = identifier) ;) (expression_statement "puVar11[2] = param_1[0xf];" (assignment_expression "puVar11[2] = param_1[0xf]" (subscript_expression "puVar11[2]" identifier [ number_literal ]) = (subscript_expression "param_1[0xf]" identifier [ number_literal ])) ;) }))) (return_statement "return puVar11;" return identifier ;) })))
(translation_unit (function_definition TYPE (pointer_declarator * (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) )))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator IDENT [ LIT ])) ;) (declaration TYPE IDENT ;) (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_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) )))) == (char_literal ' character ')) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , IDENT , LIT )))) ;)) (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT) ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) ))) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (subscript_expression IDENT [ LIT ])) == (char_literal ' character ')) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) LIT) , LIT )))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) })) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) )))) = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (string_literal " string_content escape_sequence ") , LIT )))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT < IDENT) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) != (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) != (char_literal ' escape_sequence '))) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == IDENT) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) == (char_literal ' escape_sequence '))) ))) )) (break_statement break ;)) }) while (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) != (char_literal ' escape_sequence ')) )) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression IDENT + LIT) + IDENT) )))) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT - LIT)) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) )))) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) }) (else_clause else (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT <= IDENT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (string_literal " string_content escape_sequence ")) ;) (goto_statement goto statement_identifier ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( (pointer_expression * IDENT) , (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) , (binary_expression IDENT - IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) , (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , LIT ))))) , (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT))) ))) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT) )))) ;) }) (else_clause else (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) }))) }))) }))) }) (else_clause else (compound_statement { (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (binary_expression IDENT + LIT) != LIT)) )) (compound_statement { (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 (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) == (char_literal ' character ')) )) (compound_statement { (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + IDENT) + LIT) )))) = LIT) ;) (return_statement return (binary_expression IDENT + LIT) ;) })) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( LIT ))))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (subscript_expression IDENT [ LIT ])) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined4 * FUN_00067770(undefined4 *param_1,undefined4 param_2)\n\n{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  void *__ptr;\n  int iVar10;\n  undefined4 *puVar11;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }\n  return puVar11;\n}" (type_identifier "undefined4") (pointer_declarator "* FUN_00067770(undefined4 *param_1,undefined4 param_2)" (* "*") (function_declarator "FUN_00067770(undefined4 *param_1,undefined4 param_2)" (identifier "FUN_00067770") (parameter_list "(undefined4 *param_1,undefined4 param_2)" (( "(") (parameter_declaration "undefined4 *param_1" (type_identifier "undefined4") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined4 param_2" (type_identifier "undefined4") (identifier "param_2")) () ")")))) (compound_statement "{\n  undefined1 uVar1;\n  undefined4 uVar2;\n  uint uVar3;\n  int iVar4;\n  char *pcVar5;\n  undefined4 uVar6;\n  ulong uVar7;\n  ulong uVar8;\n  uint uVar9;\n  void *__ptr;\n  int iVar10;\n  undefined4 *puVar11;\n  char *local_20 [3];\n  undefined4 uStack_14;\n  \n  uStack_14 = 0x6777b;\n  iVar10 = 0;\n  if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }\n  return puVar11;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "undefined4 uVar2;" (type_identifier "undefined4") (identifier "uVar2") (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "char *pcVar5;" (primitive_type "char") (pointer_declarator "*pcVar5" (* "*") (identifier "pcVar5")) (; ";")) (declaration "undefined4 uVar6;" (type_identifier "undefined4") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "ulong uVar8;" (type_identifier "ulong") (identifier "uVar8") (; ";")) (declaration "uint uVar9;" (type_identifier "uint") (identifier "uVar9") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "int iVar10;" (primitive_type "int") (identifier "iVar10") (; ";")) (declaration "undefined4 *puVar11;" (type_identifier "undefined4") (pointer_declarator "*puVar11" (* "*") (identifier "puVar11")) (; ";")) (declaration "char *local_20 [3];" (primitive_type "char") (pointer_declarator "*local_20 [3]" (* "*") (array_declarator "local_20 [3]" (identifier "local_20") ([ "[") (number_literal "3") (] "]"))) (; ";")) (declaration "undefined4 uStack_14;" (type_identifier "undefined4") (identifier "uStack_14") (; ";")) (expression_statement "uStack_14 = 0x6777b;" (assignment_expression "uStack_14 = 0x6777b" (identifier "uStack_14") (= "=") (number_literal "0x6777b")) (; ";")) (expression_statement "iVar10 = 0;" (assignment_expression "iVar10 = 0" (identifier "iVar10") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(char *)(param_1 + 0xd) == '/') {\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }\n  else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0xd) == '/')" (( "(") (binary_expression "*(char *)(param_1 + 0xd) == '/'" (pointer_expression "*(char *)(param_1 + 0xd)" (* "*") (cast_expression "(char *)(param_1 + 0xd)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xd)" (( "(") (binary_expression "param_1 + 0xd" (identifier "param_1") (+ "+") (number_literal "0xd")) () ")")))) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n    if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);\n    param_1[9] = 0;\n    *(undefined1 *)((int)param_1 + 0x6e) = 0;\n    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);\n    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }\n    uVar3 = param_1[8];\n    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;\n    if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }\n  }" ({ "{") (if_statement "if ((param_1[7] == 0) || (param_1[8] == 0)) {\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }" (if "if") (parenthesized_expression "((param_1[7] == 0) || (param_1[8] == 0))" (( "(") (binary_expression "(param_1[7] == 0) || (param_1[8] == 0)" (parenthesized_expression "(param_1[7] == 0)" (( "(") (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_1[8] == 0)" (( "(") (binary_expression "param_1[8] == 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n      pcVar5 = "Archive member uses long names, but no longname table found\n";\nLAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);\n      error(uVar6);\n      return (undefined4 *)0x0;\n    }" ({ "{") (expression_statement "pcVar5 = "Archive member uses long names, but no longname table found\n";" (assignment_expression "pcVar5 = "Archive member uses long names, but no longname table found\n"" (identifier "pcVar5") (= "=") (string_literal ""Archive member uses long names, but no longname table found\n"" (" """) (string_content "Archive member uses long names, but no longname table found") (escape_sequence "\n") (" """))) (; ";")) (labeled_statement "LAB_000677e9:\n      uVar6 = dcgettext(0,pcVar5,5);" (statement_identifier "LAB_000677e9") (: ":") (expression_statement "uVar6 = dcgettext(0,pcVar5,5);" (assignment_expression "uVar6 = dcgettext(0,pcVar5,5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,pcVar5,5)" (identifier "dcgettext") (argument_list "(0,pcVar5,5)" (( "(") (number_literal "0") (, ",") (identifier "pcVar5") (, ",") (number_literal "5") () ")")))) (; ";"))) (expression_statement "error(uVar6);" (call_expression "error(uVar6)" (identifier "error") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (return_statement "return (undefined4 *)0x0;" (return "return") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "uVar1 = *(undefined1 *)((int)param_1 + 0x6e);" (assignment_expression "uVar1 = *(undefined1 *)((int)param_1 + 0x6e)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined1 *)((int)param_1 + 0x6e)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x6e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x6e)" (( "(") (binary_expression "(int)param_1 + 0x6e" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x6e")) () ")"))))) (; ";")) (expression_statement "param_1[9] = 0;" (assignment_expression "param_1[9] = 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 0x6e) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x6e) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + 0x6e)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x6e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x6e)" (( "(") (binary_expression "(int)param_1 + 0x6e" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x6e")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);" (assignment_expression "uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10)" (identifier "uVar7") (= "=") (call_expression "strtoul((char *)((int)param_1 + 0x35),local_20,10)" (identifier "strtoul") (argument_list "((char *)((int)param_1 + 0x35),local_20,10)" (( "(") (cast_expression "(char *)((int)param_1 + 0x35)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x35)" (( "(") (binary_expression "(int)param_1 + 0x35" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x35")) () ")"))) (, ",") (identifier "local_20") (, ",") (number_literal "10") () ")")))) (; ";")) (if_statement "if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }" (if "if") (parenthesized_expression "(((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':'))" (( "(") (binary_expression "((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')" (parenthesized_expression "((param_1[0xb] != 0) && (local_20[0] != (char *)0x0))" (( "(") (binary_expression "(param_1[0xb] != 0) && (local_20[0] != (char *)0x0)" (parenthesized_expression "(param_1[0xb] != 0)" (( "(") (binary_expression "param_1[0xb] != 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_20[0] != (char *)0x0)" (( "(") (binary_expression "local_20[0] != (char *)0x0" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*local_20[0] == ':')" (( "(") (binary_expression "*local_20[0] == ':'" (pointer_expression "*local_20[0]" (* "*") (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]"))) (== "==") (char_literal "':'" (' "'") (character ":") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);\n      param_1[9] = uVar8;\n    }" ({ "{") (expression_statement "uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);" (assignment_expression "uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10)" (identifier "uVar8") (= "=") (call_expression "strtoul(local_20[0] + 1,(char **)0x0,10)" (identifier "strtoul") (argument_list "(local_20[0] + 1,(char **)0x0,10)" (( "(") (binary_expression "local_20[0] + 1" (subscript_expression "local_20[0]" (identifier "local_20") ([ "[") (number_literal "0") (] "]")) (+ "+") (number_literal "1")) (, ",") (cast_expression "(char **)0x0" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (number_literal "0x0")) (, ",") (number_literal "10") () ")")))) (; ";")) (expression_statement "param_1[9] = uVar8;" (assignment_expression "param_1[9] = uVar8" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (= "=") (identifier "uVar8")) (; ";")) (} "}"))) (expression_statement "uVar3 = param_1[8];" (assignment_expression "uVar3 = param_1[8]" (identifier "uVar3") (= "=") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((int)param_1 + 0x6e) = uVar1;" (assignment_expression "*(undefined1 *)((int)param_1 + 0x6e) = uVar1" (pointer_expression "*(undefined1 *)((int)param_1 + 0x6e)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + 0x6e)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + 0x6e)" (( "(") (binary_expression "(int)param_1 + 0x6e" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (number_literal "0x6e")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (uVar3 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }\n    else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }" (if "if") (parenthesized_expression "(uVar3 < uVar7)" (( "(") (binary_expression "uVar3 < uVar7" (identifier "uVar3") (< "<") (identifier "uVar7")) () ")")) (compound_statement "{\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar11 = (undefined4 *)0x0;\n    }" ({ "{") (expression_statement "uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);" (assignment_expression "uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)" (identifier "dcgettext") (argument_list "(0,"Found long name index (%ld) beyond end of long name table\n",5)" (( "(") (number_literal "0") (, ",") (string_literal ""Found long name index (%ld) beyond end of long name table\n"" (" """) (string_content "Found long name index (%ld) beyond end of long name table") (escape_sequence "\n") (" """)) (, ",") (number_literal "5") () ")")))) (; ";")) (expression_statement "error(uVar6,uVar7);" (call_expression "error(uVar6,uVar7)" (identifier "error") (argument_list "(uVar6,uVar7)" (( "(") (identifier "uVar6") (, ",") (identifier "uVar7") () ")"))) (; ";")) (expression_statement "puVar11 = (undefined4 *)0x0;" (assignment_expression "puVar11 = (undefined4 *)0x0" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }" (else "else") (compound_statement "{\n      iVar10 = param_1[7];\n      uVar9 = uVar7;\n      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }\n      if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }\n      *(undefined1 *)(iVar10 + uVar9) = 0;\n      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }\n    }" ({ "{") (expression_statement "iVar10 = param_1[7];" (assignment_expression "iVar10 = param_1[7]" (identifier "iVar10") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "uVar9 = uVar7;" (assignment_expression "uVar9 = uVar7" (identifier "uVar9") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }" (if "if") (parenthesized_expression "(((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n'))" (( "(") (binary_expression "((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&\n         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')" (parenthesized_expression "((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0'))" (( "(") (binary_expression "(uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')" (parenthesized_expression "(uVar7 < uVar3)" (( "(") (binary_expression "uVar7 < uVar3" (identifier "uVar7") (< "<") (identifier "uVar3")) () ")")) (&& "&&") (parenthesized_expression "(*(char *)(iVar10 + uVar7) != '\0')" (( "(") (binary_expression "*(char *)(iVar10 + uVar7) != '\0'" (pointer_expression "*(char *)(iVar10 + uVar7)" (* "*") (cast_expression "(char *)(iVar10 + uVar7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar7)" (( "(") (binary_expression "iVar10 + uVar7" (identifier "iVar10") (+ "+") (identifier "uVar7")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')" (( "(") (comma_expression "uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n'" (assignment_expression "uVar8 = uVar7" (identifier "uVar8") (= "=") (identifier "uVar7")) (, ",") (binary_expression "*(char *)(iVar10 + uVar7) != '\n'" (pointer_expression "*(char *)(iVar10 + uVar7)" (* "*") (cast_expression "(char *)(iVar10 + uVar7)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar7)" (( "(") (binary_expression "iVar10 + uVar7" (identifier "iVar10") (+ "+") (identifier "uVar7")) () ")")))) (!= "!=") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'")))) () ")"))) () ")")) (compound_statement "{\n        do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');\n      }" ({ "{") (do_statement "do {\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        } while (*(char *)(iVar10 + uVar8) != '\0');" (do "do") (compound_statement "{\n          uVar8 = uVar8 + 1;\n          uVar9 = uVar3;\n          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;\n        }" ({ "{") (expression_statement "uVar8 = uVar8 + 1;" (assignment_expression "uVar8 = uVar8 + 1" (identifier "uVar8") (= "=") (binary_expression "uVar8 + 1" (identifier "uVar8") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar9 = uVar3;" (assignment_expression "uVar9 = uVar3" (identifier "uVar9") (= "=") (identifier "uVar3")) (; ";")) (if_statement "if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;" (if "if") (parenthesized_expression "((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n'))" (( "(") (binary_expression "(uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')" (parenthesized_expression "(uVar3 == uVar8)" (( "(") (binary_expression "uVar3 == uVar8" (identifier "uVar3") (== "==") (identifier "uVar8")) () ")")) (|| "||") (parenthesized_expression "(uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')" (( "(") (comma_expression "uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n'" (assignment_expression "uVar9 = uVar8" (identifier "uVar9") (= "=") (identifier "uVar8")) (, ",") (binary_expression "*(char *)(iVar10 + uVar8) == '\n'" (pointer_expression "*(char *)(iVar10 + uVar8)" (* "*") (cast_expression "(char *)(iVar10 + uVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar8)" (( "(") (binary_expression "iVar10 + uVar8" (identifier "iVar10") (+ "+") (identifier "uVar8")) () ")")))) (== "==") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(*(char *)(iVar10 + uVar8) != '\0')" (( "(") (binary_expression "*(char *)(iVar10 + uVar8) != '\0'" (pointer_expression "*(char *)(iVar10 + uVar8)" (* "*") (cast_expression "(char *)(iVar10 + uVar8)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar8)" (( "(") (binary_expression "iVar10 + uVar8" (identifier "iVar10") (+ "+") (identifier "uVar8")) () ")")))) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar9 != 0) {\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }" (if "if") (parenthesized_expression "(uVar9 != 0)" (( "(") (binary_expression "uVar9 != 0" (identifier "uVar9") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }\n        if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }\n      }" ({ "{") (if_statement "if (*(char *)(iVar10 + -1 + uVar9) == '/') {\n          uVar9 = uVar9 - 1;\n        }" (if "if") (parenthesized_expression "(*(char *)(iVar10 + -1 + uVar9) == '/')" (( "(") (binary_expression "*(char *)(iVar10 + -1 + uVar9) == '/'" (pointer_expression "*(char *)(iVar10 + -1 + uVar9)" (* "*") (cast_expression "(char *)(iVar10 + -1 + uVar9)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + -1 + uVar9)" (( "(") (binary_expression "iVar10 + -1 + uVar9" (binary_expression "iVar10 + -1" (identifier "iVar10") (+ "+") (number_literal "-1")) (+ "+") (identifier "uVar9")) () ")")))) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n          uVar9 = uVar9 - 1;\n        }" ({ "{") (expression_statement "uVar9 = uVar9 - 1;" (assignment_expression "uVar9 = uVar9 - 1" (identifier "uVar9") (= "=") (binary_expression "uVar9 - 1" (identifier "uVar9") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (uVar3 < uVar9) {\n          uVar9 = uVar3;\n        }" (if "if") (parenthesized_expression "(uVar3 < uVar9)" (( "(") (binary_expression "uVar3 < uVar9" (identifier "uVar3") (< "<") (identifier "uVar9")) () ")")) (compound_statement "{\n          uVar9 = uVar3;\n        }" ({ "{") (expression_statement "uVar9 = uVar3;" (assignment_expression "uVar9 = uVar3" (identifier "uVar9") (= "=") (identifier "uVar3")) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined1 *)(iVar10 + uVar9) = 0;" (assignment_expression "*(undefined1 *)(iVar10 + uVar9) = 0" (pointer_expression "*(undefined1 *)(iVar10 + uVar9)" (* "*") (cast_expression "(undefined1 *)(iVar10 + uVar9)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(iVar10 + uVar9)" (( "(") (binary_expression "iVar10 + uVar9" (identifier "iVar10") (+ "+") (identifier "uVar9")) () ")")))) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((param_1[0xb] == 0) || (param_1[9] == 0)) {\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }\n      else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }" (if "if") (parenthesized_expression "((param_1[0xb] == 0) || (param_1[9] == 0))" (( "(") (binary_expression "(param_1[0xb] == 0) || (param_1[9] == 0)" (parenthesized_expression "(param_1[0xb] == 0)" (( "(") (binary_expression "param_1[0xb] == 0" (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]")) (== "==") (number_literal "0")) () ")")) (|| "||") (parenthesized_expression "(param_1[9] == 0)" (( "(") (binary_expression "param_1[9] == 0" (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")")) (compound_statement "{\n        puVar11 = (undefined4 *)(param_1[7] + uVar7);\n      }" ({ "{") (expression_statement "puVar11 = (undefined4 *)(param_1[7] + uVar7);" (assignment_expression "puVar11 = (undefined4 *)(param_1[7] + uVar7)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)(param_1[7] + uVar7)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[7] + uVar7)" (( "(") (binary_expression "param_1[7] + uVar7" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (+ "+") (identifier "uVar7")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }" (else "else") (compound_statement "{\n        if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }\n        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);\n        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }\n      }" ({ "{") (if_statement "if (uVar9 <= uVar7) {\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }" (if "if") (parenthesized_expression "(uVar9 <= uVar7)" (( "(") (binary_expression "uVar9 <= uVar7" (identifier "uVar9") (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n          pcVar5 = "Invalid Thin archive member name\n";\n          goto LAB_000677e9;\n        }" ({ "{") (expression_statement "pcVar5 = "Invalid Thin archive member name\n";" (assignment_expression "pcVar5 = "Invalid Thin archive member name\n"" (identifier "pcVar5") (= "=") (string_literal ""Invalid Thin archive member name\n"" (" """) (string_content "Invalid Thin archive member name") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto LAB_000677e9;" (goto "goto") (statement_identifier "LAB_000677e9") (; ";")) (} "}"))) (expression_statement "__ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);" (assignment_expression "__ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" (identifier "__ptr") (= "=") (cast_expression "(void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" (identifier "FUN_00067180") (argument_list "(*param_1,param_1[7] + uVar7,uVar9 - uVar7)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (binary_expression "param_1[7] + uVar7" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (+ "+") (identifier "uVar7")) (, ",") (binary_expression "uVar9 - uVar7" (identifier "uVar9") (- "-") (identifier "uVar7")) () ")"))))) (; ";")) (if_statement "if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )) {\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }\n        else {\n          free(__ptr);\n        }" (if "if") (parenthesized_expression "(((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           ))" (( "(") (binary_expression "((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||\n           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )" (parenthesized_expression "((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0))" (( "(") (binary_expression "(__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)" (parenthesized_expression "(__ptr == (void *)0x0)" (( "(") (binary_expression "__ptr == (void *)0x0" (identifier "__ptr") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)" (( "(") (comma_expression "iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0" (assignment_expression "iVar10 = FUN_00067640(param_2,__ptr)" (identifier "iVar10") (= "=") (call_expression "FUN_00067640(param_2,__ptr)" (identifier "FUN_00067640") (argument_list "(param_2,__ptr)" (( "(") (identifier "param_2") (, ",") (identifier "__ptr") () ")")))) (, ",") (binary_expression "iVar10 != 0" (identifier "iVar10") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0\n           )" (( "(") (comma_expression "puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0" (assignment_expression "puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)FUN_000676c0(param_2,param_1[9],0)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_000676c0(param_2,param_1[9],0)" (identifier "FUN_000676c0") (argument_list "(param_2,param_1[9],0)" (( "(") (identifier "param_2") (, ",") (subscript_expression "param_1[9]" (identifier "param_1") ([ "[") (number_literal "9") (] "]")) (, ",") (number_literal "0") () ")"))))) (, ",") (binary_expression "puVar11 == (undefined4 *)0x0" (identifier "puVar11") (== "==") (cast_expression "(undefined4 *)0x0" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n          free(__ptr);\n          puVar11 = (undefined4 *)(param_1[7] + uVar7);\n        }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (expression_statement "puVar11 = (undefined4 *)(param_1[7] + uVar7);" (assignment_expression "puVar11 = (undefined4 *)(param_1[7] + uVar7)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)(param_1[7] + uVar7)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[7] + uVar7)" (( "(") (binary_expression "param_1[7] + uVar7" (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]")) (+ "+") (identifier "uVar7")) () ")")))) (; ";")) (} "}")) (else_clause "else {\n          free(__ptr);\n        }" (else "else") (compound_statement "{\n          free(__ptr);\n        }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (} "}")))) (} "}")))) (} "}")))) (} "}")) (else_clause "else {\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }" (else "else") (compound_statement "{\n    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }\n    puVar11 = (undefined4 *)FUN_0006b190(0x11);\n    uVar6 = param_1[0xd];\n    uVar2 = param_1[0x10];\n    *(undefined1 *)(puVar11 + 4) = 0;\n    *puVar11 = uVar6;\n    uVar6 = param_1[0xe];\n    puVar11[3] = uVar2;\n    puVar11[1] = uVar6;\n    puVar11[2] = param_1[0xf];\n  }" ({ "{") (while_statement "while (iVar4 = iVar10, iVar4 + 1 != 0x10) {\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }" (while "while") (parenthesized_expression "(iVar4 = iVar10, iVar4 + 1 != 0x10)" (( "(") (comma_expression "iVar4 = iVar10, iVar4 + 1 != 0x10" (assignment_expression "iVar4 = iVar10" (identifier "iVar4") (= "=") (identifier "iVar10")) (, ",") (binary_expression "iVar4 + 1 != 0x10" (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0x10"))) () ")")) (compound_statement "{\n      iVar10 = iVar4 + 1;\n      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }\n    }" ({ "{") (expression_statement "iVar10 = iVar4 + 1;" (assignment_expression "iVar10 = iVar4 + 1" (identifier "iVar10") (= "=") (binary_expression "iVar4 + 1" (identifier "iVar4") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }" (if "if") (parenthesized_expression "(*(char *)((int)param_1 + iVar4 + 0x35) == '/')" (( "(") (binary_expression "*(char *)((int)param_1 + iVar4 + 0x35) == '/'" (pointer_expression "*(char *)((int)param_1 + iVar4 + 0x35)" (* "*") (cast_expression "(char *)((int)param_1 + iVar4 + 0x35)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + iVar4 + 0x35)" (( "(") (binary_expression "(int)param_1 + iVar4 + 0x35" (binary_expression "(int)param_1 + iVar4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (identifier "iVar4")) (+ "+") (number_literal "0x35")) () ")")))) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;\n        return param_1 + 0xd;\n      }" ({ "{") (expression_statement "*(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;" (assignment_expression "*(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0" (pointer_expression "*(undefined1 *)((int)param_1 + iVar4 + 0x35)" (* "*") (cast_expression "(undefined1 *)((int)param_1 + iVar4 + 0x35)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((int)param_1 + iVar4 + 0x35)" (( "(") (binary_expression "(int)param_1 + iVar4 + 0x35" (binary_expression "(int)param_1 + iVar4" (cast_expression "(int)param_1" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_1")) (+ "+") (identifier "iVar4")) (+ "+") (number_literal "0x35")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return param_1 + 0xd;" (return "return") (binary_expression "param_1 + 0xd" (identifier "param_1") (+ "+") (number_literal "0xd")) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar11 = (undefined4 *)FUN_0006b190(0x11);" (assignment_expression "puVar11 = (undefined4 *)FUN_0006b190(0x11)" (identifier "puVar11") (= "=") (cast_expression "(undefined4 *)FUN_0006b190(0x11)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_0006b190(0x11)" (identifier "FUN_0006b190") (argument_list "(0x11)" (( "(") (number_literal "0x11") () ")"))))) (; ";")) (expression_statement "uVar6 = param_1[0xd];" (assignment_expression "uVar6 = param_1[0xd]" (identifier "uVar6") (= "=") (subscript_expression "param_1[0xd]" (identifier "param_1") ([ "[") (number_literal "0xd") (] "]"))) (; ";")) (expression_statement "uVar2 = param_1[0x10];" (assignment_expression "uVar2 = param_1[0x10]" (identifier "uVar2") (= "=") (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(puVar11 + 4) = 0;" (assignment_expression "*(undefined1 *)(puVar11 + 4) = 0" (pointer_expression "*(undefined1 *)(puVar11 + 4)" (* "*") (cast_expression "(undefined1 *)(puVar11 + 4)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar11 + 4)" (( "(") (binary_expression "puVar11 + 4" (identifier "puVar11") (+ "+") (number_literal "4")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar11 = uVar6;" (assignment_expression "*puVar11 = uVar6" (pointer_expression "*puVar11" (* "*") (identifier "puVar11")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "uVar6 = param_1[0xe];" (assignment_expression "uVar6 = param_1[0xe]" (identifier "uVar6") (= "=") (subscript_expression "param_1[0xe]" (identifier "param_1") ([ "[") (number_literal "0xe") (] "]"))) (; ";")) (expression_statement "puVar11[3] = uVar2;" (assignment_expression "puVar11[3] = uVar2" (subscript_expression "puVar11[3]" (identifier "puVar11") ([ "[") (number_literal "3") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (expression_statement "puVar11[1] = uVar6;" (assignment_expression "puVar11[1] = uVar6" (subscript_expression "puVar11[1]" (identifier "puVar11") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar11[2] = param_1[0xf];" (assignment_expression "puVar11[2] = param_1[0xf]" (subscript_expression "puVar11[2]" (identifier "puVar11") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_1[0xf]" (identifier "param_1") ([ "[") (number_literal "0xf") (] "]"))) (; ";")) (} "}")))) (return_statement "return puVar11;" (return "return") (identifier "puVar11") (; ";")) (} "}")))

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

char * function_1(type_1 *arch,type_1 *nested_arch)

{
  char cVar1;
  type_2 uVar2;
  type_2 uVar3;
  type_3 var_5;
  int var_16;
  char *var_14;
  type_4 var_6;
  type_4 var_7;
  type_3 var_8;
  char *var_10;
  int var_12;
  char *var_4;
  type_2 uStack_14;
  
  uStack_14 = 0x6777b;
  var_12 = 0;
  if ((arch->arhdr).ar_name[0] == '/') {
    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {
      var_14 = "Archive member uses long names, but no longname table found\n";
LAB_000677e9:
      var_14 = (char *)var_1(0,var_14,5);
      var_2(var_14);
      return (char *)0x0;
    }
    cVar1 = (arch->arhdr).ar_fmag[0];
    arch->nested_member_origin = 0;
    (arch->arhdr).ar_fmag[0] = '\0';
    var_6 = var_3((arch->arhdr).ar_name + 1,&var_4,10);
    if (((arch->is_thin_archive != 0) && (var_4 != (char *)0x0)) && (*var_4 == ':')) {
      var_7 = var_3(var_4 + 1,(char **)0x0,10);
      arch->nested_member_origin = var_7;
    }
    var_5 = arch->longnames_size;
    (arch->arhdr).ar_fmag[0] = cVar1;
    if (var_5 < var_6) {
      var_14 = (char *)var_1(0,"Found long name index (%ld) beyond end of long name table\n",5);
      var_2(var_14,var_6);
      var_14 = (char *)0x0;
    }
    else {
      var_14 = arch->longnames;
      var_8 = var_6;
      if (((var_6 < var_5) && (var_14[var_6] != '\0')) && (var_7 = var_6, var_14[var_6] != '\n')) {
        do {
          var_7 = var_7 + 1;
          var_8 = var_5;
          if ((var_5 == var_7) || (var_8 = var_7, var_14[var_7] == '\n')) break;
        } while (var_14[var_7] != '\0');
      }
      if (var_8 != 0) {
        if (var_14[var_8 - 1] == '/') {
          var_8 = var_8 - 1;
        }
        if (var_5 < var_8) {
          var_8 = var_5;
        }
      }
      var_14[var_8] = '\0';
      if ((arch->is_thin_archive == 0) || (arch->nested_member_origin == 0)) {
        var_14 = arch->longnames + var_6;
      }
      else {
        if (var_8 <= var_6) {
          var_14 = "Invalid Thin archive member name\n";
          goto LAB_000677e9;
        }
        var_10 =
             var_9(arch->file_name,arch->longnames + var_6,var_8 - var_6);
        if (((var_10 == (char *)0x0) ||
            (var_12 = var_11(nested_arch,var_10), var_12 != 0)) ||
           (var_14 = var_13
                               (nested_arch,arch->nested_member_origin,(type_1 *)0x0),
           var_14 == (char *)0x0)) {
          var_15(var_10);
          var_14 = arch->longnames + var_6;
        }
        else {
          var_15(var_10);
        }
      }
    }
  }
  else {
    while (var_16 = var_12, var_16 + 1 != 0x10) {
      var_12 = var_16 + 1;
      if ((arch->arhdr).ar_name[var_16 + 1] == '/') {
        (arch->arhdr).ar_name[var_16 + 1] = '\0';
        return (arch->arhdr).ar_name;
      }
    }
    var_14 = (char *)var_17(0x11);
    uVar2 = *(type_2 *)(arch->arhdr).ar_name;
    uVar3 = *(type_2 *)((arch->arhdr).ar_name + 0xc);
    var_14[0x10] = '\0';
    *(type_2 *)var_14 = uVar2;
    uVar2 = *(type_2 *)((arch->arhdr).ar_name + 4);
    *(type_2 *)(var_14 + 0xc) = uVar3;
    *(type_2 *)(var_14 + 4) = uVar2;
    *(type_2 *)(var_14 + 8) = *(type_2 *)((arch->arhdr).ar_name + 8);
  }
  return var_14;
}


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

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

undefined4 * MASKED(undefined4 *param_1,undefined4 param_2)

{
  undefined1 uVar1;
  undefined4 uVar2;
  uint uVar3;
  int iVar4;
  char *pcVar5;
  undefined4 uVar6;
  ulong uVar7;
  ulong uVar8;
  uint uVar9;
  void *__ptr;
  int iVar10;
  undefined4 *puVar11;
  char *local_20 [3];
  undefined4 uStack_14;
  
  uStack_14 = 0x6777b;
  iVar10 = 0;
  if (*(char *)(param_1 + 0xd) == '/') {
    if ((param_1[7] == 0) || (param_1[8] == 0)) {
      pcVar5 = "Archive member uses long names, but no longname table found\n";
LAB_000677e9:
      uVar6 = dcgettext(0,pcVar5,5);
      error(uVar6);
      return (undefined4 *)0x0;
    }
    uVar1 = *(undefined1 *)((int)param_1 + 0x6e);
    param_1[9] = 0;
    *(undefined1 *)((int)param_1 + 0x6e) = 0;
    uVar7 = strtoul((char *)((int)param_1 + 0x35),local_20,10);
    if (((param_1[0xb] != 0) && (local_20[0] != (char *)0x0)) && (*local_20[0] == ':')) {
      uVar8 = strtoul(local_20[0] + 1,(char **)0x0,10);
      param_1[9] = uVar8;
    }
    uVar3 = param_1[8];
    *(undefined1 *)((int)param_1 + 0x6e) = uVar1;
    if (uVar3 < uVar7) {
      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);
      error(uVar6,uVar7);
      puVar11 = (undefined4 *)0x0;
    }
    else {
      iVar10 = param_1[7];
      uVar9 = uVar7;
      if (((uVar7 < uVar3) && (*(char *)(iVar10 + uVar7) != '\0')) &&
         (uVar8 = uVar7, *(char *)(iVar10 + uVar7) != '\n')) {
        do {
          uVar8 = uVar8 + 1;
          uVar9 = uVar3;
          if ((uVar3 == uVar8) || (uVar9 = uVar8, *(char *)(iVar10 + uVar8) == '\n')) break;
        } while (*(char *)(iVar10 + uVar8) != '\0');
      }
      if (uVar9 != 0) {
        if (*(char *)(iVar10 + -1 + uVar9) == '/') {
          uVar9 = uVar9 - 1;
        }
        if (uVar3 < uVar9) {
          uVar9 = uVar3;
        }
      }
      *(undefined1 *)(iVar10 + uVar9) = 0;
      if ((param_1[0xb] == 0) || (param_1[9] == 0)) {
        puVar11 = (undefined4 *)(param_1[7] + uVar7);
      }
      else {
        if (uVar9 <= uVar7) {
          pcVar5 = "Invalid Thin archive member name\n";
          goto LAB_000677e9;
        }
        __ptr = (void *)FUN_00067180(*param_1,param_1[7] + uVar7,uVar9 - uVar7);
        if (((__ptr == (void *)0x0) || (iVar10 = FUN_00067640(param_2,__ptr), iVar10 != 0)) ||
           (puVar11 = (undefined4 *)FUN_000676c0(param_2,param_1[9],0), puVar11 == (undefined4 *)0x0
           )) {
          free(__ptr);
          puVar11 = (undefined4 *)(param_1[7] + uVar7);
        }
        else {
          free(__ptr);
        }
      }
    }
  }
  else {
    while (iVar4 = iVar10, iVar4 + 1 != 0x10) {
      iVar10 = iVar4 + 1;
      if (*(char *)((int)param_1 + iVar4 + 0x35) == '/') {
        *(undefined1 *)((int)param_1 + iVar4 + 0x35) = 0;
        return param_1 + 0xd;
      }
    }
    puVar11 = (undefined4 *)FUN_0006b190(0x11);
    uVar6 = param_1[0xd];
    uVar2 = param_1[0x10];
    *(undefined1 *)(puVar11 + 4) = 0;
    *puVar11 = uVar6;
    uVar6 = param_1[0xe];
    puVar11[3] = uVar2;
    puVar11[1] = uVar6;
    puVar11[2] = param_1[0xf];
  }
  return puVar11;
}

