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

{
  char cVar1;
  undefined8 uVar2;
  undefined8 uVar3;
  long lVar4;
  int iVar5;
  long lVar6;
  ulong uVar7;
  char *pcVar8;
  ulong uVar9;
  ulong uVar10;
  ulong uVar11;
  char *pcVar12;
  char *endp;
  
  lVar4 = 0;
  if ((arch->arhdr).ar_name[0] == '/') {
    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {
      pcVar12 = "Archive member uses long names, but no longname table found\n";
LAB_00104585:
      pcVar12 = (char *)dcgettext(0,pcVar12,5);
      error(pcVar12);
      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 == ':')) {
      uVar9 = strtoul(endp + 1,(char **)0x0,10);
      arch->nested_member_origin = uVar9;
    }
    uVar9 = arch->longnames_size;
    (arch->arhdr).ar_fmag[0] = cVar1;
    if (uVar9 < uVar7) {
      pcVar12 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)
      ;
      error(pcVar12,uVar7);
      pcVar12 = (char *)0x0;
    }
    else {
      pcVar12 = arch->longnames;
      uVar11 = uVar7;
      if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))
      {
        do {
          uVar10 = uVar10 + 1;
          uVar11 = uVar9;
          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;
        } while (pcVar12[uVar10] != '\0');
      }
      if (uVar11 != 0) {
        if (pcVar12[uVar11 - 1] == '/') {
          uVar11 = uVar11 - 1;
        }
        if (uVar9 < uVar11) {
          uVar11 = uVar9;
        }
        pcVar12 = pcVar12 + uVar11;
      }
      *pcVar12 = '\0';
      if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {
        if (uVar11 <= uVar7) {
          pcVar12 = "Invalid Thin archive member name\n";
          goto LAB_00104585;
        }
        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);
        if (((pcVar12 != (char *)0x0) &&
            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&
           (pcVar8 = get_archive_member_name_at
                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),
           pcVar8 != (char *)0x0)) {
          free(pcVar12);
          return pcVar8;
        }
        free(pcVar12);
      }
      pcVar12 = arch->longnames + uVar7;
    }
  }
  else {
    while (lVar6 = lVar4, lVar6 + 1 != 0x10) {
      lVar4 = lVar6 + 1;
      if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {
        (arch->arhdr).ar_name[lVar6 + 1] = '\0';
        return (arch->arhdr).ar_name;
      }
    }
    pcVar12 = (char *)xmalloc(0x11);
    uVar2 = *(undefined8 *)(arch->arhdr).ar_name;
    uVar3 = *(undefined8 *)((arch->arhdr).ar_name + 8);
    pcVar12[0x10] = '\0';
    *(undefined8 *)pcVar12 = uVar2;
    *(undefined8 *)(pcVar12 + 8) = uVar3;
  }
  return pcVar12;
}



undefined8 * FUN_00104510(undefined8 *param_1,undefined8 param_2)

{
  undefined1 uVar1;
  undefined8 uVar2;
  long lVar3;
  int iVar4;
  long lVar5;
  undefined8 uVar6;
  ulong uVar7;
  void *__ptr;
  undefined8 *puVar8;
  ulong uVar9;
  undefined1 *puVar10;
  ulong uVar11;
  ulong uVar12;
  char *pcVar13;
  char *local_30 [2];
  
  lVar3 = 0;
  if (*(char *)(param_1 + 0xb) == '/') {
    if ((param_1[6] == 0) || (param_1[7] == 0)) {
      pcVar13 = "Archive member uses long names, but no longname table found\n";
LAB_00104585:
      uVar6 = dcgettext(0,pcVar13,5);
      error(uVar6);
      return (undefined8 *)0x0;
    }
    uVar1 = *(undefined1 *)((long)param_1 + 0x92);
    param_1[8] = 0;
    *(undefined1 *)((long)param_1 + 0x92) = 0;
    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);
    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {
      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);
      param_1[8] = uVar9;
    }
    uVar9 = param_1[7];
    *(undefined1 *)((long)param_1 + 0x92) = uVar1;
    if (uVar9 < uVar7) {
      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);
      error(uVar6,uVar7);
      puVar8 = (undefined8 *)0x0;
    }
    else {
      puVar10 = (undefined1 *)param_1[6];
      uVar12 = uVar7;
      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))
      {
        do {
          uVar11 = uVar11 + 1;
          uVar12 = uVar9;
          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;
        } while (puVar10[uVar11] != '\0');
      }
      if (uVar12 != 0) {
        if (puVar10[uVar12 - 1] == '/') {
          uVar12 = uVar12 - 1;
        }
        if (uVar9 < uVar12) {
          uVar12 = uVar9;
        }
        puVar10 = puVar10 + uVar12;
      }
      *puVar10 = 0;
      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {
        if (uVar12 <= uVar7) {
          pcVar13 = "Invalid Thin archive member name\n";
          goto LAB_00104585;
        }
        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);
        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&
           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))
        {
          free(__ptr);
          return puVar8;
        }
        free(__ptr);
      }
      puVar8 = (undefined8 *)(param_1[6] + uVar7);
    }
  }
  else {
    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {
      lVar3 = lVar5 + 1;
      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {
        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;
        return param_1 + 0xb;
      }
    }
    puVar8 = (undefined8 *)FUN_00105220(0x11);
    uVar6 = param_1[0xb];
    uVar2 = param_1[0xc];
    *(undefined1 *)(puVar8 + 2) = 0;
    *puVar8 = uVar6;
    puVar8[1] = uVar2;
  }
  return puVar8;
}


PUSH R13
XOR EAX,EAX
PUSH R12
PUSH RBP
PUSH RBX
MOV RBX,RDI
SUB RSP,0x28
CMP byte ptr [RDI + 0x58],0x2f
JNZ 0x00104537
JMP 0x00104568
CMP byte ptr [RBX + RAX*0x1 + 0x58],0x2f
JZ 0x001045a8
ADD RAX,0x1
CMP RAX,0x10
JNZ 0x00104530
MOV EDI,0x11
CALL 0x00105220
MOVDQU XMM0,xmmword ptr [RBX + 0x58]
MOV byte ptr [RAX + 0x10],0x0
MOVUPS xmmword ptr [RAX],XMM0
ADD RSP,0x28
POP RBX
POP RBP
POP R12
POP R13
RET
CMP qword ptr [RDI + 0x30],0x0
MOV RBP,RSI
JZ 0x00104579
CMP qword ptr [RDI + 0x38],0x0
JNZ 0x001045c0
MOV EDX,0x5
LEA RSI,[0x106e70]
XOR EDI,EDI
CALL 0x001020c0
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00103650
ADD RSP,0x28
XOR EAX,EAX
POP RBX
POP RBP
POP R12
POP R13
RET
MOV byte ptr [RBX + RAX*0x1 + 0x58],0x0
ADD RSP,0x28
LEA RAX,[RBX + 0x58]
POP RBX
POP RBP
POP R12
POP R13
RET
MOV EDX,0xa
LEA RSI,[RSP + 0x18]
LEA RDI,[RDI + 0x59]
MOVZX R13D,byte ptr [RDI + 0x39]
MOV qword ptr [RDI + -0x19],0x0
MOV byte ptr [RDI + 0x39],0x0
CALL 0x00102220
MOV EDX,dword ptr [RBX + 0x50]
MOV R12,RAX
TEST EDX,EDX
JZ 0x00104601
MOV RAX,qword ptr [RSP + 0x18]
TEST RAX,RAX
JZ 0x00104601
CMP byte ptr [RAX],0x3a
JZ 0x00104702
MOV RSI,qword ptr [RBX + 0x38]
MOV byte ptr [RBX + 0x92],R13B
CMP R12,RSI
JA 0x0010471b
MOV RCX,qword ptr [RBX + 0x30]
JNC 0x00104742
MOVZX EAX,byte ptr [RCX + R12*0x1]
TEST AL,AL
JZ 0x00104742
MOV RDX,R12
CMP AL,0xa
JNZ 0x0010464c
JMP 0x00104742
MOVZX EAX,byte ptr [RCX + RDX*0x1]
CMP AL,0xa
JZ 0x00104658
TEST AL,AL
JZ 0x00104658
ADD RDX,0x1
CMP RSI,RDX
JNZ 0x00104640
MOV RDX,RSI
TEST RDX,RDX
JZ 0x00104674
CMP byte ptr [RCX + RDX*0x1 + -0x1],0x2f
LEA RAX,[RDX + -0x1]
CMOVZ RDX,RAX
CMP RDX,RSI
CMOVA RDX,RSI
ADD RCX,RDX
MOV byte ptr [RCX],0x0
MOV EAX,dword ptr [RBX + 0x50]
TEST EAX,EAX
JZ 0x001046e5
CMP qword ptr [RBX + 0x40],0x0
JZ 0x001046e5
CMP R12,RDX
JNC 0x001046f1
MOV RSI,qword ptr [RBX + 0x30]
MOV RDI,qword ptr [RBX]
SUB RDX,R12
ADD RSI,R12
CALL 0x00103f60
MOV R13,RAX
TEST RAX,RAX
JZ 0x001046dd
MOV RSI,RAX
MOV RDI,RBP
CALL 0x001043e0
TEST EAX,EAX
JNZ 0x001046dd
MOV RSI,qword ptr [RBX + 0x40]
XOR EDX,EDX
MOV RDI,RBP
CALL 0x00104450
TEST RAX,RAX
MOV qword ptr [RSP + 0x8],RAX
JZ 0x001046dd
MOV RDI,R13
CALL 0x00102030
MOV RAX,qword ptr [RSP + 0x8]
JMP 0x00104557
MOV RDI,R13
CALL 0x00102030
MOV RAX,qword ptr [RBX + 0x30]
ADD RAX,R12
JMP 0x00104557
MOV EDX,0x5
LEA RSI,[0x106ef0]
JMP 0x00104585
LEA RDI,[RAX + 0x1]
MOV EDX,0xa
XOR ESI,ESI
CALL 0x00102220
MOV qword ptr [RBX + 0x40],RAX
JMP 0x00104601
MOV EDX,0x5
LEA RSI,[0x106eb0]
XOR EDI,EDI
CALL 0x001020c0
MOV RSI,R12
MOV RDI,RAX
XOR EAX,EAX
CALL 0x00103650
XOR EAX,EAX
JMP 0x00104557
MOV RDX,R12
JMP 0x00104658
(translation_unit "undefined8 * FUN_00104510(undefined8 *param_1,undefined8 param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  void *__ptr;\n  undefined8 *puVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  ulong uVar11;\n  ulong uVar12;\n  char *pcVar13;\n  char *local_30 [2];\n  \n  lVar3 = 0;\n  if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }\n  return puVar8;\n}\n\n" (function_definition "undefined8 * FUN_00104510(undefined8 *param_1,undefined8 param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  void *__ptr;\n  undefined8 *puVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  ulong uVar11;\n  ulong uVar12;\n  char *pcVar13;\n  char *local_30 [2];\n  \n  lVar3 = 0;\n  if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }\n  return puVar8;\n}" type_identifier (pointer_declarator "* FUN_00104510(undefined8 *param_1,undefined8 param_2)" * (function_declarator "FUN_00104510(undefined8 *param_1,undefined8 param_2)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) )))) (compound_statement "{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  void *__ptr;\n  undefined8 *puVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  ulong uVar11;\n  ulong uVar12;\n  char *pcVar13;\n  char *local_30 [2];\n  \n  lVar3 = 0;\n  if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }\n  return puVar8;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "char *local_30 [2];" primitive_type (pointer_declarator "*local_30 [2]" * (array_declarator "local_30 [2]" identifier [ number_literal ])) ;) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0xb) == '/')" ( (binary_expression "*(char *)(param_1 + 0xb) == '/'" (pointer_expression "*(char *)(param_1 + 0xb)" * (cast_expression "(char *)(param_1 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }" { (if_statement "if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }" if (parenthesized_expression "((param_1[6] == 0) || (param_1[7] == 0))" ( (binary_expression "(param_1[6] == 0) || (param_1[7] == 0)" (parenthesized_expression "(param_1[6] == 0)" ( (binary_expression "param_1[6] == 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(param_1[7] == 0)" ( (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }" { (expression_statement "pcVar13 = "Archive member uses long names, but no longname table found\n";" (assignment_expression "pcVar13 = "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_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);" statement_identifier : (expression_statement "uVar6 = dcgettext(0,pcVar13,5);" (assignment_expression "uVar6 = dcgettext(0,pcVar13,5)" identifier = (call_expression "dcgettext(0,pcVar13,5)" identifier (argument_list "(0,pcVar13,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "error(uVar6);" (call_expression "error(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar1 = *(undefined1 *)((long)param_1 + 0x92);" (assignment_expression "uVar1 = *(undefined1 *)((long)param_1 + 0x92)" identifier = (pointer_expression "*(undefined1 *)((long)param_1 + 0x92)" * (cast_expression "(undefined1 *)((long)param_1 + 0x92)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x92)" ( (binary_expression "(long)param_1 + 0x92" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((long)param_1 + 0x92) = 0;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x92) = 0" (pointer_expression "*(undefined1 *)((long)param_1 + 0x92)" * (cast_expression "(undefined1 *)((long)param_1 + 0x92)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x92)" ( (binary_expression "(long)param_1 + 0x92" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);" (assignment_expression "uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10)" identifier = (call_expression "strtoul((char *)((long)param_1 + 0x59),local_30,10)" identifier (argument_list "((char *)((long)param_1 + 0x59),local_30,10)" ( (cast_expression "(char *)((long)param_1 + 0x59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x59)" ( (binary_expression "(long)param_1 + 0x59" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) , identifier , number_literal )))) ;) (if_statement "if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }" if (parenthesized_expression "(((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':'))" ( (binary_expression "((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')" (parenthesized_expression "((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0))" ( (binary_expression "(*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)" (parenthesized_expression "(*(int *)(param_1 + 10) != 0)" ( (binary_expression "*(int *)(param_1 + 10) != 0" (pointer_expression "*(int *)(param_1 + 10)" * (cast_expression "(int *)(param_1 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(local_30[0] != (char *)0x0)" ( (binary_expression "local_30[0] != (char *)0x0" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(*local_30[0] == ':')" ( (binary_expression "*local_30[0] == ':'" (pointer_expression "*local_30[0]" * (subscript_expression "local_30[0]" identifier [ number_literal ])) == (char_literal "':'" ' character ')) ))) )) (compound_statement "{\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }" { (expression_statement "uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);" (assignment_expression "uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10)" identifier = (call_expression "strtoul(local_30[0] + 1,(char **)0x0,10)" identifier (argument_list "(local_30[0] + 1,(char **)0x0,10)" ( (binary_expression "local_30[0] + 1" (subscript_expression "local_30[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[8] = uVar9;" (assignment_expression "param_1[8] = uVar9" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar9 = param_1[7];" (assignment_expression "uVar9 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)((long)param_1 + 0x92) = uVar1;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x92) = uVar1" (pointer_expression "*(undefined1 *)((long)param_1 + 0x92)" * (cast_expression "(undefined1 *)((long)param_1 + 0x92)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x92)" ( (binary_expression "(long)param_1 + 0x92" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }" if (parenthesized_expression "(uVar9 < uVar7)" ( (binary_expression "uVar9 < 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      puVar8 = (undefined8 *)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 "puVar8 = (undefined8 *)0x0;" (assignment_expression "puVar8 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }" else (compound_statement "{\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }" { (expression_statement "puVar10 = (undefined1 *)param_1[6];" (assignment_expression "puVar10 = (undefined1 *)param_1[6]" identifier = (cast_expression "(undefined1 *)param_1[6]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" identifier = identifier) ;) (if_statement "if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }" if (parenthesized_expression "(((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))" ( (binary_expression "((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n')" (parenthesized_expression "((uVar7 < uVar9) && (puVar10[uVar7] != '\0'))" ( (binary_expression "(uVar7 < uVar9) && (puVar10[uVar7] != '\0')" (parenthesized_expression "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) )) && (parenthesized_expression "(puVar10[uVar7] != '\0')" ( (binary_expression "puVar10[uVar7] != '\0'" (subscript_expression "puVar10[uVar7]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(uVar11 = uVar7, puVar10[uVar7] != '\n')" ( (comma_expression "uVar11 = uVar7, puVar10[uVar7] != '\n'" (assignment_expression "uVar11 = uVar7" identifier = identifier) , (binary_expression "puVar10[uVar7] != '\n'" (subscript_expression "puVar10[uVar7]" identifier [ identifier ]) != (char_literal "'\n'" ' escape_sequence '))) ))) )) (compound_statement "{\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }" { (do_statement "do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');" do (compound_statement "{\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        }" { (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" identifier = identifier) ;) (if_statement "if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;" if (parenthesized_expression "((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n'))" ( (binary_expression "(uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')" (parenthesized_expression "(uVar9 == uVar11)" ( (binary_expression "uVar9 == uVar11" identifier == identifier) )) || (parenthesized_expression "(uVar12 = uVar11, puVar10[uVar11] == '\n')" ( (comma_expression "uVar12 = uVar11, puVar10[uVar11] == '\n'" (assignment_expression "uVar12 = uVar11" identifier = identifier) , (binary_expression "puVar10[uVar11] == '\n'" (subscript_expression "puVar10[uVar11]" identifier [ identifier ]) == (char_literal "'\n'" ' escape_sequence '))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(puVar10[uVar11] != '\0')" ( (binary_expression "puVar10[uVar11] != '\0'" (subscript_expression "puVar10[uVar11]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }" { (if_statement "if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }" if (parenthesized_expression "(puVar10[uVar12 - 1] == '/')" ( (binary_expression "puVar10[uVar12 - 1] == '/'" (subscript_expression "puVar10[uVar12 - 1]" identifier [ (binary_expression "uVar12 - 1" identifier - number_literal) ]) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n          uVar12 = uVar12 - 1;\n        }" { (expression_statement "uVar12 = uVar12 - 1;" (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }" if (parenthesized_expression "(uVar9 < uVar12)" ( (binary_expression "uVar9 < uVar12" identifier < identifier) )) (compound_statement "{\n          uVar12 = uVar9;\n        }" { (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" identifier = identifier) ;) })) (expression_statement "puVar10 = puVar10 + uVar12;" (assignment_expression "puVar10 = puVar10 + uVar12" identifier = (binary_expression "puVar10 + uVar12" identifier + identifier)) ;) })) (expression_statement "*puVar10 = 0;" (assignment_expression "*puVar10 = 0" (pointer_expression "*puVar10" * identifier) = number_literal) ;) (if_statement "if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }" if (parenthesized_expression "((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0))" ( (binary_expression "(*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)" (parenthesized_expression "(*(int *)(param_1 + 10) != 0)" ( (binary_expression "*(int *)(param_1 + 10) != 0" (pointer_expression "*(int *)(param_1 + 10)" * (cast_expression "(int *)(param_1 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" 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        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }" { (if_statement "if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }" if (parenthesized_expression "(uVar12 <= uVar7)" ( (binary_expression "uVar12 <= uVar7" identifier <= identifier) )) (compound_statement "{\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }" { (expression_statement "pcVar13 = "Invalid Thin archive member name\n";" (assignment_expression "pcVar13 = "Invalid Thin archive member name\n"" identifier = (string_literal ""Invalid Thin archive member name\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_00104585;" goto statement_identifier ;) })) (expression_statement "__ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);" (assignment_expression "__ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" identifier = (cast_expression "(void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" identifier (argument_list "(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" ( (pointer_expression "*param_1" * identifier) , (binary_expression "param_1[6] + uVar7" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) , (binary_expression "uVar12 - uVar7" identifier - identifier) ))))) ;) (if_statement "if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }" if (parenthesized_expression "(((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))" ( (binary_expression "((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0)" (parenthesized_expression "((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0))" ( (binary_expression "(__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 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 "(iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)" ( (comma_expression "iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0" (assignment_expression "iVar4 = FUN_001043e0(param_2,__ptr)" identifier = (call_expression "FUN_001043e0(param_2,__ptr)" identifier (argument_list "(param_2,__ptr)" ( identifier , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0)" ( (comma_expression "puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0" (assignment_expression "puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0)" identifier = (cast_expression "(undefined8 *)FUN_00104450(param_2,param_1[8],0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00104450(param_2,param_1[8],0)" identifier (argument_list "(param_2,param_1[8],0)" ( identifier , (subscript_expression "param_1[8]" identifier [ number_literal ]) , number_literal ))))) , (binary_expression "puVar8 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          free(__ptr);\n          return puVar8;\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return puVar8;" return identifier ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) })) (expression_statement "puVar8 = (undefined8 *)(param_1[6] + uVar7);" (assignment_expression "puVar8 = (undefined8 *)(param_1[6] + uVar7)" identifier = (cast_expression "(undefined8 *)(param_1[6] + uVar7)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + uVar7)" ( (binary_expression "param_1[6] + uVar7" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) )))) ;) }))) }) (else_clause "else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }" else (compound_statement "{\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }" { (while_statement "while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }" while (parenthesized_expression "(lVar5 = lVar3, lVar5 + 1 != 0x10)" ( (comma_expression "lVar5 = lVar3, lVar5 + 1 != 0x10" (assignment_expression "lVar5 = lVar3" identifier = identifier) , (binary_expression "lVar5 + 1 != 0x10" (binary_expression "lVar5 + 1" identifier + number_literal) != number_literal)) )) (compound_statement "{\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }" { (expression_statement "lVar3 = lVar5 + 1;" (assignment_expression "lVar3 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) (if_statement "if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }" if (parenthesized_expression "(*(char *)((long)param_1 + lVar5 + 0x59) == '/')" ( (binary_expression "*(char *)((long)param_1 + lVar5 + 0x59) == '/'" (pointer_expression "*(char *)((long)param_1 + lVar5 + 0x59)" * (cast_expression "(char *)((long)param_1 + lVar5 + 0x59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + lVar5 + 0x59)" ( (binary_expression "(long)param_1 + lVar5 + 0x59" (binary_expression "(long)param_1 + lVar5" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }" { (expression_statement "*(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;" (assignment_expression "*(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0" (pointer_expression "*(undefined1 *)((long)param_1 + lVar5 + 0x59)" * (cast_expression "(undefined1 *)((long)param_1 + lVar5 + 0x59)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + lVar5 + 0x59)" ( (binary_expression "(long)param_1 + lVar5 + 0x59" (binary_expression "(long)param_1 + lVar5" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (return_statement "return param_1 + 0xb;" return (binary_expression "param_1 + 0xb" identifier + number_literal) ;) })) })) (expression_statement "puVar8 = (undefined8 *)FUN_00105220(0x11);" (assignment_expression "puVar8 = (undefined8 *)FUN_00105220(0x11)" identifier = (cast_expression "(undefined8 *)FUN_00105220(0x11)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00105220(0x11)" identifier (argument_list "(0x11)" ( number_literal ))))) ;) (expression_statement "uVar6 = param_1[0xb];" (assignment_expression "uVar6 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = param_1[0xc];" (assignment_expression "uVar2 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar8 + 2) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 2) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 2)" * (cast_expression "(undefined1 *)(puVar8 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 2)" ( (binary_expression "puVar8 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar8 = uVar6;" (assignment_expression "*puVar8 = uVar6" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar8[1] = uVar2;" (assignment_expression "puVar8[1] = uVar2" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = identifier) ;) }))) (return_statement "return puVar8;" return identifier ;) })))
(translation_unit "char * get_archive_member_name(archive_info *arch,archive_info *nested_arch)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  char *pcVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  char *pcVar12;\n  char *endp;\n  \n  lVar4 = 0;\n  if ((arch->arhdr).ar_name[0] == '/') {\n    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar12 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      pcVar12 = (char *)dcgettext(0,pcVar12,5);\n      error(pcVar12);\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      uVar9 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar9;\n    }\n    uVar9 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar9 < uVar7) {\n      pcVar12 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)\n      ;\n      error(pcVar12,uVar7);\n      pcVar12 = (char *)0x0;\n    }\n    else {\n      pcVar12 = arch->longnames;\n      uVar11 = uVar7;\n      if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))\n      {\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }\n      if (uVar11 != 0) {\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }\n      *pcVar12 = '\0';\n      if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {\n        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\n      }\n      pcVar12 = arch->longnames + uVar7;\n    }\n  }\n  else {\n    while (lVar6 = lVar4, lVar6 + 1 != 0x10) {\n      lVar4 = lVar6 + 1;\n      if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar12 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined8 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined8 *)((arch->arhdr).ar_name + 8);\n    pcVar12[0x10] = '\0';\n    *(undefined8 *)pcVar12 = uVar2;\n    *(undefined8 *)(pcVar12 + 8) = uVar3;\n  }\n  return pcVar12;\n}\n\n" (function_definition "char * get_archive_member_name(archive_info *arch,archive_info *nested_arch)\n\n{\n  char cVar1;\n  undefined8 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  char *pcVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  char *pcVar12;\n  char *endp;\n  \n  lVar4 = 0;\n  if ((arch->arhdr).ar_name[0] == '/') {\n    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar12 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      pcVar12 = (char *)dcgettext(0,pcVar12,5);\n      error(pcVar12);\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      uVar9 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar9;\n    }\n    uVar9 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar9 < uVar7) {\n      pcVar12 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)\n      ;\n      error(pcVar12,uVar7);\n      pcVar12 = (char *)0x0;\n    }\n    else {\n      pcVar12 = arch->longnames;\n      uVar11 = uVar7;\n      if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))\n      {\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }\n      if (uVar11 != 0) {\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }\n      *pcVar12 = '\0';\n      if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {\n        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\n      }\n      pcVar12 = arch->longnames + uVar7;\n    }\n  }\n  else {\n    while (lVar6 = lVar4, lVar6 + 1 != 0x10) {\n      lVar4 = lVar6 + 1;\n      if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar12 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined8 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined8 *)((arch->arhdr).ar_name + 8);\n    pcVar12[0x10] = '\0';\n    *(undefined8 *)pcVar12 = uVar2;\n    *(undefined8 *)(pcVar12 + 8) = uVar3;\n  }\n  return pcVar12;\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  undefined8 uVar2;\n  undefined8 uVar3;\n  long lVar4;\n  int iVar5;\n  long lVar6;\n  ulong uVar7;\n  char *pcVar8;\n  ulong uVar9;\n  ulong uVar10;\n  ulong uVar11;\n  char *pcVar12;\n  char *endp;\n  \n  lVar4 = 0;\n  if ((arch->arhdr).ar_name[0] == '/') {\n    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar12 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      pcVar12 = (char *)dcgettext(0,pcVar12,5);\n      error(pcVar12);\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      uVar9 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar9;\n    }\n    uVar9 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar9 < uVar7) {\n      pcVar12 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)\n      ;\n      error(pcVar12,uVar7);\n      pcVar12 = (char *)0x0;\n    }\n    else {\n      pcVar12 = arch->longnames;\n      uVar11 = uVar7;\n      if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))\n      {\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }\n      if (uVar11 != 0) {\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }\n      *pcVar12 = '\0';\n      if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {\n        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\n      }\n      pcVar12 = arch->longnames + uVar7;\n    }\n  }\n  else {\n    while (lVar6 = lVar4, lVar6 + 1 != 0x10) {\n      lVar4 = lVar6 + 1;\n      if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar12 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined8 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined8 *)((arch->arhdr).ar_name + 8);\n    pcVar12[0x10] = '\0';\n    *(undefined8 *)pcVar12 = uVar2;\n    *(undefined8 *)(pcVar12 + 8) = uVar3;\n  }\n  return pcVar12;\n}" { (declaration "char cVar1;" primitive_type identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "undefined8 uVar3;" type_identifier identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "char *pcVar8;" primitive_type (pointer_declarator "*pcVar8" * identifier) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "ulong uVar10;" type_identifier identifier ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "char *pcVar12;" primitive_type (pointer_declarator "*pcVar12" * identifier) ;) (declaration "char *endp;" primitive_type (pointer_declarator "*endp" * identifier) ;) (expression_statement "lVar4 = 0;" (assignment_expression "lVar4 = 0" identifier = number_literal) ;) (if_statement "if ((arch->arhdr).ar_name[0] == '/') {\n    if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar12 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      pcVar12 = (char *)dcgettext(0,pcVar12,5);\n      error(pcVar12);\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      uVar9 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar9;\n    }\n    uVar9 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar9 < uVar7) {\n      pcVar12 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)\n      ;\n      error(pcVar12,uVar7);\n      pcVar12 = (char *)0x0;\n    }\n    else {\n      pcVar12 = arch->longnames;\n      uVar11 = uVar7;\n      if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))\n      {\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }\n      if (uVar11 != 0) {\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }\n      *pcVar12 = '\0';\n      if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {\n        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\n      }\n      pcVar12 = arch->longnames + uVar7;\n    }\n  }\n  else {\n    while (lVar6 = lVar4, lVar6 + 1 != 0x10) {\n      lVar4 = lVar6 + 1;\n      if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar12 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined8 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined8 *)((arch->arhdr).ar_name + 8);\n    pcVar12[0x10] = '\0';\n    *(undefined8 *)pcVar12 = uVar2;\n    *(undefined8 *)(pcVar12 + 8) = uVar3;\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      pcVar12 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      pcVar12 = (char *)dcgettext(0,pcVar12,5);\n      error(pcVar12);\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      uVar9 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar9;\n    }\n    uVar9 = arch->longnames_size;\n    (arch->arhdr).ar_fmag[0] = cVar1;\n    if (uVar9 < uVar7) {\n      pcVar12 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)\n      ;\n      error(pcVar12,uVar7);\n      pcVar12 = (char *)0x0;\n    }\n    else {\n      pcVar12 = arch->longnames;\n      uVar11 = uVar7;\n      if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))\n      {\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }\n      if (uVar11 != 0) {\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }\n      *pcVar12 = '\0';\n      if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {\n        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\n      }\n      pcVar12 = arch->longnames + uVar7;\n    }\n  }" { (if_statement "if ((arch->longnames == (char *)0x0) || (arch->longnames_size == 0)) {\n      pcVar12 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      pcVar12 = (char *)dcgettext(0,pcVar12,5);\n      error(pcVar12);\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      pcVar12 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      pcVar12 = (char *)dcgettext(0,pcVar12,5);\n      error(pcVar12);\n      return (char *)0x0;\n    }" { (expression_statement "pcVar12 = "Archive member uses long names, but no longname table found\n";" (assignment_expression "pcVar12 = "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_00104585:\n      pcVar12 = (char *)dcgettext(0,pcVar12,5);" statement_identifier : (expression_statement "pcVar12 = (char *)dcgettext(0,pcVar12,5);" (assignment_expression "pcVar12 = (char *)dcgettext(0,pcVar12,5)" identifier = (cast_expression "(char *)dcgettext(0,pcVar12,5)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "dcgettext(0,pcVar12,5)" identifier (argument_list "(0,pcVar12,5)" ( number_literal , identifier , number_literal ))))) ;)) (expression_statement "error(pcVar12);" (call_expression "error(pcVar12)" identifier (argument_list "(pcVar12)" ( 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      uVar9 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar9;\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      uVar9 = strtoul(endp + 1,(char **)0x0,10);\n      arch->nested_member_origin = uVar9;\n    }" { (expression_statement "uVar9 = strtoul(endp + 1,(char **)0x0,10);" (assignment_expression "uVar9 = 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 = uVar9;" (assignment_expression "arch->nested_member_origin = uVar9" (field_expression "arch->nested_member_origin" identifier -> field_identifier) = identifier) ;) })) (expression_statement "uVar9 = arch->longnames_size;" (assignment_expression "uVar9 = 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 (uVar9 < uVar7) {\n      pcVar12 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)\n      ;\n      error(pcVar12,uVar7);\n      pcVar12 = (char *)0x0;\n    }\n    else {\n      pcVar12 = arch->longnames;\n      uVar11 = uVar7;\n      if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))\n      {\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }\n      if (uVar11 != 0) {\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }\n      *pcVar12 = '\0';\n      if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {\n        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\n      }\n      pcVar12 = arch->longnames + uVar7;\n    }" if (parenthesized_expression "(uVar9 < uVar7)" ( (binary_expression "uVar9 < uVar7" identifier < identifier) )) (compound_statement "{\n      pcVar12 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)\n      ;\n      error(pcVar12,uVar7);\n      pcVar12 = (char *)0x0;\n    }" { (expression_statement "pcVar12 = (char *)dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5)\n      ;" (assignment_expression "pcVar12 = (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(pcVar12,uVar7);" (call_expression "error(pcVar12,uVar7)" identifier (argument_list "(pcVar12,uVar7)" ( identifier , identifier ))) ;) (expression_statement "pcVar12 = (char *)0x0;" (assignment_expression "pcVar12 = (char *)0x0" identifier = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      pcVar12 = arch->longnames;\n      uVar11 = uVar7;\n      if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))\n      {\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }\n      if (uVar11 != 0) {\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }\n      *pcVar12 = '\0';\n      if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {\n        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\n      }\n      pcVar12 = arch->longnames + uVar7;\n    }" else (compound_statement "{\n      pcVar12 = arch->longnames;\n      uVar11 = uVar7;\n      if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))\n      {\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }\n      if (uVar11 != 0) {\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }\n      *pcVar12 = '\0';\n      if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {\n        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\n      }\n      pcVar12 = arch->longnames + uVar7;\n    }" { (expression_statement "pcVar12 = arch->longnames;" (assignment_expression "pcVar12 = arch->longnames" identifier = (field_expression "arch->longnames" identifier -> field_identifier)) ;) (expression_statement "uVar11 = uVar7;" (assignment_expression "uVar11 = uVar7" identifier = identifier) ;) (if_statement "if (((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))\n      {\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }" if (parenthesized_expression "(((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n'))" ( (binary_expression "((uVar7 < uVar9) && (pcVar12[uVar7] != '\0')) && (uVar10 = uVar7, pcVar12[uVar7] != '\n')" (parenthesized_expression "((uVar7 < uVar9) && (pcVar12[uVar7] != '\0'))" ( (binary_expression "(uVar7 < uVar9) && (pcVar12[uVar7] != '\0')" (parenthesized_expression "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) )) && (parenthesized_expression "(pcVar12[uVar7] != '\0')" ( (binary_expression "pcVar12[uVar7] != '\0'" (subscript_expression "pcVar12[uVar7]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(uVar10 = uVar7, pcVar12[uVar7] != '\n')" ( (comma_expression "uVar10 = uVar7, pcVar12[uVar7] != '\n'" (assignment_expression "uVar10 = uVar7" identifier = identifier) , (binary_expression "pcVar12[uVar7] != '\n'" (subscript_expression "pcVar12[uVar7]" identifier [ identifier ]) != (char_literal "'\n'" ' escape_sequence '))) ))) )) (compound_statement "{\n        do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');\n      }" { (do_statement "do {\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        } while (pcVar12[uVar10] != '\0');" do (compound_statement "{\n          uVar10 = uVar10 + 1;\n          uVar11 = uVar9;\n          if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;\n        }" { (expression_statement "uVar10 = uVar10 + 1;" (assignment_expression "uVar10 = uVar10 + 1" identifier = (binary_expression "uVar10 + 1" identifier + number_literal)) ;) (expression_statement "uVar11 = uVar9;" (assignment_expression "uVar11 = uVar9" identifier = identifier) ;) (if_statement "if ((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')) break;" if (parenthesized_expression "((uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n'))" ( (binary_expression "(uVar9 == uVar10) || (uVar11 = uVar10, pcVar12[uVar10] == '\n')" (parenthesized_expression "(uVar9 == uVar10)" ( (binary_expression "uVar9 == uVar10" identifier == identifier) )) || (parenthesized_expression "(uVar11 = uVar10, pcVar12[uVar10] == '\n')" ( (comma_expression "uVar11 = uVar10, pcVar12[uVar10] == '\n'" (assignment_expression "uVar11 = uVar10" identifier = identifier) , (binary_expression "pcVar12[uVar10] == '\n'" (subscript_expression "pcVar12[uVar10]" identifier [ identifier ]) == (char_literal "'\n'" ' escape_sequence '))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(pcVar12[uVar10] != '\0')" ( (binary_expression "pcVar12[uVar10] != '\0'" (subscript_expression "pcVar12[uVar10]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (uVar11 != 0) {\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }" if (parenthesized_expression "(uVar11 != 0)" ( (binary_expression "uVar11 != 0" identifier != number_literal) )) (compound_statement "{\n        if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }\n        if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }\n        pcVar12 = pcVar12 + uVar11;\n      }" { (if_statement "if (pcVar12[uVar11 - 1] == '/') {\n          uVar11 = uVar11 - 1;\n        }" if (parenthesized_expression "(pcVar12[uVar11 - 1] == '/')" ( (binary_expression "pcVar12[uVar11 - 1] == '/'" (subscript_expression "pcVar12[uVar11 - 1]" identifier [ (binary_expression "uVar11 - 1" identifier - number_literal) ]) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n          uVar11 = uVar11 - 1;\n        }" { (expression_statement "uVar11 = uVar11 - 1;" (assignment_expression "uVar11 = uVar11 - 1" identifier = (binary_expression "uVar11 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar9 < uVar11) {\n          uVar11 = uVar9;\n        }" if (parenthesized_expression "(uVar9 < uVar11)" ( (binary_expression "uVar9 < uVar11" identifier < identifier) )) (compound_statement "{\n          uVar11 = uVar9;\n        }" { (expression_statement "uVar11 = uVar9;" (assignment_expression "uVar11 = uVar9" identifier = identifier) ;) })) (expression_statement "pcVar12 = pcVar12 + uVar11;" (assignment_expression "pcVar12 = pcVar12 + uVar11" identifier = (binary_expression "pcVar12 + uVar11" identifier + identifier)) ;) })) (expression_statement "*pcVar12 = '\0';" (assignment_expression "*pcVar12 = '\0'" (pointer_expression "*pcVar12" * identifier) = (char_literal "'\0'" ' escape_sequence ')) ;) (if_statement "if ((arch->is_thin_archive != 0) && (arch->nested_member_origin != 0)) {\n        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\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        if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);\n        if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }\n        free(pcVar12);\n      }" { (if_statement "if (uVar11 <= uVar7) {\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }" if (parenthesized_expression "(uVar11 <= uVar7)" ( (binary_expression "uVar11 <= uVar7" identifier <= identifier) )) (compound_statement "{\n          pcVar12 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }" { (expression_statement "pcVar12 = "Invalid Thin archive member name\n";" (assignment_expression "pcVar12 = "Invalid Thin archive member name\n"" identifier = (string_literal ""Invalid Thin archive member name\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_00104585;" goto statement_identifier ;) })) (expression_statement "pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7);" (assignment_expression "pcVar12 = adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7)" identifier = (call_expression "adjust_relative_path(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7)" identifier (argument_list "(arch->file_name,arch->longnames + uVar7,uVar11 - uVar7)" ( (field_expression "arch->file_name" identifier -> field_identifier) , (binary_expression "arch->longnames + uVar7" (field_expression "arch->longnames" identifier -> field_identifier) + identifier) , (binary_expression "uVar11 - uVar7" identifier - identifier) )))) ;) (if_statement "if (((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)) {\n          free(pcVar12);\n          return pcVar8;\n        }" if (parenthesized_expression "(((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0))" ( (binary_expression "((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)) &&\n           (pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)" (parenthesized_expression "((pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0))" ( (binary_expression "(pcVar12 != (char *)0x0) &&\n            (iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)" (parenthesized_expression "(pcVar12 != (char *)0x0)" ( (binary_expression "pcVar12 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0)" ( (comma_expression "iVar5 = setup_nested_archive(nested_arch,pcVar12), iVar5 == 0" (assignment_expression "iVar5 = setup_nested_archive(nested_arch,pcVar12)" identifier = (call_expression "setup_nested_archive(nested_arch,pcVar12)" identifier (argument_list "(nested_arch,pcVar12)" ( identifier , identifier )))) , (binary_expression "iVar5 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0)" ( (comma_expression "pcVar8 = get_archive_member_name_at\n                               (nested_arch,arch->nested_member_origin,(archive_info *)0x0),\n           pcVar8 != (char *)0x0" (assignment_expression "pcVar8 = 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 "pcVar8 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          free(pcVar12);\n          return pcVar8;\n        }" { (expression_statement "free(pcVar12);" (call_expression "free(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier ))) ;) (return_statement "return pcVar8;" return identifier ;) })) (expression_statement "free(pcVar12);" (call_expression "free(pcVar12)" identifier (argument_list "(pcVar12)" ( identifier ))) ;) })) (expression_statement "pcVar12 = arch->longnames + uVar7;" (assignment_expression "pcVar12 = arch->longnames + uVar7" identifier = (binary_expression "arch->longnames + uVar7" (field_expression "arch->longnames" identifier -> field_identifier) + identifier)) ;) }))) }) (else_clause "else {\n    while (lVar6 = lVar4, lVar6 + 1 != 0x10) {\n      lVar4 = lVar6 + 1;\n      if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar12 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined8 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined8 *)((arch->arhdr).ar_name + 8);\n    pcVar12[0x10] = '\0';\n    *(undefined8 *)pcVar12 = uVar2;\n    *(undefined8 *)(pcVar12 + 8) = uVar3;\n  }" else (compound_statement "{\n    while (lVar6 = lVar4, lVar6 + 1 != 0x10) {\n      lVar4 = lVar6 + 1;\n      if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }\n    pcVar12 = (char *)xmalloc(0x11);\n    uVar2 = *(undefined8 *)(arch->arhdr).ar_name;\n    uVar3 = *(undefined8 *)((arch->arhdr).ar_name + 8);\n    pcVar12[0x10] = '\0';\n    *(undefined8 *)pcVar12 = uVar2;\n    *(undefined8 *)(pcVar12 + 8) = uVar3;\n  }" { (while_statement "while (lVar6 = lVar4, lVar6 + 1 != 0x10) {\n      lVar4 = lVar6 + 1;\n      if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }" while (parenthesized_expression "(lVar6 = lVar4, lVar6 + 1 != 0x10)" ( (comma_expression "lVar6 = lVar4, lVar6 + 1 != 0x10" (assignment_expression "lVar6 = lVar4" identifier = identifier) , (binary_expression "lVar6 + 1 != 0x10" (binary_expression "lVar6 + 1" identifier + number_literal) != number_literal)) )) (compound_statement "{\n      lVar4 = lVar6 + 1;\n      if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }\n    }" { (expression_statement "lVar4 = lVar6 + 1;" (assignment_expression "lVar4 = lVar6 + 1" identifier = (binary_expression "lVar6 + 1" identifier + number_literal)) ;) (if_statement "if ((arch->arhdr).ar_name[lVar6 + 1] == '/') {\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }" if (parenthesized_expression "((arch->arhdr).ar_name[lVar6 + 1] == '/')" ( (binary_expression "(arch->arhdr).ar_name[lVar6 + 1] == '/'" (subscript_expression "(arch->arhdr).ar_name[lVar6 + 1]" (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) [ (binary_expression "lVar6 + 1" identifier + number_literal) ]) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n        (arch->arhdr).ar_name[lVar6 + 1] = '\0';\n        return (arch->arhdr).ar_name;\n      }" { (expression_statement "(arch->arhdr).ar_name[lVar6 + 1] = '\0';" (assignment_expression "(arch->arhdr).ar_name[lVar6 + 1] = '\0'" (subscript_expression "(arch->arhdr).ar_name[lVar6 + 1]" (field_expression "(arch->arhdr).ar_name" (parenthesized_expression "(arch->arhdr)" ( (field_expression "arch->arhdr" identifier -> field_identifier) )) . field_identifier) [ (binary_expression "lVar6 + 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 "pcVar12 = (char *)xmalloc(0x11);" (assignment_expression "pcVar12 = (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 = *(undefined8 *)(arch->arhdr).ar_name;" (assignment_expression "uVar2 = *(undefined8 *)(arch->arhdr).ar_name" identifier = (pointer_expression "*(undefined8 *)(arch->arhdr).ar_name" * (cast_expression "(undefined8 *)(arch->arhdr).ar_name" ( (type_descriptor "undefined8 *" 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 = *(undefined8 *)((arch->arhdr).ar_name + 8);" (assignment_expression "uVar3 = *(undefined8 *)((arch->arhdr).ar_name + 8)" identifier = (pointer_expression "*(undefined8 *)((arch->arhdr).ar_name + 8)" * (cast_expression "(undefined8 *)((arch->arhdr).ar_name + 8)" ( (type_descriptor "undefined8 *" 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) ))))) ;) (expression_statement "pcVar12[0x10] = '\0';" (assignment_expression "pcVar12[0x10] = '\0'" (subscript_expression "pcVar12[0x10]" identifier [ number_literal ]) = (char_literal "'\0'" ' escape_sequence ')) ;) (expression_statement "*(undefined8 *)pcVar12 = uVar2;" (assignment_expression "*(undefined8 *)pcVar12 = uVar2" (pointer_expression "*(undefined8 *)pcVar12" * (cast_expression "(undefined8 *)pcVar12" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) = identifier) ;) (expression_statement "*(undefined8 *)(pcVar12 + 8) = uVar3;" (assignment_expression "*(undefined8 *)(pcVar12 + 8) = uVar3" (pointer_expression "*(undefined8 *)(pcVar12 + 8)" * (cast_expression "(undefined8 *)(pcVar12 + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(pcVar12 + 8)" ( (binary_expression "pcVar12 + 8" identifier + number_literal) )))) = identifier) ;) }))) (return_statement "return pcVar12;" return identifier ;) })))
(translation_unit "undefined8 * FUN_00104510(undefined8 *param_1,undefined8 param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  void *__ptr;\n  undefined8 *puVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  ulong uVar11;\n  ulong uVar12;\n  char *pcVar13;\n  char *local_30 [2];\n  \n  lVar3 = 0;\n  if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }\n  return puVar8;\n}\n\n" (function_definition "undefined8 * FUN_00104510(undefined8 *param_1,undefined8 param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  void *__ptr;\n  undefined8 *puVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  ulong uVar11;\n  ulong uVar12;\n  char *pcVar13;\n  char *local_30 [2];\n  \n  lVar3 = 0;\n  if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }\n  return puVar8;\n}" type_identifier (pointer_declarator "* FUN_00104510(undefined8 *param_1,undefined8 param_2)" * (function_declarator "FUN_00104510(undefined8 *param_1,undefined8 param_2)" identifier (parameter_list "(undefined8 *param_1,undefined8 param_2)" ( (parameter_declaration "undefined8 *param_1" type_identifier (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "undefined8 param_2" type_identifier identifier) )))) (compound_statement "{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  void *__ptr;\n  undefined8 *puVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  ulong uVar11;\n  ulong uVar12;\n  char *pcVar13;\n  char *local_30 [2];\n  \n  lVar3 = 0;\n  if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }\n  return puVar8;\n}" { (declaration "undefined1 uVar1;" type_identifier identifier ;) (declaration "undefined8 uVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 uVar6;" type_identifier identifier ;) (declaration "ulong uVar7;" type_identifier identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "ulong uVar9;" type_identifier identifier ;) (declaration "undefined1 *puVar10;" type_identifier (pointer_declarator "*puVar10" * identifier) ;) (declaration "ulong uVar11;" type_identifier identifier ;) (declaration "ulong uVar12;" type_identifier identifier ;) (declaration "char *pcVar13;" primitive_type (pointer_declarator "*pcVar13" * identifier) ;) (declaration "char *local_30 [2];" primitive_type (pointer_declarator "*local_30 [2]" * (array_declarator "local_30 [2]" identifier [ number_literal ])) ;) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" identifier = number_literal) ;) (if_statement "if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }" if (parenthesized_expression "(*(char *)(param_1 + 0xb) == '/')" ( (binary_expression "*(char *)(param_1 + 0xb) == '/'" (pointer_expression "*(char *)(param_1 + 0xb)" * (cast_expression "(char *)(param_1 + 0xb)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0xb)" ( (binary_expression "param_1 + 0xb" identifier + number_literal) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }" { (if_statement "if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }" if (parenthesized_expression "((param_1[6] == 0) || (param_1[7] == 0))" ( (binary_expression "(param_1[6] == 0) || (param_1[7] == 0)" (parenthesized_expression "(param_1[6] == 0)" ( (binary_expression "param_1[6] == 0" (subscript_expression "param_1[6]" identifier [ number_literal ]) == number_literal) )) || (parenthesized_expression "(param_1[7] == 0)" ( (binary_expression "param_1[7] == 0" (subscript_expression "param_1[7]" identifier [ number_literal ]) == number_literal) ))) )) (compound_statement "{\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }" { (expression_statement "pcVar13 = "Archive member uses long names, but no longname table found\n";" (assignment_expression "pcVar13 = "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_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);" statement_identifier : (expression_statement "uVar6 = dcgettext(0,pcVar13,5);" (assignment_expression "uVar6 = dcgettext(0,pcVar13,5)" identifier = (call_expression "dcgettext(0,pcVar13,5)" identifier (argument_list "(0,pcVar13,5)" ( number_literal , identifier , number_literal )))) ;)) (expression_statement "error(uVar6);" (call_expression "error(uVar6)" identifier (argument_list "(uVar6)" ( identifier ))) ;) (return_statement "return (undefined8 *)0x0;" return (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) ;) })) (expression_statement "uVar1 = *(undefined1 *)((long)param_1 + 0x92);" (assignment_expression "uVar1 = *(undefined1 *)((long)param_1 + 0x92)" identifier = (pointer_expression "*(undefined1 *)((long)param_1 + 0x92)" * (cast_expression "(undefined1 *)((long)param_1 + 0x92)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x92)" ( (binary_expression "(long)param_1 + 0x92" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ;) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "*(undefined1 *)((long)param_1 + 0x92) = 0;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x92) = 0" (pointer_expression "*(undefined1 *)((long)param_1 + 0x92)" * (cast_expression "(undefined1 *)((long)param_1 + 0x92)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x92)" ( (binary_expression "(long)param_1 + 0x92" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = number_literal) ;) (expression_statement "uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);" (assignment_expression "uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10)" identifier = (call_expression "strtoul((char *)((long)param_1 + 0x59),local_30,10)" identifier (argument_list "((char *)((long)param_1 + 0x59),local_30,10)" ( (cast_expression "(char *)((long)param_1 + 0x59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x59)" ( (binary_expression "(long)param_1 + 0x59" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) , identifier , number_literal )))) ;) (if_statement "if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }" if (parenthesized_expression "(((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':'))" ( (binary_expression "((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')" (parenthesized_expression "((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0))" ( (binary_expression "(*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)" (parenthesized_expression "(*(int *)(param_1 + 10) != 0)" ( (binary_expression "*(int *)(param_1 + 10) != 0" (pointer_expression "*(int *)(param_1 + 10)" * (cast_expression "(int *)(param_1 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" identifier + number_literal) )))) != number_literal) )) && (parenthesized_expression "(local_30[0] != (char *)0x0)" ( (binary_expression "local_30[0] != (char *)0x0" (subscript_expression "local_30[0]" identifier [ number_literal ]) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "(*local_30[0] == ':')" ( (binary_expression "*local_30[0] == ':'" (pointer_expression "*local_30[0]" * (subscript_expression "local_30[0]" identifier [ number_literal ])) == (char_literal "':'" ' character ')) ))) )) (compound_statement "{\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }" { (expression_statement "uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);" (assignment_expression "uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10)" identifier = (call_expression "strtoul(local_30[0] + 1,(char **)0x0,10)" identifier (argument_list "(local_30[0] + 1,(char **)0x0,10)" ( (binary_expression "local_30[0] + 1" (subscript_expression "local_30[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[8] = uVar9;" (assignment_expression "param_1[8] = uVar9" (subscript_expression "param_1[8]" identifier [ number_literal ]) = identifier) ;) })) (expression_statement "uVar9 = param_1[7];" (assignment_expression "uVar9 = param_1[7]" identifier = (subscript_expression "param_1[7]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)((long)param_1 + 0x92) = uVar1;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x92) = uVar1" (pointer_expression "*(undefined1 *)((long)param_1 + 0x92)" * (cast_expression "(undefined1 *)((long)param_1 + 0x92)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + 0x92)" ( (binary_expression "(long)param_1 + 0x92" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) = identifier) ;) (if_statement "if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }" if (parenthesized_expression "(uVar9 < uVar7)" ( (binary_expression "uVar9 < 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      puVar8 = (undefined8 *)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 "puVar8 = (undefined8 *)0x0;" (assignment_expression "puVar8 = (undefined8 *)0x0" identifier = (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) }) (else_clause "else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }" else (compound_statement "{\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }" { (expression_statement "puVar10 = (undefined1 *)param_1[6];" (assignment_expression "puVar10 = (undefined1 *)param_1[6]" identifier = (cast_expression "(undefined1 *)param_1[6]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[6]" identifier [ number_literal ]))) ;) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" identifier = identifier) ;) (if_statement "if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }" if (parenthesized_expression "(((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))" ( (binary_expression "((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n')" (parenthesized_expression "((uVar7 < uVar9) && (puVar10[uVar7] != '\0'))" ( (binary_expression "(uVar7 < uVar9) && (puVar10[uVar7] != '\0')" (parenthesized_expression "(uVar7 < uVar9)" ( (binary_expression "uVar7 < uVar9" identifier < identifier) )) && (parenthesized_expression "(puVar10[uVar7] != '\0')" ( (binary_expression "puVar10[uVar7] != '\0'" (subscript_expression "puVar10[uVar7]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) ))) )) && (parenthesized_expression "(uVar11 = uVar7, puVar10[uVar7] != '\n')" ( (comma_expression "uVar11 = uVar7, puVar10[uVar7] != '\n'" (assignment_expression "uVar11 = uVar7" identifier = identifier) , (binary_expression "puVar10[uVar7] != '\n'" (subscript_expression "puVar10[uVar7]" identifier [ identifier ]) != (char_literal "'\n'" ' escape_sequence '))) ))) )) (compound_statement "{\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }" { (do_statement "do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');" do (compound_statement "{\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        }" { (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" identifier = (binary_expression "uVar11 + 1" identifier + number_literal)) ;) (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" identifier = identifier) ;) (if_statement "if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;" if (parenthesized_expression "((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n'))" ( (binary_expression "(uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')" (parenthesized_expression "(uVar9 == uVar11)" ( (binary_expression "uVar9 == uVar11" identifier == identifier) )) || (parenthesized_expression "(uVar12 = uVar11, puVar10[uVar11] == '\n')" ( (comma_expression "uVar12 = uVar11, puVar10[uVar11] == '\n'" (assignment_expression "uVar12 = uVar11" identifier = identifier) , (binary_expression "puVar10[uVar11] == '\n'" (subscript_expression "puVar10[uVar11]" identifier [ identifier ]) == (char_literal "'\n'" ' escape_sequence '))) ))) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "(puVar10[uVar11] != '\0')" ( (binary_expression "puVar10[uVar11] != '\0'" (subscript_expression "puVar10[uVar11]" identifier [ identifier ]) != (char_literal "'\0'" ' escape_sequence ')) )) ;) })) (if_statement "if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }" if (parenthesized_expression "(uVar12 != 0)" ( (binary_expression "uVar12 != 0" identifier != number_literal) )) (compound_statement "{\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }" { (if_statement "if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }" if (parenthesized_expression "(puVar10[uVar12 - 1] == '/')" ( (binary_expression "puVar10[uVar12 - 1] == '/'" (subscript_expression "puVar10[uVar12 - 1]" identifier [ (binary_expression "uVar12 - 1" identifier - number_literal) ]) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n          uVar12 = uVar12 - 1;\n        }" { (expression_statement "uVar12 = uVar12 - 1;" (assignment_expression "uVar12 = uVar12 - 1" identifier = (binary_expression "uVar12 - 1" identifier - number_literal)) ;) })) (if_statement "if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }" if (parenthesized_expression "(uVar9 < uVar12)" ( (binary_expression "uVar9 < uVar12" identifier < identifier) )) (compound_statement "{\n          uVar12 = uVar9;\n        }" { (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" identifier = identifier) ;) })) (expression_statement "puVar10 = puVar10 + uVar12;" (assignment_expression "puVar10 = puVar10 + uVar12" identifier = (binary_expression "puVar10 + uVar12" identifier + identifier)) ;) })) (expression_statement "*puVar10 = 0;" (assignment_expression "*puVar10 = 0" (pointer_expression "*puVar10" * identifier) = number_literal) ;) (if_statement "if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }" if (parenthesized_expression "((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0))" ( (binary_expression "(*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)" (parenthesized_expression "(*(int *)(param_1 + 10) != 0)" ( (binary_expression "*(int *)(param_1 + 10) != 0" (pointer_expression "*(int *)(param_1 + 10)" * (cast_expression "(int *)(param_1 + 10)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 10)" ( (binary_expression "param_1 + 10" 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        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }" { (if_statement "if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }" if (parenthesized_expression "(uVar12 <= uVar7)" ( (binary_expression "uVar12 <= uVar7" identifier <= identifier) )) (compound_statement "{\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }" { (expression_statement "pcVar13 = "Invalid Thin archive member name\n";" (assignment_expression "pcVar13 = "Invalid Thin archive member name\n"" identifier = (string_literal ""Invalid Thin archive member name\n"" " string_content escape_sequence ")) ;) (goto_statement "goto LAB_00104585;" goto statement_identifier ;) })) (expression_statement "__ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);" (assignment_expression "__ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" identifier = (cast_expression "(void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" identifier (argument_list "(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" ( (pointer_expression "*param_1" * identifier) , (binary_expression "param_1[6] + uVar7" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) , (binary_expression "uVar12 - uVar7" identifier - identifier) ))))) ;) (if_statement "if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }" if (parenthesized_expression "(((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))" ( (binary_expression "((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0)" (parenthesized_expression "((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0))" ( (binary_expression "(__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 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 "(iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)" ( (comma_expression "iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0" (assignment_expression "iVar4 = FUN_001043e0(param_2,__ptr)" identifier = (call_expression "FUN_001043e0(param_2,__ptr)" identifier (argument_list "(param_2,__ptr)" ( identifier , identifier )))) , (binary_expression "iVar4 == 0" identifier == number_literal)) ))) )) && (parenthesized_expression "(puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0)" ( (comma_expression "puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0" (assignment_expression "puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0)" identifier = (cast_expression "(undefined8 *)FUN_00104450(param_2,param_1[8],0)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00104450(param_2,param_1[8],0)" identifier (argument_list "(param_2,param_1[8],0)" ( identifier , (subscript_expression "param_1[8]" identifier [ number_literal ]) , number_literal ))))) , (binary_expression "puVar8 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n          free(__ptr);\n          return puVar8;\n        }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return puVar8;" return identifier ;) })) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) })) (expression_statement "puVar8 = (undefined8 *)(param_1[6] + uVar7);" (assignment_expression "puVar8 = (undefined8 *)(param_1[6] + uVar7)" identifier = (cast_expression "(undefined8 *)(param_1[6] + uVar7)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1[6] + uVar7)" ( (binary_expression "param_1[6] + uVar7" (subscript_expression "param_1[6]" identifier [ number_literal ]) + identifier) )))) ;) }))) }) (else_clause "else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }" else (compound_statement "{\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }" { (while_statement "while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }" while (parenthesized_expression "(lVar5 = lVar3, lVar5 + 1 != 0x10)" ( (comma_expression "lVar5 = lVar3, lVar5 + 1 != 0x10" (assignment_expression "lVar5 = lVar3" identifier = identifier) , (binary_expression "lVar5 + 1 != 0x10" (binary_expression "lVar5 + 1" identifier + number_literal) != number_literal)) )) (compound_statement "{\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }" { (expression_statement "lVar3 = lVar5 + 1;" (assignment_expression "lVar3 = lVar5 + 1" identifier = (binary_expression "lVar5 + 1" identifier + number_literal)) ;) (if_statement "if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }" if (parenthesized_expression "(*(char *)((long)param_1 + lVar5 + 0x59) == '/')" ( (binary_expression "*(char *)((long)param_1 + lVar5 + 0x59) == '/'" (pointer_expression "*(char *)((long)param_1 + lVar5 + 0x59)" * (cast_expression "(char *)((long)param_1 + lVar5 + 0x59)" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + lVar5 + 0x59)" ( (binary_expression "(long)param_1 + lVar5 + 0x59" (binary_expression "(long)param_1 + lVar5" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) == (char_literal "'/'" ' character ')) )) (compound_statement "{\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }" { (expression_statement "*(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;" (assignment_expression "*(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0" (pointer_expression "*(undefined1 *)((long)param_1 + lVar5 + 0x59)" * (cast_expression "(undefined1 *)((long)param_1 + lVar5 + 0x59)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_1 + lVar5 + 0x59)" ( (binary_expression "(long)param_1 + lVar5 + 0x59" (binary_expression "(long)param_1 + lVar5" (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) + number_literal) )))) = number_literal) ;) (return_statement "return param_1 + 0xb;" return (binary_expression "param_1 + 0xb" identifier + number_literal) ;) })) })) (expression_statement "puVar8 = (undefined8 *)FUN_00105220(0x11);" (assignment_expression "puVar8 = (undefined8 *)FUN_00105220(0x11)" identifier = (cast_expression "(undefined8 *)FUN_00105220(0x11)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00105220(0x11)" identifier (argument_list "(0x11)" ( number_literal ))))) ;) (expression_statement "uVar6 = param_1[0xb];" (assignment_expression "uVar6 = param_1[0xb]" identifier = (subscript_expression "param_1[0xb]" identifier [ number_literal ])) ;) (expression_statement "uVar2 = param_1[0xc];" (assignment_expression "uVar2 = param_1[0xc]" identifier = (subscript_expression "param_1[0xc]" identifier [ number_literal ])) ;) (expression_statement "*(undefined1 *)(puVar8 + 2) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 2) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 2)" * (cast_expression "(undefined1 *)(puVar8 + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar8 + 2)" ( (binary_expression "puVar8 + 2" identifier + number_literal) )))) = number_literal) ;) (expression_statement "*puVar8 = uVar6;" (assignment_expression "*puVar8 = uVar6" (pointer_expression "*puVar8" * identifier) = identifier) ;) (expression_statement "puVar8[1] = uVar2;" (assignment_expression "puVar8[1] = uVar2" (subscript_expression "puVar8[1]" identifier [ number_literal ]) = identifier) ;) }))) (return_statement "return puVar8;" 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 (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * (array_declarator 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 (sized_type_specifier long)) ) 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 (sized_type_specifier long)) ) 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 (sized_type_specifier long)) ) IDENT) + LIT) ))) , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (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 (sized_type_specifier long)) ) 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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (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 (subscript_expression IDENT [ IDENT ]) != (char_literal ' escape_sequence ')) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression (subscript_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 (subscript_expression IDENT [ IDENT ]) == (char_literal ' escape_sequence '))) ))) )) (break_statement break ;)) }) while (parenthesized_expression ( (binary_expression (subscript_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 (subscript_expression IDENT [ (binary_expression IDENT - LIT) ]) == (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 IDENT = (binary_expression IDENT + IDENT)) ;) })) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != LIT) )) && (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) (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 ))) ;) (return_statement return IDENT ;) })) (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 { (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 (sized_type_specifier long)) ) 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 (sized_type_specifier long)) ) 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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) }))) (return_statement return IDENT ;) })))
(function_definition "undefined8 * FUN_00104510(undefined8 *param_1,undefined8 param_2)\n\n{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  void *__ptr;\n  undefined8 *puVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  ulong uVar11;\n  ulong uVar12;\n  char *pcVar13;\n  char *local_30 [2];\n  \n  lVar3 = 0;\n  if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }\n  return puVar8;\n}" (type_identifier "undefined8") (pointer_declarator "* FUN_00104510(undefined8 *param_1,undefined8 param_2)" (* "*") (function_declarator "FUN_00104510(undefined8 *param_1,undefined8 param_2)" (identifier "FUN_00104510") (parameter_list "(undefined8 *param_1,undefined8 param_2)" (( "(") (parameter_declaration "undefined8 *param_1" (type_identifier "undefined8") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "undefined8 param_2" (type_identifier "undefined8") (identifier "param_2")) () ")")))) (compound_statement "{\n  undefined1 uVar1;\n  undefined8 uVar2;\n  long lVar3;\n  int iVar4;\n  long lVar5;\n  undefined8 uVar6;\n  ulong uVar7;\n  void *__ptr;\n  undefined8 *puVar8;\n  ulong uVar9;\n  undefined1 *puVar10;\n  ulong uVar11;\n  ulong uVar12;\n  char *pcVar13;\n  char *local_30 [2];\n  \n  lVar3 = 0;\n  if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }\n  return puVar8;\n}" ({ "{") (declaration "undefined1 uVar1;" (type_identifier "undefined1") (identifier "uVar1") (; ";")) (declaration "undefined8 uVar2;" (type_identifier "undefined8") (identifier "uVar2") (; ";")) (declaration "long lVar3;" (sized_type_specifier "long" (long "long")) (identifier "lVar3") (; ";")) (declaration "int iVar4;" (primitive_type "int") (identifier "iVar4") (; ";")) (declaration "long lVar5;" (sized_type_specifier "long" (long "long")) (identifier "lVar5") (; ";")) (declaration "undefined8 uVar6;" (type_identifier "undefined8") (identifier "uVar6") (; ";")) (declaration "ulong uVar7;" (type_identifier "ulong") (identifier "uVar7") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined8 *puVar8;" (type_identifier "undefined8") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "ulong uVar9;" (type_identifier "ulong") (identifier "uVar9") (; ";")) (declaration "undefined1 *puVar10;" (type_identifier "undefined1") (pointer_declarator "*puVar10" (* "*") (identifier "puVar10")) (; ";")) (declaration "ulong uVar11;" (type_identifier "ulong") (identifier "uVar11") (; ";")) (declaration "ulong uVar12;" (type_identifier "ulong") (identifier "uVar12") (; ";")) (declaration "char *pcVar13;" (primitive_type "char") (pointer_declarator "*pcVar13" (* "*") (identifier "pcVar13")) (; ";")) (declaration "char *local_30 [2];" (primitive_type "char") (pointer_declarator "*local_30 [2]" (* "*") (array_declarator "local_30 [2]" (identifier "local_30") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "lVar3 = 0;" (assignment_expression "lVar3 = 0" (identifier "lVar3") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(char *)(param_1 + 0xb) == '/') {\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }\n  else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }" (if "if") (parenthesized_expression "(*(char *)(param_1 + 0xb) == '/')" (( "(") (binary_expression "*(char *)(param_1 + 0xb) == '/'" (pointer_expression "*(char *)(param_1 + 0xb)" (* "*") (cast_expression "(char *)(param_1 + 0xb)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0xb)" (( "(") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) () ")")))) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n    if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }\n    uVar1 = *(undefined1 *)((long)param_1 + 0x92);\n    param_1[8] = 0;\n    *(undefined1 *)((long)param_1 + 0x92) = 0;\n    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);\n    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }\n    uVar9 = param_1[7];\n    *(undefined1 *)((long)param_1 + 0x92) = uVar1;\n    if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }\n  }" ({ "{") (if_statement "if ((param_1[6] == 0) || (param_1[7] == 0)) {\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }" (if "if") (parenthesized_expression "((param_1[6] == 0) || (param_1[7] == 0))" (( "(") (binary_expression "(param_1[6] == 0) || (param_1[7] == 0)" (parenthesized_expression "(param_1[6] == 0)" (( "(") (binary_expression "param_1[6] == 0" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (== "==") (number_literal "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")) () ")"))) () ")")) (compound_statement "{\n      pcVar13 = "Archive member uses long names, but no longname table found\n";\nLAB_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);\n      error(uVar6);\n      return (undefined8 *)0x0;\n    }" ({ "{") (expression_statement "pcVar13 = "Archive member uses long names, but no longname table found\n";" (assignment_expression "pcVar13 = "Archive member uses long names, but no longname table found\n"" (identifier "pcVar13") (= "=") (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_00104585:\n      uVar6 = dcgettext(0,pcVar13,5);" (statement_identifier "LAB_00104585") (: ":") (expression_statement "uVar6 = dcgettext(0,pcVar13,5);" (assignment_expression "uVar6 = dcgettext(0,pcVar13,5)" (identifier "uVar6") (= "=") (call_expression "dcgettext(0,pcVar13,5)" (identifier "dcgettext") (argument_list "(0,pcVar13,5)" (( "(") (number_literal "0") (, ",") (identifier "pcVar13") (, ",") (number_literal "5") () ")")))) (; ";"))) (expression_statement "error(uVar6);" (call_expression "error(uVar6)" (identifier "error") (argument_list "(uVar6)" (( "(") (identifier "uVar6") () ")"))) (; ";")) (return_statement "return (undefined8 *)0x0;" (return "return") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")) (; ";")) (} "}"))) (expression_statement "uVar1 = *(undefined1 *)((long)param_1 + 0x92);" (assignment_expression "uVar1 = *(undefined1 *)((long)param_1 + 0x92)" (identifier "uVar1") (= "=") (pointer_expression "*(undefined1 *)((long)param_1 + 0x92)" (* "*") (cast_expression "(undefined1 *)((long)param_1 + 0x92)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x92)" (( "(") (binary_expression "(long)param_1 + 0x92" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x92")) () ")"))))) (; ";")) (expression_statement "param_1[8] = 0;" (assignment_expression "param_1[8] = 0" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "*(undefined1 *)((long)param_1 + 0x92) = 0;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x92) = 0" (pointer_expression "*(undefined1 *)((long)param_1 + 0x92)" (* "*") (cast_expression "(undefined1 *)((long)param_1 + 0x92)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x92)" (( "(") (binary_expression "(long)param_1 + 0x92" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x92")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);" (assignment_expression "uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10)" (identifier "uVar7") (= "=") (call_expression "strtoul((char *)((long)param_1 + 0x59),local_30,10)" (identifier "strtoul") (argument_list "((char *)((long)param_1 + 0x59),local_30,10)" (( "(") (cast_expression "(char *)((long)param_1 + 0x59)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x59)" (( "(") (binary_expression "(long)param_1 + 0x59" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x59")) () ")"))) (, ",") (identifier "local_30") (, ",") (number_literal "10") () ")")))) (; ";")) (if_statement "if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }" (if "if") (parenthesized_expression "(((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':'))" (( "(") (binary_expression "((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')" (parenthesized_expression "((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0))" (( "(") (binary_expression "(*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)" (parenthesized_expression "(*(int *)(param_1 + 10) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 10) != 0" (pointer_expression "*(int *)(param_1 + 10)" (* "*") (cast_expression "(int *)(param_1 + 10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(local_30[0] != (char *)0x0)" (( "(") (binary_expression "local_30[0] != (char *)0x0" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]")) (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*local_30[0] == ':')" (( "(") (binary_expression "*local_30[0] == ':'" (pointer_expression "*local_30[0]" (* "*") (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (number_literal "0") (] "]"))) (== "==") (char_literal "':'" (' "'") (character ":") (' "'"))) () ")"))) () ")")) (compound_statement "{\n      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);\n      param_1[8] = uVar9;\n    }" ({ "{") (expression_statement "uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);" (assignment_expression "uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10)" (identifier "uVar9") (= "=") (call_expression "strtoul(local_30[0] + 1,(char **)0x0,10)" (identifier "strtoul") (argument_list "(local_30[0] + 1,(char **)0x0,10)" (( "(") (binary_expression "local_30[0] + 1" (subscript_expression "local_30[0]" (identifier "local_30") ([ "[") (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[8] = uVar9;" (assignment_expression "param_1[8] = uVar9" (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "uVar9 = param_1[7];" (assignment_expression "uVar9 = param_1[7]" (identifier "uVar9") (= "=") (subscript_expression "param_1[7]" (identifier "param_1") ([ "[") (number_literal "7") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)((long)param_1 + 0x92) = uVar1;" (assignment_expression "*(undefined1 *)((long)param_1 + 0x92) = uVar1" (pointer_expression "*(undefined1 *)((long)param_1 + 0x92)" (* "*") (cast_expression "(undefined1 *)((long)param_1 + 0x92)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + 0x92)" (( "(") (binary_expression "(long)param_1 + 0x92" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (number_literal "0x92")) () ")")))) (= "=") (identifier "uVar1")) (; ";")) (if_statement "if (uVar9 < uVar7) {\n      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);\n      error(uVar6,uVar7);\n      puVar8 = (undefined8 *)0x0;\n    }\n    else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }" (if "if") (parenthesized_expression "(uVar9 < uVar7)" (( "(") (binary_expression "uVar9 < uVar7" (identifier "uVar9") (< "<") (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      puVar8 = (undefined8 *)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 "puVar8 = (undefined8 *)0x0;" (assignment_expression "puVar8 = (undefined8 *)0x0" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (} "}")) (else_clause "else {\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }" (else "else") (compound_statement "{\n      puVar10 = (undefined1 *)param_1[6];\n      uVar12 = uVar7;\n      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }\n      if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }\n      *puVar10 = 0;\n      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }\n      puVar8 = (undefined8 *)(param_1[6] + uVar7);\n    }" ({ "{") (expression_statement "puVar10 = (undefined1 *)param_1[6];" (assignment_expression "puVar10 = (undefined1 *)param_1[6]" (identifier "puVar10") (= "=") (cast_expression "(undefined1 *)param_1[6]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")))) (; ";")) (expression_statement "uVar12 = uVar7;" (assignment_expression "uVar12 = uVar7" (identifier "uVar12") (= "=") (identifier "uVar7")) (; ";")) (if_statement "if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))\n      {\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }" (if "if") (parenthesized_expression "(((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))" (( "(") (binary_expression "((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n')" (parenthesized_expression "((uVar7 < uVar9) && (puVar10[uVar7] != '\0'))" (( "(") (binary_expression "(uVar7 < uVar9) && (puVar10[uVar7] != '\0')" (parenthesized_expression "(uVar7 < uVar9)" (( "(") (binary_expression "uVar7 < uVar9" (identifier "uVar7") (< "<") (identifier "uVar9")) () ")")) (&& "&&") (parenthesized_expression "(puVar10[uVar7] != '\0')" (( "(") (binary_expression "puVar10[uVar7] != '\0'" (subscript_expression "puVar10[uVar7]" (identifier "puVar10") ([ "[") (identifier "uVar7") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(uVar11 = uVar7, puVar10[uVar7] != '\n')" (( "(") (comma_expression "uVar11 = uVar7, puVar10[uVar7] != '\n'" (assignment_expression "uVar11 = uVar7" (identifier "uVar11") (= "=") (identifier "uVar7")) (, ",") (binary_expression "puVar10[uVar7] != '\n'" (subscript_expression "puVar10[uVar7]" (identifier "puVar10") ([ "[") (identifier "uVar7") (] "]")) (!= "!=") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'")))) () ")"))) () ")")) (compound_statement "{\n        do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');\n      }" ({ "{") (do_statement "do {\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        } while (puVar10[uVar11] != '\0');" (do "do") (compound_statement "{\n          uVar11 = uVar11 + 1;\n          uVar12 = uVar9;\n          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;\n        }" ({ "{") (expression_statement "uVar11 = uVar11 + 1;" (assignment_expression "uVar11 = uVar11 + 1" (identifier "uVar11") (= "=") (binary_expression "uVar11 + 1" (identifier "uVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" (identifier "uVar12") (= "=") (identifier "uVar9")) (; ";")) (if_statement "if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;" (if "if") (parenthesized_expression "((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n'))" (( "(") (binary_expression "(uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')" (parenthesized_expression "(uVar9 == uVar11)" (( "(") (binary_expression "uVar9 == uVar11" (identifier "uVar9") (== "==") (identifier "uVar11")) () ")")) (|| "||") (parenthesized_expression "(uVar12 = uVar11, puVar10[uVar11] == '\n')" (( "(") (comma_expression "uVar12 = uVar11, puVar10[uVar11] == '\n'" (assignment_expression "uVar12 = uVar11" (identifier "uVar12") (= "=") (identifier "uVar11")) (, ",") (binary_expression "puVar10[uVar11] == '\n'" (subscript_expression "puVar10[uVar11]" (identifier "puVar10") ([ "[") (identifier "uVar11") (] "]")) (== "==") (char_literal "'\n'" (' "'") (escape_sequence "\n") (' "'")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "(puVar10[uVar11] != '\0')" (( "(") (binary_expression "puVar10[uVar11] != '\0'" (subscript_expression "puVar10[uVar11]" (identifier "puVar10") ([ "[") (identifier "uVar11") (] "]")) (!= "!=") (char_literal "'\0'" (' "'") (escape_sequence "\0") (' "'"))) () ")")) (; ";")) (} "}"))) (if_statement "if (uVar12 != 0) {\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }" (if "if") (parenthesized_expression "(uVar12 != 0)" (( "(") (binary_expression "uVar12 != 0" (identifier "uVar12") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }\n        if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }\n        puVar10 = puVar10 + uVar12;\n      }" ({ "{") (if_statement "if (puVar10[uVar12 - 1] == '/') {\n          uVar12 = uVar12 - 1;\n        }" (if "if") (parenthesized_expression "(puVar10[uVar12 - 1] == '/')" (( "(") (binary_expression "puVar10[uVar12 - 1] == '/'" (subscript_expression "puVar10[uVar12 - 1]" (identifier "puVar10") ([ "[") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1")) (] "]")) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n          uVar12 = uVar12 - 1;\n        }" ({ "{") (expression_statement "uVar12 = uVar12 - 1;" (assignment_expression "uVar12 = uVar12 - 1" (identifier "uVar12") (= "=") (binary_expression "uVar12 - 1" (identifier "uVar12") (- "-") (number_literal "1"))) (; ";")) (} "}"))) (if_statement "if (uVar9 < uVar12) {\n          uVar12 = uVar9;\n        }" (if "if") (parenthesized_expression "(uVar9 < uVar12)" (( "(") (binary_expression "uVar9 < uVar12" (identifier "uVar9") (< "<") (identifier "uVar12")) () ")")) (compound_statement "{\n          uVar12 = uVar9;\n        }" ({ "{") (expression_statement "uVar12 = uVar9;" (assignment_expression "uVar12 = uVar9" (identifier "uVar12") (= "=") (identifier "uVar9")) (; ";")) (} "}"))) (expression_statement "puVar10 = puVar10 + uVar12;" (assignment_expression "puVar10 = puVar10 + uVar12" (identifier "puVar10") (= "=") (binary_expression "puVar10 + uVar12" (identifier "puVar10") (+ "+") (identifier "uVar12"))) (; ";")) (} "}"))) (expression_statement "*puVar10 = 0;" (assignment_expression "*puVar10 = 0" (pointer_expression "*puVar10" (* "*") (identifier "puVar10")) (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {\n        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }" (if "if") (parenthesized_expression "((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0))" (( "(") (binary_expression "(*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)" (parenthesized_expression "(*(int *)(param_1 + 10) != 0)" (( "(") (binary_expression "*(int *)(param_1 + 10) != 0" (pointer_expression "*(int *)(param_1 + 10)" (* "*") (cast_expression "(int *)(param_1 + 10)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 10)" (( "(") (binary_expression "param_1 + 10" (identifier "param_1") (+ "+") (number_literal "10")) () ")")))) (!= "!=") (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        if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }\n        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);\n        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }\n        free(__ptr);\n      }" ({ "{") (if_statement "if (uVar12 <= uVar7) {\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }" (if "if") (parenthesized_expression "(uVar12 <= uVar7)" (( "(") (binary_expression "uVar12 <= uVar7" (identifier "uVar12") (<= "<=") (identifier "uVar7")) () ")")) (compound_statement "{\n          pcVar13 = "Invalid Thin archive member name\n";\n          goto LAB_00104585;\n        }" ({ "{") (expression_statement "pcVar13 = "Invalid Thin archive member name\n";" (assignment_expression "pcVar13 = "Invalid Thin archive member name\n"" (identifier "pcVar13") (= "=") (string_literal ""Invalid Thin archive member name\n"" (" """) (string_content "Invalid Thin archive member name") (escape_sequence "\n") (" """))) (; ";")) (goto_statement "goto LAB_00104585;" (goto "goto") (statement_identifier "LAB_00104585") (; ";")) (} "}"))) (expression_statement "__ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);" (assignment_expression "__ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" (identifier "__ptr") (= "=") (cast_expression "(void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" (identifier "FUN_00103f60") (argument_list "(*param_1,param_1[6] + uVar7,uVar12 - uVar7)" (( "(") (pointer_expression "*param_1" (* "*") (identifier "param_1")) (, ",") (binary_expression "param_1[6] + uVar7" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (identifier "uVar7")) (, ",") (binary_expression "uVar12 - uVar7" (identifier "uVar12") (- "-") (identifier "uVar7")) () ")"))))) (; ";")) (if_statement "if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))\n        {\n          free(__ptr);\n          return puVar8;\n        }" (if "if") (parenthesized_expression "(((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))" (( "(") (binary_expression "((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&\n           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0)" (parenthesized_expression "((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0))" (( "(") (binary_expression "(__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 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 "(iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)" (( "(") (comma_expression "iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0" (assignment_expression "iVar4 = FUN_001043e0(param_2,__ptr)" (identifier "iVar4") (= "=") (call_expression "FUN_001043e0(param_2,__ptr)" (identifier "FUN_001043e0") (argument_list "(param_2,__ptr)" (( "(") (identifier "param_2") (, ",") (identifier "__ptr") () ")")))) (, ",") (binary_expression "iVar4 == 0" (identifier "iVar4") (== "==") (number_literal "0"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0)" (( "(") (comma_expression "puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0" (assignment_expression "puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0)" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)FUN_00104450(param_2,param_1[8],0)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00104450(param_2,param_1[8],0)" (identifier "FUN_00104450") (argument_list "(param_2,param_1[8],0)" (( "(") (identifier "param_2") (, ",") (subscript_expression "param_1[8]" (identifier "param_1") ([ "[") (number_literal "8") (] "]")) (, ",") (number_literal "0") () ")"))))) (, ",") (binary_expression "puVar8 != (undefined8 *)0x0" (identifier "puVar8") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0")))) () ")"))) () ")")) (compound_statement "{\n          free(__ptr);\n          return puVar8;\n        }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}"))) (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar8 = (undefined8 *)(param_1[6] + uVar7);" (assignment_expression "puVar8 = (undefined8 *)(param_1[6] + uVar7)" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)(param_1[6] + uVar7)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1[6] + uVar7)" (( "(") (binary_expression "param_1[6] + uVar7" (subscript_expression "param_1[6]" (identifier "param_1") ([ "[") (number_literal "6") (] "]")) (+ "+") (identifier "uVar7")) () ")")))) (; ";")) (} "}")))) (} "}")) (else_clause "else {\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }" (else "else") (compound_statement "{\n    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }\n    puVar8 = (undefined8 *)FUN_00105220(0x11);\n    uVar6 = param_1[0xb];\n    uVar2 = param_1[0xc];\n    *(undefined1 *)(puVar8 + 2) = 0;\n    *puVar8 = uVar6;\n    puVar8[1] = uVar2;\n  }" ({ "{") (while_statement "while (lVar5 = lVar3, lVar5 + 1 != 0x10) {\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }" (while "while") (parenthesized_expression "(lVar5 = lVar3, lVar5 + 1 != 0x10)" (( "(") (comma_expression "lVar5 = lVar3, lVar5 + 1 != 0x10" (assignment_expression "lVar5 = lVar3" (identifier "lVar5") (= "=") (identifier "lVar3")) (, ",") (binary_expression "lVar5 + 1 != 0x10" (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1")) (!= "!=") (number_literal "0x10"))) () ")")) (compound_statement "{\n      lVar3 = lVar5 + 1;\n      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }\n    }" ({ "{") (expression_statement "lVar3 = lVar5 + 1;" (assignment_expression "lVar3 = lVar5 + 1" (identifier "lVar3") (= "=") (binary_expression "lVar5 + 1" (identifier "lVar5") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }" (if "if") (parenthesized_expression "(*(char *)((long)param_1 + lVar5 + 0x59) == '/')" (( "(") (binary_expression "*(char *)((long)param_1 + lVar5 + 0x59) == '/'" (pointer_expression "*(char *)((long)param_1 + lVar5 + 0x59)" (* "*") (cast_expression "(char *)((long)param_1 + lVar5 + 0x59)" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + lVar5 + 0x59)" (( "(") (binary_expression "(long)param_1 + lVar5 + 0x59" (binary_expression "(long)param_1 + lVar5" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (identifier "lVar5")) (+ "+") (number_literal "0x59")) () ")")))) (== "==") (char_literal "'/'" (' "'") (character "/") (' "'"))) () ")")) (compound_statement "{\n        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;\n        return param_1 + 0xb;\n      }" ({ "{") (expression_statement "*(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;" (assignment_expression "*(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0" (pointer_expression "*(undefined1 *)((long)param_1 + lVar5 + 0x59)" (* "*") (cast_expression "(undefined1 *)((long)param_1 + lVar5 + 0x59)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_1 + lVar5 + 0x59)" (( "(") (binary_expression "(long)param_1 + lVar5 + 0x59" (binary_expression "(long)param_1 + lVar5" (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1")) (+ "+") (identifier "lVar5")) (+ "+") (number_literal "0x59")) () ")")))) (= "=") (number_literal "0")) (; ";")) (return_statement "return param_1 + 0xb;" (return "return") (binary_expression "param_1 + 0xb" (identifier "param_1") (+ "+") (number_literal "0xb")) (; ";")) (} "}"))) (} "}"))) (expression_statement "puVar8 = (undefined8 *)FUN_00105220(0x11);" (assignment_expression "puVar8 = (undefined8 *)FUN_00105220(0x11)" (identifier "puVar8") (= "=") (cast_expression "(undefined8 *)FUN_00105220(0x11)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00105220(0x11)" (identifier "FUN_00105220") (argument_list "(0x11)" (( "(") (number_literal "0x11") () ")"))))) (; ";")) (expression_statement "uVar6 = param_1[0xb];" (assignment_expression "uVar6 = param_1[0xb]" (identifier "uVar6") (= "=") (subscript_expression "param_1[0xb]" (identifier "param_1") ([ "[") (number_literal "0xb") (] "]"))) (; ";")) (expression_statement "uVar2 = param_1[0xc];" (assignment_expression "uVar2 = param_1[0xc]" (identifier "uVar2") (= "=") (subscript_expression "param_1[0xc]" (identifier "param_1") ([ "[") (number_literal "0xc") (] "]"))) (; ";")) (expression_statement "*(undefined1 *)(puVar8 + 2) = 0;" (assignment_expression "*(undefined1 *)(puVar8 + 2) = 0" (pointer_expression "*(undefined1 *)(puVar8 + 2)" (* "*") (cast_expression "(undefined1 *)(puVar8 + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar8 + 2)" (( "(") (binary_expression "puVar8 + 2" (identifier "puVar8") (+ "+") (number_literal "2")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "*puVar8 = uVar6;" (assignment_expression "*puVar8 = uVar6" (pointer_expression "*puVar8" (* "*") (identifier "puVar8")) (= "=") (identifier "uVar6")) (; ";")) (expression_statement "puVar8[1] = uVar2;" (assignment_expression "puVar8[1] = uVar2" (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]")) (= "=") (identifier "uVar2")) (; ";")) (} "}")))) (return_statement "return puVar8;" (return "return") (identifier "puVar8") (; ";")) (} "}")))

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

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


(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: (sized_type_specifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (identifier)) (declaration type: (sized_type_specifier) 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: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (type_identifier) declarator: (identifier)) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (identifier))) (declaration type: (primitive_type) declarator: (pointer_declarator declarator: (array_declarator declarator: (identifier) size: (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: (sized_type_specifier)) 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: (sized_type_specifier)) 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: (sized_type_specifier)) 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: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (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: (sized_type_specifier)) 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: (cast_expression type: (type_descriptor type: (type_identifier) declarator: (abstract_pointer_declarator)) value: (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: (subscript_expression argument: (identifier) index: (identifier)) right: (char_literal (escape_sequence)))))) right: (parenthesized_expression (comma_expression left: (assignment_expression left: (identifier) right: (identifier)) right: (binary_expression left: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (identifier)) right: (char_literal (escape_sequence))))))) consequence: (break_statement))) condition: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (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: (subscript_expression argument: (identifier) index: (binary_expression left: (identifier) right: (number_literal))) 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: (identifier) right: (binary_expression left: (identifier) right: (identifier)))))) (expression_statement (assignment_expression left: (pointer_expression argument: (identifier)) right: (number_literal))) (if_statement condition: (parenthesized_expression (binary_expression left: (parenthesized_expression (binary_expression left: (pointer_expression argument: (cast_expression type: (type_descriptor type: (primitive_type) declarator: (abstract_pointer_declarator)) value: (parenthesized_expression (binary_expression left: (identifier) right: (number_literal))))) right: (number_literal))) right: (parenthesized_expression (binary_expression left: (subscript_expression argument: (identifier) index: (number_literal)) right: (number_literal))))) consequence: (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)))) (return_statement (identifier)))) (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 (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: (sized_type_specifier)) 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: (sized_type_specifier)) 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: (subscript_expression argument: (identifier) index: (number_literal)) right: (identifier)))))) (return_statement (identifier)))))

undefined8 * MASKED(undefined8 *param_1,undefined8 param_2)

{
  undefined1 uVar1;
  undefined8 uVar2;
  long lVar3;
  int iVar4;
  long lVar5;
  undefined8 uVar6;
  ulong uVar7;
  void *__ptr;
  undefined8 *puVar8;
  ulong uVar9;
  undefined1 *puVar10;
  ulong uVar11;
  ulong uVar12;
  char *pcVar13;
  char *local_30 [2];
  
  lVar3 = 0;
  if (*(char *)(param_1 + 0xb) == '/') {
    if ((param_1[6] == 0) || (param_1[7] == 0)) {
      pcVar13 = "Archive member uses long names, but no longname table found\n";
LAB_00104585:
      uVar6 = dcgettext(0,pcVar13,5);
      error(uVar6);
      return (undefined8 *)0x0;
    }
    uVar1 = *(undefined1 *)((long)param_1 + 0x92);
    param_1[8] = 0;
    *(undefined1 *)((long)param_1 + 0x92) = 0;
    uVar7 = strtoul((char *)((long)param_1 + 0x59),local_30,10);
    if (((*(int *)(param_1 + 10) != 0) && (local_30[0] != (char *)0x0)) && (*local_30[0] == ':')) {
      uVar9 = strtoul(local_30[0] + 1,(char **)0x0,10);
      param_1[8] = uVar9;
    }
    uVar9 = param_1[7];
    *(undefined1 *)((long)param_1 + 0x92) = uVar1;
    if (uVar9 < uVar7) {
      uVar6 = dcgettext(0,"Found long name index (%ld) beyond end of long name table\n",5);
      error(uVar6,uVar7);
      puVar8 = (undefined8 *)0x0;
    }
    else {
      puVar10 = (undefined1 *)param_1[6];
      uVar12 = uVar7;
      if (((uVar7 < uVar9) && (puVar10[uVar7] != '\0')) && (uVar11 = uVar7, puVar10[uVar7] != '\n'))
      {
        do {
          uVar11 = uVar11 + 1;
          uVar12 = uVar9;
          if ((uVar9 == uVar11) || (uVar12 = uVar11, puVar10[uVar11] == '\n')) break;
        } while (puVar10[uVar11] != '\0');
      }
      if (uVar12 != 0) {
        if (puVar10[uVar12 - 1] == '/') {
          uVar12 = uVar12 - 1;
        }
        if (uVar9 < uVar12) {
          uVar12 = uVar9;
        }
        puVar10 = puVar10 + uVar12;
      }
      *puVar10 = 0;
      if ((*(int *)(param_1 + 10) != 0) && (param_1[8] != 0)) {
        if (uVar12 <= uVar7) {
          pcVar13 = "Invalid Thin archive member name\n";
          goto LAB_00104585;
        }
        __ptr = (void *)FUN_00103f60(*param_1,param_1[6] + uVar7,uVar12 - uVar7);
        if (((__ptr != (void *)0x0) && (iVar4 = FUN_001043e0(param_2,__ptr), iVar4 == 0)) &&
           (puVar8 = (undefined8 *)FUN_00104450(param_2,param_1[8],0), puVar8 != (undefined8 *)0x0))
        {
          free(__ptr);
          return puVar8;
        }
        free(__ptr);
      }
      puVar8 = (undefined8 *)(param_1[6] + uVar7);
    }
  }
  else {
    while (lVar5 = lVar3, lVar5 + 1 != 0x10) {
      lVar3 = lVar5 + 1;
      if (*(char *)((long)param_1 + lVar5 + 0x59) == '/') {
        *(undefined1 *)((long)param_1 + lVar5 + 0x59) = 0;
        return param_1 + 0xb;
      }
    }
    puVar8 = (undefined8 *)FUN_00105220(0x11);
    uVar6 = param_1[0xb];
    uVar2 = param_1[0xc];
    *(undefined1 *)(puVar8 + 2) = 0;
    *puVar8 = uVar6;
    puVar8[1] = uVar2;
  }
  return puVar8;
}

