
group * convert_options(argp *argp,group *parent,uint parent_index,group *group,
                       parser_convert_state *cvt)

{
  char *pcVar1;
  rpl_option *prVar2;
  char *__s1;
  void **ppvVar3;
  uint uVar4;
  ushort **ppuVar5;
  group *group_00;
  ulong uVar6;
  argp_option *paVar7;
  int iVar8;
  argp *argp_00;
  rpl_option *prVar9;
  argp_option *paVar10;
  argp_child *local_68;
  group *local_58;
  
  paVar7 = argp->options;
  local_68 = argp->children;
  paVar10 = paVar7;
  if (paVar7 == (argp_option *)0x0) {
    if (argp->parser == (argp_parser_t)0x0) {
      local_58 = (group *)0x0;
      group_00 = group;
      goto LAB_00108f78;
    }
  }
  else {
    for (; (((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||
            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0)); paVar7 = paVar7 + 1) {
      if ((paVar7->flags & 4U) == 0) {
        paVar10 = paVar7;
      }
      if ((paVar10->flags & 8U) == 0) {
        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&
           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0
           )) {
          pcVar1 = cvt->short_end;
          cvt->short_end = pcVar1 + 1;
          *pcVar1 = (char)iVar8;
          if (paVar10->arg != (char *)0x0) {
            pcVar1 = cvt->short_end;
            cvt->short_end = pcVar1 + 1;
            *pcVar1 = ':';
            if ((paVar10->flags & 1) != 0) {
              pcVar1 = cvt->short_end;
              cvt->short_end = pcVar1 + 1;
              *pcVar1 = ':';
            }
          }
          *cvt->short_end = '\0';
        }
        pcVar1 = paVar7->name;
        if (pcVar1 != (char *)0x0) {
          prVar2 = cvt->parser->long_opts;
          __s1 = prVar2->name;
          prVar9 = prVar2;
          while (__s1 != (char *)0x0) {
            iVar8 = strcmp(__s1,pcVar1);
            if (iVar8 == 0) {
              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;
              break;
            }
            prVar9 = prVar9 + 1;
            __s1 = prVar9->name;
          }
          cvt->long_end->name = pcVar1;
          iVar8 = 0;
          if (paVar10->arg != (char *)0x0) {
            iVar8 = (paVar10->flags & 1U) + 1;
          }
          cvt->long_end->has_arg = iVar8;
          cvt->long_end->flag = (int *)0x0;
          uVar4 = paVar7->key;
          if (uVar4 == 0) {
            uVar4 = paVar10->key;
          }
          cvt->long_end->val =
               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +
               (uVar4 & 0xffffff);
          prVar2 = cvt->long_end;
          cvt->long_end = prVar2 + 1;
          prVar2[1].name = (char *)0x0;
        }
      }
LAB_00108d87:
    }
  }
  group->parser = argp->parser;
  group->argp = argp;
  group->short_end = cvt->short_end;
  group->args_processed = 0;
  group->parent = parent;
  group->parent_index = parent_index;
  group->input = (void *)0x0;
  group->hook = (void *)0x0;
  group->child_inputs = (void **)0x0;
  if (local_68 != (argp_child *)0x0) {
    if (local_68->argp == (argp *)0x0) {
      uVar6 = 0;
    }
    else {
      uVar4 = 0;
      do {
        uVar4 = uVar4 + 1;
        uVar6 = (ulong)uVar4;
      } while (local_68[uVar6].argp != (argp *)0x0);
    }
    ppvVar3 = cvt->child_inputs_end;
    group->child_inputs = ppvVar3;
    cvt->child_inputs_end = ppvVar3 + uVar6;
  }
  group_00 = group + 1;
  local_58 = group;
LAB_00108f78:
  if ((local_68 != (argp_child *)0x0) && (argp_00 = local_68->argp, argp_00 != (argp *)0x0)) {
    uVar4 = 0;
    do {
      local_68 = local_68 + 1;
      group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);
      argp_00 = local_68->argp;
      uVar4 = uVar4 + 1;
    } while (argp_00 != (argp *)0x0);
  }
  return group_00;
}



void FUN_00108d09(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)

{
  undefined1 *puVar1;
  char *__s2;
  undefined8 *puVar2;
  char *__s1;
  uint uVar3;
  ushort **ppuVar4;
  long *plVar5;
  ulong uVar6;
  int iVar7;
  long lVar8;
  undefined8 *puVar9;
  long *plVar10;
  long *local_68;
  long *local_58;
  
  plVar5 = (long *)*param_1;
  local_68 = (long *)param_1[4];
  plVar10 = plVar5;
  if (plVar5 == (long *)0x0) {
    if (param_1[1] == 0) {
      local_58 = (long *)0x0;
      plVar5 = param_4;
      goto LAB_00108f78;
    }
  }
  else {
    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||
           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {
      if ((*(uint *)(plVar5 + 3) & 4) == 0) {
        plVar10 = plVar5;
      }
      if ((*(uint *)(plVar10 + 3) & 8) == 0) {
        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&
           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0
           )) {
          puVar1 = (undefined1 *)param_5[1];
          param_5[1] = (long)(puVar1 + 1);
          *puVar1 = (char)iVar7;
          if (plVar10[2] != 0) {
            puVar1 = (undefined1 *)param_5[1];
            param_5[1] = (long)(puVar1 + 1);
            *puVar1 = 0x3a;
            if ((*(byte *)(plVar10 + 3) & 1) != 0) {
              puVar1 = (undefined1 *)param_5[1];
              param_5[1] = (long)(puVar1 + 1);
              *puVar1 = 0x3a;
            }
          }
          *(undefined1 *)param_5[1] = 0;
        }
        __s2 = (char *)*plVar5;
        if (__s2 != (char *)0x0) {
          puVar2 = *(undefined8 **)(*param_5 + 0x10);
          __s1 = (char *)*puVar2;
          puVar9 = puVar2;
          while (__s1 != (char *)0x0) {
            iVar7 = strcmp(__s1,__s2);
            if (iVar7 == 0) {
              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;
              break;
            }
            puVar9 = puVar9 + 4;
            __s1 = (char *)*puVar9;
          }
          *(char **)param_5[2] = __s2;
          iVar7 = 0;
          if (plVar10[2] != 0) {
            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;
          }
          *(int *)(param_5[2] + 8) = iVar7;
          *(undefined8 *)(param_5[2] + 0x10) = 0;
          uVar3 = *(uint *)(plVar5 + 1);
          if (uVar3 == 0) {
            uVar3 = *(uint *)(plVar10 + 1);
          }
          *(uint *)(param_5[2] + 0x18) =
               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000
               + (uVar3 & 0xffffff);
          lVar8 = param_5[2];
          param_5[2] = lVar8 + 0x20;
          *(undefined8 *)(lVar8 + 0x20) = 0;
        }
      }
LAB_00108d87:
    }
  }
  *param_4 = param_1[1];
  param_4[1] = (long)param_1;
  param_4[2] = param_5[1];
  *(undefined4 *)(param_4 + 3) = 0;
  param_4[4] = param_2;
  *(undefined4 *)(param_4 + 5) = param_3;
  param_4[6] = 0;
  param_4[8] = 0;
  param_4[7] = 0;
  if (local_68 != (long *)0x0) {
    if (*local_68 == 0) {
      uVar6 = 0;
    }
    else {
      uVar3 = 0;
      do {
        uVar3 = uVar3 + 1;
        uVar6 = (ulong)uVar3;
      } while (local_68[uVar6 * 4] != 0);
    }
    lVar8 = param_5[3];
    param_4[7] = lVar8;
    param_5[3] = lVar8 + uVar6 * 8;
  }
  plVar5 = param_4 + 9;
  local_58 = param_4;
LAB_00108f78:
  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {
    iVar7 = 0;
    do {
      local_68 = local_68 + 4;
      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);
      lVar8 = *local_68;
      iVar7 = iVar7 + 1;
    } while (lVar8 != 0);
  }
  return;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x38
MOV qword ptr [RSP + 0x18],RDI
MOV qword ptr [RSP + 0x20],RSI
MOV dword ptr [RSP + 0x2c],EDX
MOV qword ptr [RSP + 0x10],RCX
MOV R14,R8
MOV R13,qword ptr [RDI]
MOV RAX,qword ptr [RDI + 0x20]
MOV qword ptr [RSP],RAX
MOV RBX,R13
TEST R13,R13
JNZ 0x00108d8b
CMP qword ptr [RDI + 0x8],0x0
JNZ 0x00108edf
MOV RAX,RCX
MOV qword ptr [RSP + 0x10],R13
JMP 0x00108f78
ADD R12,0x20
MOV RDI,qword ptr [R12]
TEST RDI,RDI
JZ 0x00108e3c
MOV RSI,R15
CALL 0x001032b0
TEST EAX,EAX
JNZ 0x00108d58
SUB R12,qword ptr [RSP + 0x8]
SAR R12,0x5
TEST R12D,R12D
JS 0x00108e3c
ADD RBX,0x30
MOV R12D,dword ptr [RBX + 0x8]
TEST R12D,R12D
JNZ 0x00108d9e
CMP qword ptr [RBX],0x0
JZ 0x00108eca
MOV EAX,dword ptr [RBX + 0x18]
MOV EDX,EAX
AND EDX,0x4
CMOVZ R13,RBX
MOV EBP,dword ptr [R13 + 0x18]
AND EBP,0x8
JNZ 0x00108d87
TEST AL,0x8
JNZ 0x00108e17
LEA EAX,[R12 + -0x1]
CMP EAX,0xfe
JA 0x00108e17
CALL 0x00103500
MOVSXD RDX,R12D
MOV RAX,qword ptr [RAX]
TEST byte ptr [RAX + RDX*0x2 + 0x1],0x40
JZ 0x00108e17
MOV RAX,qword ptr [R14 + 0x8]
LEA RDX,[RAX + 0x1]
MOV qword ptr [R14 + 0x8],RDX
MOV byte ptr [RAX],R12B
CMP qword ptr [R13 + 0x10],0x0
JZ 0x00108e10
MOV RAX,qword ptr [R14 + 0x8]
LEA RDX,[RAX + 0x1]
MOV qword ptr [R14 + 0x8],RDX
MOV byte ptr [RAX],0x3a
TEST byte ptr [R13 + 0x18],0x1
JZ 0x00108e10
MOV RAX,qword ptr [R14 + 0x8]
LEA RDX,[RAX + 0x1]
MOV qword ptr [R14 + 0x8],RDX
MOV byte ptr [RAX],0x3a
MOV RAX,qword ptr [R14 + 0x8]
MOV byte ptr [RAX],0x0
MOV R15,qword ptr [RBX]
TEST R15,R15
JZ 0x00108d87
MOV RAX,qword ptr [R14]
MOV R12,qword ptr [RAX + 0x10]
MOV qword ptr [RSP + 0x8],R12
MOV RDI,qword ptr [R12]
TEST RDI,RDI
JNZ 0x00108d69
MOV RAX,qword ptr [R14 + 0x10]
MOV qword ptr [RAX],R15
CMP qword ptr [R13 + 0x10],0x0
JZ 0x00108e54
MOV EBP,dword ptr [R13 + 0x18]
AND EBP,0x1
ADD EBP,0x1
MOV RAX,qword ptr [R14 + 0x10]
MOV dword ptr [RAX + 0x8],EBP
MOV RAX,qword ptr [R14 + 0x10]
MOV qword ptr [RAX + 0x10],0x0
MOV EAX,dword ptr [RBX + 0x8]
TEST EAX,EAX
JZ 0x00108ebe
AND EAX,0xffffff
MOV EDX,EAX
MOV RCX,qword ptr [R14 + 0x10]
MOV RAX,qword ptr [R14]
MOV RSI,qword ptr [RSP + 0x10]
SUB RSI,qword ptr [RAX + 0x50]
MOV RAX,RSI
SAR RAX,0x3
MOV RSI,-0x71c71c71c71c71c7
IMUL RAX,RSI
ADD EAX,0x1
SHL EAX,0x18
ADD EAX,EDX
MOV dword ptr [RCX + 0x18],EAX
MOV RAX,qword ptr [R14 + 0x10]
LEA RDX,[RAX + 0x20]
MOV qword ptr [R14 + 0x10],RDX
MOV qword ptr [RAX + 0x20],0x0
JMP 0x00108d87
MOV EDX,dword ptr [R13 + 0x8]
AND EDX,0xffffff
JMP 0x00108e75
CMP qword ptr [RBX + 0x20],0x0
JNZ 0x00108d9e
CMP dword ptr [RBX + 0x28],0x0
JNZ 0x00108d9e
MOV RSI,qword ptr [RSP + 0x18]
MOV RAX,qword ptr [RSI + 0x8]
MOV RCX,qword ptr [RSP + 0x10]
MOV qword ptr [RCX],RAX
MOV qword ptr [RCX + 0x8],RSI
MOV RAX,qword ptr [R14 + 0x8]
MOV qword ptr [RCX + 0x10],RAX
MOV dword ptr [RCX + 0x18],0x0
MOV RAX,qword ptr [RSP + 0x20]
MOV qword ptr [RCX + 0x20],RAX
MOV EAX,dword ptr [RSP + 0x2c]
MOV dword ptr [RCX + 0x28],EAX
MOV qword ptr [RCX + 0x30],0x0
MOV qword ptr [RCX + 0x40],0x0
MOV qword ptr [RCX + 0x38],0x0
MOV RAX,qword ptr [RSP]
TEST RAX,RAX
JZ 0x00108f6f
CMP qword ptr [RAX],0x0
JZ 0x00108fc3
MOV EAX,0x0
ADD EAX,0x1
MOV EDX,EAX
MOV RCX,RDX
SHL RCX,0x5
MOV RSI,qword ptr [RSP]
CMP qword ptr [RSI + RCX*0x1],0x0
JNZ 0x00108f43
MOV RAX,qword ptr [R14 + 0x18]
MOV RSI,qword ptr [RSP + 0x10]
MOV qword ptr [RSI + 0x38],RAX
LEA RAX,[RAX + RDX*0x8]
MOV qword ptr [R14 + 0x18],RAX
MOV RAX,qword ptr [RSP + 0x10]
ADD RAX,0x48
MOV RSI,qword ptr [RSP]
TEST RSI,RSI
JZ 0x00108fb4
MOV RDI,qword ptr [RSI]
TEST RDI,RDI
JZ 0x00108fb4
MOV EDX,0x0
LEA EBX,[RDX + 0x1]
ADD qword ptr [RSP],0x20
MOV R15,qword ptr [RSP]
MOV R8,R14
MOV RCX,RAX
MOV RSI,qword ptr [RSP + 0x10]
CALL 0x00108d09
MOV RDI,qword ptr [R15]
MOV EDX,EBX
TEST RDI,RDI
JNZ 0x00108f8e
ADD RSP,0x38
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EDX,0x0
JMP 0x00108f5a
(translation_unit "void FUN_00108d09(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)\n\n{\n  undefined1 *puVar1;\n  char *__s2;\n  undefined8 *puVar2;\n  char *__s1;\n  uint uVar3;\n  ushort **ppuVar4;\n  long *plVar5;\n  ulong uVar6;\n  int iVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long *local_68;\n  long *local_58;\n  \n  plVar5 = (long *)*param_1;\n  local_68 = (long *)param_1[4];\n  plVar10 = plVar5;\n  if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  *param_4 = param_1[1];\n  param_4[1] = (long)param_1;\n  param_4[2] = param_5[1];\n  *(undefined4 *)(param_4 + 3) = 0;\n  param_4[4] = param_2;\n  *(undefined4 *)(param_4 + 5) = param_3;\n  param_4[6] = 0;\n  param_4[8] = 0;\n  param_4[7] = 0;\n  if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }\n  plVar5 = param_4 + 9;\n  local_58 = param_4;\nLAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00108d09(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)\n\n{\n  undefined1 *puVar1;\n  char *__s2;\n  undefined8 *puVar2;\n  char *__s1;\n  uint uVar3;\n  ushort **ppuVar4;\n  long *plVar5;\n  ulong uVar6;\n  int iVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long *local_68;\n  long *local_58;\n  \n  plVar5 = (long *)*param_1;\n  local_68 = (long *)param_1[4];\n  plVar10 = plVar5;\n  if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  *param_4 = param_1[1];\n  param_4[1] = (long)param_1;\n  param_4[2] = param_5[1];\n  *(undefined4 *)(param_4 + 3) = 0;\n  param_4[4] = param_2;\n  *(undefined4 *)(param_4 + 5) = param_3;\n  param_4[6] = 0;\n  param_4[8] = 0;\n  param_4[7] = 0;\n  if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }\n  plVar5 = param_4 + 9;\n  local_58 = param_4;\nLAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00108d09(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)" identifier (parameter_list "(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "long *param_4" (sized_type_specifier "long" long) (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "long *param_5" (sized_type_specifier "long" long) (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined1 *puVar1;\n  char *__s2;\n  undefined8 *puVar2;\n  char *__s1;\n  uint uVar3;\n  ushort **ppuVar4;\n  long *plVar5;\n  ulong uVar6;\n  int iVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long *local_68;\n  long *local_58;\n  \n  plVar5 = (long *)*param_1;\n  local_68 = (long *)param_1[4];\n  plVar10 = plVar5;\n  if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  *param_4 = param_1[1];\n  param_4[1] = (long)param_1;\n  param_4[2] = param_5[1];\n  *(undefined4 *)(param_4 + 3) = 0;\n  param_4[4] = param_2;\n  *(undefined4 *)(param_4 + 5) = param_3;\n  param_4[6] = 0;\n  param_4[8] = 0;\n  param_4[7] = 0;\n  if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }\n  plVar5 = param_4 + 9;\n  local_58 = param_4;\nLAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }\n  return;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ushort **ppuVar4;" type_identifier (pointer_declarator "**ppuVar4" * (pointer_declarator "*ppuVar4" * identifier)) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (declaration "long *local_68;" (sized_type_specifier "long" long) (pointer_declarator "*local_68" * identifier) ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (expression_statement "plVar5 = (long *)*param_1;" (assignment_expression "plVar5 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_68 = (long *)param_1[4];" (assignment_expression "local_68 = (long *)param_1[4]" identifier = (cast_expression "(long *)param_1[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "plVar10 = plVar5;" (assignment_expression "plVar10 = plVar5" identifier = identifier) ;) (if_statement "if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" if (parenthesized_expression "(plVar5 == (long *)0x0)" ( (binary_expression "plVar5 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }" { (if_statement "if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }" if (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }" { (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar5 = param_4;" (assignment_expression "plVar5 = param_4" identifier = identifier) ;) (goto_statement "goto LAB_00108f78;" goto statement_identifier ;) })) }) (else_clause "else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" else (compound_statement "{\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" { (for_statement "for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }" for ( ; (parenthesized_expression "(((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0))" ( (binary_expression "((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)" (parenthesized_expression "((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0))" ( (binary_expression "(iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)" (parenthesized_expression "(iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0))" ( (comma_expression "iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)" (assignment_expression "iVar7 = (int)plVar5[1]" identifier = (cast_expression "(int)plVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar5[1]" identifier [ number_literal ]))) , (binary_expression "iVar7 != 0 || (*plVar5 != 0)" (binary_expression "iVar7 != 0" identifier != number_literal) || (parenthesized_expression "(*plVar5 != 0)" ( (binary_expression "*plVar5 != 0" (pointer_expression "*plVar5" * identifier) != number_literal) )))) )) || (parenthesized_expression "(plVar5[4] != 0)" ( (binary_expression "plVar5[4] != 0" (subscript_expression "plVar5[4]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "((int)plVar5[5] != 0)" ( (binary_expression "(int)plVar5[5] != 0" (cast_expression "(int)plVar5[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar5[5]" identifier [ number_literal ])) != number_literal) ))) )) ; (assignment_expression "plVar5 = plVar5 + 6" identifier = (binary_expression "plVar5 + 6" identifier + number_literal)) ) (compound_statement "{\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }" { (if_statement "if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }" if (parenthesized_expression "((*(uint *)(plVar5 + 3) & 4) == 0)" ( (binary_expression "(*(uint *)(plVar5 + 3) & 4) == 0" (parenthesized_expression "(*(uint *)(plVar5 + 3) & 4)" ( (binary_expression "*(uint *)(plVar5 + 3) & 4" (pointer_expression "*(uint *)(plVar5 + 3)" * (cast_expression "(uint *)(plVar5 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar5 + 3)" ( (binary_expression "plVar5 + 3" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        plVar10 = plVar5;\n      }" { (expression_statement "plVar10 = plVar5;" (assignment_expression "plVar10 = plVar5" identifier = identifier) ;) })) (if_statement "if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }" if (parenthesized_expression "((*(uint *)(plVar10 + 3) & 8) == 0)" ( (binary_expression "(*(uint *)(plVar10 + 3) & 8) == 0" (parenthesized_expression "(*(uint *)(plVar10 + 3) & 8)" ( (binary_expression "*(uint *)(plVar10 + 3) & 8" (pointer_expression "*(uint *)(plVar10 + 3)" * (cast_expression "(uint *)(plVar10 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 3)" ( (binary_expression "plVar10 + 3" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }" { (if_statement "if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }" if (parenthesized_expression "((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           ))" ( (binary_expression "(((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )" (parenthesized_expression "(((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff))" ( (binary_expression "((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)" (parenthesized_expression "((*(uint *)(plVar5 + 3) & 8) == 0)" ( (binary_expression "(*(uint *)(plVar5 + 3) & 8) == 0" (parenthesized_expression "(*(uint *)(plVar5 + 3) & 8)" ( (binary_expression "*(uint *)(plVar5 + 3) & 8" (pointer_expression "*(uint *)(plVar5 + 3)" * (cast_expression "(uint *)(plVar5 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar5 + 3)" ( (binary_expression "plVar5 + 3" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar7 - 1U < 0xff)" ( (binary_expression "iVar7 - 1U < 0xff" (binary_expression "iVar7 - 1U" identifier - number_literal) < number_literal) ))) )) && (parenthesized_expression "(ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )" ( (comma_expression "ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0" (assignment_expression "ppuVar4 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) , (binary_expression "(*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40)" ( (binary_expression "*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40" (pointer_expression "*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar4 + (long)iVar7 * 2 + 1)" ( (binary_expression "(long)*ppuVar4 + (long)iVar7 * 2 + 1" (binary_expression "(long)*ppuVar4 + (long)iVar7 * 2" (cast_expression "(long)*ppuVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar4" * identifier)) + (binary_expression "(long)iVar7 * 2" (cast_expression "(long)iVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }" { (expression_statement "puVar1 = (undefined1 *)param_5[1];" (assignment_expression "puVar1 = (undefined1 *)param_5[1]" identifier = (cast_expression "(undefined1 *)param_5[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "param_5[1] = (long)(puVar1 + 1);" (assignment_expression "param_5[1] = (long)(puVar1 + 1)" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(long)(puVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "*puVar1 = (char)iVar7;" (assignment_expression "*puVar1 = (char)iVar7" (pointer_expression "*puVar1" * identifier) = (cast_expression "(char)iVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }" if (parenthesized_expression "(plVar10[2] != 0)" ( (binary_expression "plVar10[2] != 0" (subscript_expression "plVar10[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }" { (expression_statement "puVar1 = (undefined1 *)param_5[1];" (assignment_expression "puVar1 = (undefined1 *)param_5[1]" identifier = (cast_expression "(undefined1 *)param_5[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "param_5[1] = (long)(puVar1 + 1);" (assignment_expression "param_5[1] = (long)(puVar1 + 1)" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(long)(puVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "*puVar1 = 0x3a;" (assignment_expression "*puVar1 = 0x3a" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (if_statement "if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }" if (parenthesized_expression "((*(byte *)(plVar10 + 3) & 1) != 0)" ( (binary_expression "(*(byte *)(plVar10 + 3) & 1) != 0" (parenthesized_expression "(*(byte *)(plVar10 + 3) & 1)" ( (binary_expression "*(byte *)(plVar10 + 3) & 1" (pointer_expression "*(byte *)(plVar10 + 3)" * (cast_expression "(byte *)(plVar10 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 3)" ( (binary_expression "plVar10 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }" { (expression_statement "puVar1 = (undefined1 *)param_5[1];" (assignment_expression "puVar1 = (undefined1 *)param_5[1]" identifier = (cast_expression "(undefined1 *)param_5[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "param_5[1] = (long)(puVar1 + 1);" (assignment_expression "param_5[1] = (long)(puVar1 + 1)" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(long)(puVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "*puVar1 = 0x3a;" (assignment_expression "*puVar1 = 0x3a" (pointer_expression "*puVar1" * identifier) = number_literal) ;) })) })) (expression_statement "*(undefined1 *)param_5[1] = 0;" (assignment_expression "*(undefined1 *)param_5[1] = 0" (pointer_expression "*(undefined1 *)param_5[1]" * (cast_expression "(undefined1 *)param_5[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) = number_literal) ;) })) (expression_statement "__s2 = (char *)*plVar5;" (assignment_expression "__s2 = (char *)*plVar5" identifier = (cast_expression "(char *)*plVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar5" * identifier))) ;) (if_statement "if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }" if (parenthesized_expression "(__s2 != (char *)0x0)" ( (binary_expression "__s2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }" { (expression_statement "puVar2 = *(undefined8 **)(*param_5 + 0x10);" (assignment_expression "puVar2 = *(undefined8 **)(*param_5 + 0x10)" identifier = (pointer_expression "*(undefined8 **)(*param_5 + 0x10)" * (cast_expression "(undefined8 **)(*param_5 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x10)" ( (binary_expression "*param_5 + 0x10" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) (expression_statement "__s1 = (char *)*puVar2;" (assignment_expression "__s1 = (char *)*puVar2" identifier = (cast_expression "(char *)*puVar2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (expression_statement "puVar9 = puVar2;" (assignment_expression "puVar9 = puVar2" identifier = identifier) ;) (while_statement "while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }" while (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }" { (expression_statement "iVar7 = strcmp(__s1,__s2);" (assignment_expression "iVar7 = strcmp(__s1,__s2)" identifier = (call_expression "strcmp(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) ;) (if_statement "if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }" { (if_statement "if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;" if (parenthesized_expression "(-1 < (int)((long)puVar9 - (long)puVar2 >> 5))" ( (binary_expression "-1 < (int)((long)puVar9 - (long)puVar2 >> 5)" number_literal < (cast_expression "(int)((long)puVar9 - (long)puVar2 >> 5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)puVar9 - (long)puVar2 >> 5)" ( (binary_expression "(long)puVar9 - (long)puVar2 >> 5" (binary_expression "(long)puVar9 - (long)puVar2" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (goto_statement "goto LAB_00108d87;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "puVar9 = puVar9 + 4;" (assignment_expression "puVar9 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "__s1 = (char *)*puVar9;" (assignment_expression "__s1 = (char *)*puVar9" identifier = (cast_expression "(char *)*puVar9" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) })) (expression_statement "*(char **)param_5[2] = __s2;" (assignment_expression "*(char **)param_5[2] = __s2" (pointer_expression "*(char **)param_5[2]" * (cast_expression "(char **)param_5[2]" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_5[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }" if (parenthesized_expression "(plVar10[2] != 0)" ( (binary_expression "plVar10[2] != 0" (subscript_expression "plVar10[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }" { (expression_statement "iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;" (assignment_expression "iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1" identifier = (binary_expression "(*(uint *)(plVar10 + 3) & 1) + 1" (parenthesized_expression "(*(uint *)(plVar10 + 3) & 1)" ( (binary_expression "*(uint *)(plVar10 + 3) & 1" (pointer_expression "*(uint *)(plVar10 + 3)" * (cast_expression "(uint *)(plVar10 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 3)" ( (binary_expression "plVar10 + 3" identifier + number_literal) )))) & number_literal) )) + number_literal)) ;) })) (expression_statement "*(int *)(param_5[2] + 8) = iVar7;" (assignment_expression "*(int *)(param_5[2] + 8) = iVar7" (pointer_expression "*(int *)(param_5[2] + 8)" * (cast_expression "(int *)(param_5[2] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5[2] + 8)" ( (binary_expression "param_5[2] + 8" (subscript_expression "param_5[2]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_5[2] + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_5[2] + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_5[2] + 0x10)" * (cast_expression "(undefined8 *)(param_5[2] + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5[2] + 0x10)" ( (binary_expression "param_5[2] + 0x10" (subscript_expression "param_5[2]" identifier [ number_literal ]) + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = *(uint *)(plVar5 + 1);" (assignment_expression "uVar3 = *(uint *)(plVar5 + 1)" identifier = (pointer_expression "*(uint *)(plVar5 + 1)" * (cast_expression "(uint *)(plVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar5 + 1)" ( (binary_expression "plVar5 + 1" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar3 = *(uint *)(plVar10 + 1);\n          }" { (expression_statement "uVar3 = *(uint *)(plVar10 + 1);" (assignment_expression "uVar3 = *(uint *)(plVar10 + 1)" identifier = (pointer_expression "*(uint *)(plVar10 + 1)" * (cast_expression "(uint *)(plVar10 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 1)" ( (binary_expression "plVar10 + 1" identifier + number_literal) ))))) ;) })) (expression_statement "*(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);" (assignment_expression "*(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff)" (pointer_expression "*(uint *)(param_5[2] + 0x18)" * (cast_expression "(uint *)(param_5[2] + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5[2] + 0x18)" ( (binary_expression "param_5[2] + 0x18" (subscript_expression "param_5[2]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff)" (binary_expression "((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000" (parenthesized_expression "((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1)" ( (binary_expression "(int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1" (binary_expression "(int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39" (cast_expression "(int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)param_4 - *(long *)(*param_5 + 0x50) >> 3)" ( (binary_expression "(long)param_4 - *(long *)(*param_5 + 0x50) >> 3" (binary_expression "(long)param_4 - *(long *)(*param_5 + 0x50)" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (pointer_expression "*(long *)(*param_5 + 0x50)" * (cast_expression "(long *)(*param_5 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x50)" ( (binary_expression "*param_5 + 0x50" (pointer_expression "*param_5" * identifier) + number_literal) ))))) >> number_literal) ))) * number_literal) + number_literal) )) * number_literal) + (parenthesized_expression "(uVar3 & 0xffffff)" ( (binary_expression "uVar3 & 0xffffff" identifier & number_literal) )))) ;) (expression_statement "lVar8 = param_5[2];" (assignment_expression "lVar8 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) (expression_statement "param_5[2] = lVar8 + 0x20;" (assignment_expression "param_5[2] = lVar8 + 0x20" (subscript_expression "param_5[2]" identifier [ number_literal ]) = (binary_expression "lVar8 + 0x20" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(lVar8 + 0x20) = 0;" (assignment_expression "*(undefined8 *)(lVar8 + 0x20) = 0" (pointer_expression "*(undefined8 *)(lVar8 + 0x20)" * (cast_expression "(undefined8 *)(lVar8 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) )))) = number_literal) ;) })) })) (labeled_statement "LAB_00108d87:" statement_identifier : (expression_statement "" ;)) })) }))) (expression_statement "*param_4 = param_1[1];" (assignment_expression "*param_4 = param_1[1]" (pointer_expression "*param_4" * identifier) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_4[1] = (long)param_1;" (assignment_expression "param_4[1] = (long)param_1" (subscript_expression "param_4[1]" identifier [ number_literal ]) = (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "param_4[2] = param_5[1];" (assignment_expression "param_4[2] = param_5[1]" (subscript_expression "param_4[2]" identifier [ number_literal ]) = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_4 + 3) = 0;" (assignment_expression "*(undefined4 *)(param_4 + 3) = 0" (pointer_expression "*(undefined4 *)(param_4 + 3)" * (cast_expression "(undefined4 *)(param_4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 3)" ( (binary_expression "param_4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_4[4] = param_2;" (assignment_expression "param_4[4] = param_2" (subscript_expression "param_4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_4 + 5) = param_3;" (assignment_expression "*(undefined4 *)(param_4 + 5) = param_3" (pointer_expression "*(undefined4 *)(param_4 + 5)" * (cast_expression "(undefined4 *)(param_4 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 5)" ( (binary_expression "param_4 + 5" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_4[6] = 0;" (assignment_expression "param_4[6] = 0" (subscript_expression "param_4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[8] = 0;" (assignment_expression "param_4[8] = 0" (subscript_expression "param_4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[7] = 0;" (assignment_expression "param_4[7] = 0" (subscript_expression "param_4[7]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }" if (parenthesized_expression "(local_68 != (long *)0x0)" ( (binary_expression "local_68 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }" { (if_statement "if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }" if (parenthesized_expression "(*local_68 == 0)" ( (binary_expression "*local_68 == 0" (pointer_expression "*local_68" * identifier) == number_literal) )) (compound_statement "{\n      uVar6 = 0;\n    }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }" else (compound_statement "{\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);" do (compound_statement "{\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      }" { (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = (ulong)uVar3;" (assignment_expression "uVar6 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(local_68[uVar6 * 4] != 0)" ( (binary_expression "local_68[uVar6 * 4] != 0" (subscript_expression "local_68[uVar6 * 4]" identifier [ (binary_expression "uVar6 * 4" identifier * number_literal) ]) != number_literal) )) ;) }))) (expression_statement "lVar8 = param_5[3];" (assignment_expression "lVar8 = param_5[3]" identifier = (subscript_expression "param_5[3]" identifier [ number_literal ])) ;) (expression_statement "param_4[7] = lVar8;" (assignment_expression "param_4[7] = lVar8" (subscript_expression "param_4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = lVar8 + uVar6 * 8;" (assignment_expression "param_5[3] = lVar8 + uVar6 * 8" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (binary_expression "lVar8 + uVar6 * 8" identifier + (binary_expression "uVar6 * 8" identifier * number_literal))) ;) })) (expression_statement "plVar5 = param_4 + 9;" (assignment_expression "plVar5 = param_4 + 9" identifier = (binary_expression "param_4 + 9" identifier + number_literal)) ;) (expression_statement "local_58 = param_4;" (assignment_expression "local_58 = param_4" identifier = identifier) ;) (labeled_statement "LAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }" statement_identifier : (if_statement "if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }" if (parenthesized_expression "((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0))" ( (binary_expression "(local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)" (parenthesized_expression "(local_68 != (long *)0x0)" ( (binary_expression "local_68 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(lVar8 = *local_68, lVar8 != 0)" ( (comma_expression "lVar8 = *local_68, lVar8 != 0" (assignment_expression "lVar8 = *local_68" identifier = (pointer_expression "*local_68" * identifier)) , (binary_expression "lVar8 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);" do (compound_statement "{\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    }" { (expression_statement "local_68 = local_68 + 4;" (assignment_expression "local_68 = local_68 + 4" identifier = (binary_expression "local_68 + 4" identifier + number_literal)) ;) (expression_statement "plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);" (assignment_expression "plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5)" identifier = (cast_expression "(long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5)" identifier (argument_list "(lVar8,local_58,iVar7,plVar5,param_5)" ( identifier , identifier , identifier , identifier , identifier ))))) ;) (expression_statement "lVar8 = *local_68;" (assignment_expression "lVar8 = *local_68" identifier = (pointer_expression "*local_68" * identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) ;) }))) (return_statement "return;" return ;) })))
(translation_unit "group * convert_options(argp *argp,group *parent,uint parent_index,group *group,\n                       parser_convert_state *cvt)\n\n{\n  char *pcVar1;\n  rpl_option *prVar2;\n  char *__s1;\n  void **ppvVar3;\n  uint uVar4;\n  ushort **ppuVar5;\n  group *group_00;\n  ulong uVar6;\n  argp_option *paVar7;\n  int iVar8;\n  argp *argp_00;\n  rpl_option *prVar9;\n  argp_option *paVar10;\n  argp_child *local_68;\n  group *local_58;\n  \n  paVar7 = argp->options;\n  local_68 = argp->children;\n  paVar10 = paVar7;\n  if (paVar7 == (argp_option *)0x0) {\n    if (argp->parser == (argp_parser_t)0x0) {\n      local_58 = (group *)0x0;\n      group_00 = group;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0)); paVar7 = paVar7 + 1) {\n      if ((paVar7->flags & 4U) == 0) {\n        paVar10 = paVar7;\n      }\n      if ((paVar10->flags & 8U) == 0) {\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  group->parser = argp->parser;\n  group->argp = argp;\n  group->short_end = cvt->short_end;\n  group->args_processed = 0;\n  group->parent = parent;\n  group->parent_index = parent_index;\n  group->input = (void *)0x0;\n  group->hook = (void *)0x0;\n  group->child_inputs = (void **)0x0;\n  if (local_68 != (argp_child *)0x0) {\n    if (local_68->argp == (argp *)0x0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar4 = 0;\n      do {\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      } while (local_68[uVar6].argp != (argp *)0x0);\n    }\n    ppvVar3 = cvt->child_inputs_end;\n    group->child_inputs = ppvVar3;\n    cvt->child_inputs_end = ppvVar3 + uVar6;\n  }\n  group_00 = group + 1;\n  local_58 = group;\nLAB_00108f78:\n  if ((local_68 != (argp_child *)0x0) && (argp_00 = local_68->argp, argp_00 != (argp *)0x0)) {\n    uVar4 = 0;\n    do {\n      local_68 = local_68 + 1;\n      group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);\n      argp_00 = local_68->argp;\n      uVar4 = uVar4 + 1;\n    } while (argp_00 != (argp *)0x0);\n  }\n  return group_00;\n}\n\n" (function_definition "group * convert_options(argp *argp,group *parent,uint parent_index,group *group,\n                       parser_convert_state *cvt)\n\n{\n  char *pcVar1;\n  rpl_option *prVar2;\n  char *__s1;\n  void **ppvVar3;\n  uint uVar4;\n  ushort **ppuVar5;\n  group *group_00;\n  ulong uVar6;\n  argp_option *paVar7;\n  int iVar8;\n  argp *argp_00;\n  rpl_option *prVar9;\n  argp_option *paVar10;\n  argp_child *local_68;\n  group *local_58;\n  \n  paVar7 = argp->options;\n  local_68 = argp->children;\n  paVar10 = paVar7;\n  if (paVar7 == (argp_option *)0x0) {\n    if (argp->parser == (argp_parser_t)0x0) {\n      local_58 = (group *)0x0;\n      group_00 = group;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0)); paVar7 = paVar7 + 1) {\n      if ((paVar7->flags & 4U) == 0) {\n        paVar10 = paVar7;\n      }\n      if ((paVar10->flags & 8U) == 0) {\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  group->parser = argp->parser;\n  group->argp = argp;\n  group->short_end = cvt->short_end;\n  group->args_processed = 0;\n  group->parent = parent;\n  group->parent_index = parent_index;\n  group->input = (void *)0x0;\n  group->hook = (void *)0x0;\n  group->child_inputs = (void **)0x0;\n  if (local_68 != (argp_child *)0x0) {\n    if (local_68->argp == (argp *)0x0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar4 = 0;\n      do {\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      } while (local_68[uVar6].argp != (argp *)0x0);\n    }\n    ppvVar3 = cvt->child_inputs_end;\n    group->child_inputs = ppvVar3;\n    cvt->child_inputs_end = ppvVar3 + uVar6;\n  }\n  group_00 = group + 1;\n  local_58 = group;\nLAB_00108f78:\n  if ((local_68 != (argp_child *)0x0) && (argp_00 = local_68->argp, argp_00 != (argp *)0x0)) {\n    uVar4 = 0;\n    do {\n      local_68 = local_68 + 1;\n      group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);\n      argp_00 = local_68->argp;\n      uVar4 = uVar4 + 1;\n    } while (argp_00 != (argp *)0x0);\n  }\n  return group_00;\n}" type_identifier (pointer_declarator "* convert_options(argp *argp,group *parent,uint parent_index,group *group,\n                       parser_convert_state *cvt)" * (function_declarator "convert_options(argp *argp,group *parent,uint parent_index,group *group,\n                       parser_convert_state *cvt)" identifier (parameter_list "(argp *argp,group *parent,uint parent_index,group *group,\n                       parser_convert_state *cvt)" ( (parameter_declaration "argp *argp" type_identifier (pointer_declarator "*argp" * identifier)) , (parameter_declaration "group *parent" type_identifier (pointer_declarator "*parent" * identifier)) , (parameter_declaration "uint parent_index" type_identifier identifier) , (parameter_declaration "group *group" type_identifier (pointer_declarator "*group" * identifier)) , (parameter_declaration "parser_convert_state *cvt" type_identifier (pointer_declarator "*cvt" * identifier)) )))) (compound_statement "{\n  char *pcVar1;\n  rpl_option *prVar2;\n  char *__s1;\n  void **ppvVar3;\n  uint uVar4;\n  ushort **ppuVar5;\n  group *group_00;\n  ulong uVar6;\n  argp_option *paVar7;\n  int iVar8;\n  argp *argp_00;\n  rpl_option *prVar9;\n  argp_option *paVar10;\n  argp_child *local_68;\n  group *local_58;\n  \n  paVar7 = argp->options;\n  local_68 = argp->children;\n  paVar10 = paVar7;\n  if (paVar7 == (argp_option *)0x0) {\n    if (argp->parser == (argp_parser_t)0x0) {\n      local_58 = (group *)0x0;\n      group_00 = group;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0)); paVar7 = paVar7 + 1) {\n      if ((paVar7->flags & 4U) == 0) {\n        paVar10 = paVar7;\n      }\n      if ((paVar10->flags & 8U) == 0) {\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  group->parser = argp->parser;\n  group->argp = argp;\n  group->short_end = cvt->short_end;\n  group->args_processed = 0;\n  group->parent = parent;\n  group->parent_index = parent_index;\n  group->input = (void *)0x0;\n  group->hook = (void *)0x0;\n  group->child_inputs = (void **)0x0;\n  if (local_68 != (argp_child *)0x0) {\n    if (local_68->argp == (argp *)0x0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar4 = 0;\n      do {\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      } while (local_68[uVar6].argp != (argp *)0x0);\n    }\n    ppvVar3 = cvt->child_inputs_end;\n    group->child_inputs = ppvVar3;\n    cvt->child_inputs_end = ppvVar3 + uVar6;\n  }\n  group_00 = group + 1;\n  local_58 = group;\nLAB_00108f78:\n  if ((local_68 != (argp_child *)0x0) && (argp_00 = local_68->argp, argp_00 != (argp *)0x0)) {\n    uVar4 = 0;\n    do {\n      local_68 = local_68 + 1;\n      group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);\n      argp_00 = local_68->argp;\n      uVar4 = uVar4 + 1;\n    } while (argp_00 != (argp *)0x0);\n  }\n  return group_00;\n}" { (declaration "char *pcVar1;" primitive_type (pointer_declarator "*pcVar1" * identifier) ;) (declaration "rpl_option *prVar2;" type_identifier (pointer_declarator "*prVar2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "void **ppvVar3;" primitive_type (pointer_declarator "**ppvVar3" * (pointer_declarator "*ppvVar3" * identifier)) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "ushort **ppuVar5;" type_identifier (pointer_declarator "**ppuVar5" * (pointer_declarator "*ppuVar5" * identifier)) ;) (declaration "group *group_00;" type_identifier (pointer_declarator "*group_00" * identifier) ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "argp_option *paVar7;" type_identifier (pointer_declarator "*paVar7" * identifier) ;) (declaration "int iVar8;" primitive_type identifier ;) (declaration "argp *argp_00;" type_identifier (pointer_declarator "*argp_00" * identifier) ;) (declaration "rpl_option *prVar9;" type_identifier (pointer_declarator "*prVar9" * identifier) ;) (declaration "argp_option *paVar10;" type_identifier (pointer_declarator "*paVar10" * identifier) ;) (declaration "argp_child *local_68;" type_identifier (pointer_declarator "*local_68" * identifier) ;) (declaration "group *local_58;" type_identifier (pointer_declarator "*local_58" * identifier) ;) (expression_statement "paVar7 = argp->options;" (assignment_expression "paVar7 = argp->options" identifier = (field_expression "argp->options" identifier -> field_identifier)) ;) (expression_statement "local_68 = argp->children;" (assignment_expression "local_68 = argp->children" identifier = (field_expression "argp->children" identifier -> field_identifier)) ;) (expression_statement "paVar10 = paVar7;" (assignment_expression "paVar10 = paVar7" identifier = identifier) ;) (if_statement "if (paVar7 == (argp_option *)0x0) {\n    if (argp->parser == (argp_parser_t)0x0) {\n      local_58 = (group *)0x0;\n      group_00 = group;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0)); paVar7 = paVar7 + 1) {\n      if ((paVar7->flags & 4U) == 0) {\n        paVar10 = paVar7;\n      }\n      if ((paVar10->flags & 8U) == 0) {\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" if (parenthesized_expression "(paVar7 == (argp_option *)0x0)" ( (binary_expression "paVar7 == (argp_option *)0x0" identifier == (cast_expression "(argp_option *)0x0" ( (type_descriptor "argp_option *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (argp->parser == (argp_parser_t)0x0) {\n      local_58 = (group *)0x0;\n      group_00 = group;\n      goto LAB_00108f78;\n    }\n  }" { (if_statement "if (argp->parser == (argp_parser_t)0x0) {\n      local_58 = (group *)0x0;\n      group_00 = group;\n      goto LAB_00108f78;\n    }" if (parenthesized_expression "(argp->parser == (argp_parser_t)0x0)" ( (binary_expression "argp->parser == (argp_parser_t)0x0" (field_expression "argp->parser" identifier -> field_identifier) == (cast_expression "(argp_parser_t)0x0" ( (type_descriptor "argp_parser_t" type_identifier) ) number_literal)) )) (compound_statement "{\n      local_58 = (group *)0x0;\n      group_00 = group;\n      goto LAB_00108f78;\n    }" { (expression_statement "local_58 = (group *)0x0;" (assignment_expression "local_58 = (group *)0x0" identifier = (cast_expression "(group *)0x0" ( (type_descriptor "group *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "group_00 = group;" (assignment_expression "group_00 = group" identifier = identifier) ;) (goto_statement "goto LAB_00108f78;" goto statement_identifier ;) })) }) (else_clause "else {\n    for (; (((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0)); paVar7 = paVar7 + 1) {\n      if ((paVar7->flags & 4U) == 0) {\n        paVar10 = paVar7;\n      }\n      if ((paVar10->flags & 8U) == 0) {\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" else (compound_statement "{\n    for (; (((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0)); paVar7 = paVar7 + 1) {\n      if ((paVar7->flags & 4U) == 0) {\n        paVar10 = paVar7;\n      }\n      if ((paVar10->flags & 8U) == 0) {\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" { (for_statement "for (; (((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0)); paVar7 = paVar7 + 1) {\n      if ((paVar7->flags & 4U) == 0) {\n        paVar10 = paVar7;\n      }\n      if ((paVar10->flags & 8U) == 0) {\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }\nLAB_00108d87:\n    }" for ( ; (parenthesized_expression "(((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0))" ( (binary_expression "((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)) || (paVar7->group != 0)" (parenthesized_expression "((iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0))" ( (binary_expression "(iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)) ||\n            (paVar7->doc != (char *)0x0)" (parenthesized_expression "(iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0))" ( (comma_expression "iVar8 = paVar7->key, iVar8 != 0 || (paVar7->name != (char *)0x0)" (assignment_expression "iVar8 = paVar7->key" identifier = (field_expression "paVar7->key" identifier -> field_identifier)) , (binary_expression "iVar8 != 0 || (paVar7->name != (char *)0x0)" (binary_expression "iVar8 != 0" identifier != number_literal) || (parenthesized_expression "(paVar7->name != (char *)0x0)" ( (binary_expression "paVar7->name != (char *)0x0" (field_expression "paVar7->name" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )))) )) || (parenthesized_expression "(paVar7->doc != (char *)0x0)" ( (binary_expression "paVar7->doc != (char *)0x0" (field_expression "paVar7->doc" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) || (parenthesized_expression "(paVar7->group != 0)" ( (binary_expression "paVar7->group != 0" (field_expression "paVar7->group" identifier -> field_identifier) != number_literal) ))) )) ; (assignment_expression "paVar7 = paVar7 + 1" identifier = (binary_expression "paVar7 + 1" identifier + number_literal)) ) (compound_statement "{\n      if ((paVar7->flags & 4U) == 0) {\n        paVar10 = paVar7;\n      }\n      if ((paVar10->flags & 8U) == 0) {\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }\nLAB_00108d87:\n    }" { (if_statement "if ((paVar7->flags & 4U) == 0) {\n        paVar10 = paVar7;\n      }" if (parenthesized_expression "((paVar7->flags & 4U) == 0)" ( (binary_expression "(paVar7->flags & 4U) == 0" (parenthesized_expression "(paVar7->flags & 4U)" ( (binary_expression "paVar7->flags & 4U" (field_expression "paVar7->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        paVar10 = paVar7;\n      }" { (expression_statement "paVar10 = paVar7;" (assignment_expression "paVar10 = paVar7" identifier = identifier) ;) })) (if_statement "if ((paVar10->flags & 8U) == 0) {\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }" if (parenthesized_expression "((paVar10->flags & 8U) == 0)" ( (binary_expression "(paVar10->flags & 8U) == 0" (parenthesized_expression "(paVar10->flags & 8U)" ( (binary_expression "paVar10->flags & 8U" (field_expression "paVar10->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }\n        pcVar1 = paVar7->name;\n        if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }\n      }" { (if_statement "if ((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )) {\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }" if (parenthesized_expression "((((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           ))" ( (binary_expression "(((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)) &&\n           (ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )" (parenthesized_expression "(((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff))" ( (binary_expression "((paVar7->flags & 8U) == 0) && (iVar8 - 1U < 0xff)" (parenthesized_expression "((paVar7->flags & 8U) == 0)" ( (binary_expression "(paVar7->flags & 8U) == 0" (parenthesized_expression "(paVar7->flags & 8U)" ( (binary_expression "paVar7->flags & 8U" (field_expression "paVar7->flags" identifier -> field_identifier) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar8 - 1U < 0xff)" ( (binary_expression "iVar8 - 1U < 0xff" (binary_expression "iVar8 - 1U" identifier - number_literal) < number_literal) ))) )) && (parenthesized_expression "(ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0\n           )" ( (comma_expression "ppuVar5 = __ctype_b_loc(), (*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0" (assignment_expression "ppuVar5 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) , (binary_expression "(*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40)" ( (binary_expression "*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1) & 0x40" (pointer_expression "*(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar5 + (long)iVar8 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar5 + (long)iVar8 * 2 + 1)" ( (binary_expression "(long)*ppuVar5 + (long)iVar8 * 2 + 1" (binary_expression "(long)*ppuVar5 + (long)iVar8 * 2" (cast_expression "(long)*ppuVar5" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar5" * identifier)) + (binary_expression "(long)iVar8 * 2" (cast_expression "(long)iVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n          pcVar1 = cvt->short_end;\n          cvt->short_end = pcVar1 + 1;\n          *pcVar1 = (char)iVar8;\n          if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }\n          *cvt->short_end = '\0';\n        }" { (expression_statement "pcVar1 = cvt->short_end;" (assignment_expression "pcVar1 = cvt->short_end" identifier = (field_expression "cvt->short_end" identifier -> field_identifier)) ;) (expression_statement "cvt->short_end = pcVar1 + 1;" (assignment_expression "cvt->short_end = pcVar1 + 1" (field_expression "cvt->short_end" identifier -> field_identifier) = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar1 = (char)iVar8;" (assignment_expression "*pcVar1 = (char)iVar8" (pointer_expression "*pcVar1" * identifier) = (cast_expression "(char)iVar8" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (paVar10->arg != (char *)0x0) {\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }" if (parenthesized_expression "(paVar10->arg != (char *)0x0)" ( (binary_expression "paVar10->arg != (char *)0x0" (field_expression "paVar10->arg" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            pcVar1 = cvt->short_end;\n            cvt->short_end = pcVar1 + 1;\n            *pcVar1 = ':';\n            if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }\n          }" { (expression_statement "pcVar1 = cvt->short_end;" (assignment_expression "pcVar1 = cvt->short_end" identifier = (field_expression "cvt->short_end" identifier -> field_identifier)) ;) (expression_statement "cvt->short_end = pcVar1 + 1;" (assignment_expression "cvt->short_end = pcVar1 + 1" (field_expression "cvt->short_end" identifier -> field_identifier) = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar1 = ':';" (assignment_expression "*pcVar1 = ':'" (pointer_expression "*pcVar1" * identifier) = (char_literal "':'" ' character ')) ;) (if_statement "if ((paVar10->flags & 1) != 0) {\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }" if (parenthesized_expression "((paVar10->flags & 1) != 0)" ( (binary_expression "(paVar10->flags & 1) != 0" (parenthesized_expression "(paVar10->flags & 1)" ( (binary_expression "paVar10->flags & 1" (field_expression "paVar10->flags" identifier -> field_identifier) & number_literal) )) != number_literal) )) (compound_statement "{\n              pcVar1 = cvt->short_end;\n              cvt->short_end = pcVar1 + 1;\n              *pcVar1 = ':';\n            }" { (expression_statement "pcVar1 = cvt->short_end;" (assignment_expression "pcVar1 = cvt->short_end" identifier = (field_expression "cvt->short_end" identifier -> field_identifier)) ;) (expression_statement "cvt->short_end = pcVar1 + 1;" (assignment_expression "cvt->short_end = pcVar1 + 1" (field_expression "cvt->short_end" identifier -> field_identifier) = (binary_expression "pcVar1 + 1" identifier + number_literal)) ;) (expression_statement "*pcVar1 = ':';" (assignment_expression "*pcVar1 = ':'" (pointer_expression "*pcVar1" * identifier) = (char_literal "':'" ' character ')) ;) })) })) (expression_statement "*cvt->short_end = '\0';" (assignment_expression "*cvt->short_end = '\0'" (pointer_expression "*cvt->short_end" * (field_expression "cvt->short_end" identifier -> field_identifier)) = (char_literal "'\0'" ' escape_sequence ')) ;) })) (expression_statement "pcVar1 = paVar7->name;" (assignment_expression "pcVar1 = paVar7->name" identifier = (field_expression "paVar7->name" identifier -> field_identifier)) ;) (if_statement "if (pcVar1 != (char *)0x0) {\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }" if (parenthesized_expression "(pcVar1 != (char *)0x0)" ( (binary_expression "pcVar1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          prVar2 = cvt->parser->long_opts;\n          __s1 = prVar2->name;\n          prVar9 = prVar2;\n          while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }\n          cvt->long_end->name = pcVar1;\n          iVar8 = 0;\n          if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }\n          cvt->long_end->has_arg = iVar8;\n          cvt->long_end->flag = (int *)0x0;\n          uVar4 = paVar7->key;\n          if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }\n          cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);\n          prVar2 = cvt->long_end;\n          cvt->long_end = prVar2 + 1;\n          prVar2[1].name = (char *)0x0;\n        }" { (expression_statement "prVar2 = cvt->parser->long_opts;" (assignment_expression "prVar2 = cvt->parser->long_opts" identifier = (field_expression "cvt->parser->long_opts" (field_expression "cvt->parser" identifier -> field_identifier) -> field_identifier)) ;) (expression_statement "__s1 = prVar2->name;" (assignment_expression "__s1 = prVar2->name" identifier = (field_expression "prVar2->name" identifier -> field_identifier)) ;) (expression_statement "prVar9 = prVar2;" (assignment_expression "prVar9 = prVar2" identifier = identifier) ;) (while_statement "while (__s1 != (char *)0x0) {\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }" while (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar8 = strcmp(__s1,pcVar1);\n            if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            prVar9 = prVar9 + 1;\n            __s1 = prVar9->name;\n          }" { (expression_statement "iVar8 = strcmp(__s1,pcVar1);" (assignment_expression "iVar8 = strcmp(__s1,pcVar1)" identifier = (call_expression "strcmp(__s1,pcVar1)" identifier (argument_list "(__s1,pcVar1)" ( identifier , identifier )))) ;) (if_statement "if (iVar8 == 0) {\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }" if (parenthesized_expression "(iVar8 == 0)" ( (binary_expression "iVar8 == 0" identifier == number_literal) )) (compound_statement "{\n              if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }" { (if_statement "if (-1 < (int)((long)prVar9 - (long)prVar2 >> 5)) goto LAB_00108d87;" if (parenthesized_expression "(-1 < (int)((long)prVar9 - (long)prVar2 >> 5))" ( (binary_expression "-1 < (int)((long)prVar9 - (long)prVar2 >> 5)" number_literal < (cast_expression "(int)((long)prVar9 - (long)prVar2 >> 5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)prVar9 - (long)prVar2 >> 5)" ( (binary_expression "(long)prVar9 - (long)prVar2 >> 5" (binary_expression "(long)prVar9 - (long)prVar2" (cast_expression "(long)prVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)prVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (goto_statement "goto LAB_00108d87;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "prVar9 = prVar9 + 1;" (assignment_expression "prVar9 = prVar9 + 1" identifier = (binary_expression "prVar9 + 1" identifier + number_literal)) ;) (expression_statement "__s1 = prVar9->name;" (assignment_expression "__s1 = prVar9->name" identifier = (field_expression "prVar9->name" identifier -> field_identifier)) ;) })) (expression_statement "cvt->long_end->name = pcVar1;" (assignment_expression "cvt->long_end->name = pcVar1" (field_expression "cvt->long_end->name" (field_expression "cvt->long_end" identifier -> field_identifier) -> field_identifier) = identifier) ;) (expression_statement "iVar8 = 0;" (assignment_expression "iVar8 = 0" identifier = number_literal) ;) (if_statement "if (paVar10->arg != (char *)0x0) {\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }" if (parenthesized_expression "(paVar10->arg != (char *)0x0)" ( (binary_expression "paVar10->arg != (char *)0x0" (field_expression "paVar10->arg" identifier -> field_identifier) != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar8 = (paVar10->flags & 1U) + 1;\n          }" { (expression_statement "iVar8 = (paVar10->flags & 1U) + 1;" (assignment_expression "iVar8 = (paVar10->flags & 1U) + 1" identifier = (binary_expression "(paVar10->flags & 1U) + 1" (parenthesized_expression "(paVar10->flags & 1U)" ( (binary_expression "paVar10->flags & 1U" (field_expression "paVar10->flags" identifier -> field_identifier) & number_literal) )) + number_literal)) ;) })) (expression_statement "cvt->long_end->has_arg = iVar8;" (assignment_expression "cvt->long_end->has_arg = iVar8" (field_expression "cvt->long_end->has_arg" (field_expression "cvt->long_end" identifier -> field_identifier) -> field_identifier) = identifier) ;) (expression_statement "cvt->long_end->flag = (int *)0x0;" (assignment_expression "cvt->long_end->flag = (int *)0x0" (field_expression "cvt->long_end->flag" (field_expression "cvt->long_end" identifier -> field_identifier) -> field_identifier) = (cast_expression "(int *)0x0" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "uVar4 = paVar7->key;" (assignment_expression "uVar4 = paVar7->key" identifier = (field_expression "paVar7->key" identifier -> field_identifier)) ;) (if_statement "if (uVar4 == 0) {\n            uVar4 = paVar10->key;\n          }" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar4 = paVar10->key;\n          }" { (expression_statement "uVar4 = paVar10->key;" (assignment_expression "uVar4 = paVar10->key" identifier = (field_expression "paVar10->key" identifier -> field_identifier)) ;) })) (expression_statement "cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff);" (assignment_expression "cvt->long_end->val =\n               ((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff)" (field_expression "cvt->long_end->val" (field_expression "cvt->long_end" identifier -> field_identifier) -> field_identifier) = (binary_expression "((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +\n               (uVar4 & 0xffffff)" (binary_expression "((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000" (parenthesized_expression "((int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1)" ( (binary_expression "(int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1" (binary_expression "(int)((long)group - (long)cvt->parser->groups >> 3) * 0x38e38e39" (cast_expression "(int)((long)group - (long)cvt->parser->groups >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)group - (long)cvt->parser->groups >> 3)" ( (binary_expression "(long)group - (long)cvt->parser->groups >> 3" (binary_expression "(long)group - (long)cvt->parser->groups" (cast_expression "(long)group" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)cvt->parser->groups" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (field_expression "cvt->parser->groups" (field_expression "cvt->parser" identifier -> field_identifier) -> field_identifier))) >> number_literal) ))) * number_literal) + number_literal) )) * number_literal) + (parenthesized_expression "(uVar4 & 0xffffff)" ( (binary_expression "uVar4 & 0xffffff" identifier & number_literal) )))) ;) (expression_statement "prVar2 = cvt->long_end;" (assignment_expression "prVar2 = cvt->long_end" identifier = (field_expression "cvt->long_end" identifier -> field_identifier)) ;) (expression_statement "cvt->long_end = prVar2 + 1;" (assignment_expression "cvt->long_end = prVar2 + 1" (field_expression "cvt->long_end" identifier -> field_identifier) = (binary_expression "prVar2 + 1" identifier + number_literal)) ;) (expression_statement "prVar2[1].name = (char *)0x0;" (assignment_expression "prVar2[1].name = (char *)0x0" (field_expression "prVar2[1].name" (subscript_expression "prVar2[1]" identifier [ number_literal ]) . field_identifier) = (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) })) })) (labeled_statement "LAB_00108d87:" statement_identifier : (expression_statement "" ;)) })) }))) (expression_statement "group->parser = argp->parser;" (assignment_expression "group->parser = argp->parser" (field_expression "group->parser" identifier -> field_identifier) = (field_expression "argp->parser" identifier -> field_identifier)) ;) (expression_statement "group->argp = argp;" (assignment_expression "group->argp = argp" (field_expression "group->argp" identifier -> field_identifier) = identifier) ;) (expression_statement "group->short_end = cvt->short_end;" (assignment_expression "group->short_end = cvt->short_end" (field_expression "group->short_end" identifier -> field_identifier) = (field_expression "cvt->short_end" identifier -> field_identifier)) ;) (expression_statement "group->args_processed = 0;" (assignment_expression "group->args_processed = 0" (field_expression "group->args_processed" identifier -> field_identifier) = number_literal) ;) (expression_statement "group->parent = parent;" (assignment_expression "group->parent = parent" (field_expression "group->parent" identifier -> field_identifier) = identifier) ;) (expression_statement "group->parent_index = parent_index;" (assignment_expression "group->parent_index = parent_index" (field_expression "group->parent_index" identifier -> field_identifier) = identifier) ;) (expression_statement "group->input = (void *)0x0;" (assignment_expression "group->input = (void *)0x0" (field_expression "group->input" identifier -> field_identifier) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "group->hook = (void *)0x0;" (assignment_expression "group->hook = (void *)0x0" (field_expression "group->hook" identifier -> field_identifier) = (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "group->child_inputs = (void **)0x0;" (assignment_expression "group->child_inputs = (void **)0x0" (field_expression "group->child_inputs" identifier -> field_identifier) = (cast_expression "(void **)0x0" ( (type_descriptor "void **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ;) (if_statement "if (local_68 != (argp_child *)0x0) {\n    if (local_68->argp == (argp *)0x0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar4 = 0;\n      do {\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      } while (local_68[uVar6].argp != (argp *)0x0);\n    }\n    ppvVar3 = cvt->child_inputs_end;\n    group->child_inputs = ppvVar3;\n    cvt->child_inputs_end = ppvVar3 + uVar6;\n  }" if (parenthesized_expression "(local_68 != (argp_child *)0x0)" ( (binary_expression "local_68 != (argp_child *)0x0" identifier != (cast_expression "(argp_child *)0x0" ( (type_descriptor "argp_child *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (local_68->argp == (argp *)0x0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar4 = 0;\n      do {\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      } while (local_68[uVar6].argp != (argp *)0x0);\n    }\n    ppvVar3 = cvt->child_inputs_end;\n    group->child_inputs = ppvVar3;\n    cvt->child_inputs_end = ppvVar3 + uVar6;\n  }" { (if_statement "if (local_68->argp == (argp *)0x0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar4 = 0;\n      do {\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      } while (local_68[uVar6].argp != (argp *)0x0);\n    }" if (parenthesized_expression "(local_68->argp == (argp *)0x0)" ( (binary_expression "local_68->argp == (argp *)0x0" (field_expression "local_68->argp" identifier -> field_identifier) == (cast_expression "(argp *)0x0" ( (type_descriptor "argp *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar6 = 0;\n    }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar4 = 0;\n      do {\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      } while (local_68[uVar6].argp != (argp *)0x0);\n    }" else (compound_statement "{\n      uVar4 = 0;\n      do {\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      } while (local_68[uVar6].argp != (argp *)0x0);\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      } while (local_68[uVar6].argp != (argp *)0x0);" do (compound_statement "{\n        uVar4 = uVar4 + 1;\n        uVar6 = (ulong)uVar4;\n      }" { (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = (ulong)uVar4;" (assignment_expression "uVar6 = (ulong)uVar4" identifier = (cast_expression "(ulong)uVar4" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(local_68[uVar6].argp != (argp *)0x0)" ( (binary_expression "local_68[uVar6].argp != (argp *)0x0" (field_expression "local_68[uVar6].argp" (subscript_expression "local_68[uVar6]" identifier [ identifier ]) . field_identifier) != (cast_expression "(argp *)0x0" ( (type_descriptor "argp *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }))) (expression_statement "ppvVar3 = cvt->child_inputs_end;" (assignment_expression "ppvVar3 = cvt->child_inputs_end" identifier = (field_expression "cvt->child_inputs_end" identifier -> field_identifier)) ;) (expression_statement "group->child_inputs = ppvVar3;" (assignment_expression "group->child_inputs = ppvVar3" (field_expression "group->child_inputs" identifier -> field_identifier) = identifier) ;) (expression_statement "cvt->child_inputs_end = ppvVar3 + uVar6;" (assignment_expression "cvt->child_inputs_end = ppvVar3 + uVar6" (field_expression "cvt->child_inputs_end" identifier -> field_identifier) = (binary_expression "ppvVar3 + uVar6" identifier + identifier)) ;) })) (expression_statement "group_00 = group + 1;" (assignment_expression "group_00 = group + 1" identifier = (binary_expression "group + 1" identifier + number_literal)) ;) (expression_statement "local_58 = group;" (assignment_expression "local_58 = group" identifier = identifier) ;) (labeled_statement "LAB_00108f78:\n  if ((local_68 != (argp_child *)0x0) && (argp_00 = local_68->argp, argp_00 != (argp *)0x0)) {\n    uVar4 = 0;\n    do {\n      local_68 = local_68 + 1;\n      group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);\n      argp_00 = local_68->argp;\n      uVar4 = uVar4 + 1;\n    } while (argp_00 != (argp *)0x0);\n  }" statement_identifier : (if_statement "if ((local_68 != (argp_child *)0x0) && (argp_00 = local_68->argp, argp_00 != (argp *)0x0)) {\n    uVar4 = 0;\n    do {\n      local_68 = local_68 + 1;\n      group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);\n      argp_00 = local_68->argp;\n      uVar4 = uVar4 + 1;\n    } while (argp_00 != (argp *)0x0);\n  }" if (parenthesized_expression "((local_68 != (argp_child *)0x0) && (argp_00 = local_68->argp, argp_00 != (argp *)0x0))" ( (binary_expression "(local_68 != (argp_child *)0x0) && (argp_00 = local_68->argp, argp_00 != (argp *)0x0)" (parenthesized_expression "(local_68 != (argp_child *)0x0)" ( (binary_expression "local_68 != (argp_child *)0x0" identifier != (cast_expression "(argp_child *)0x0" ( (type_descriptor "argp_child *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(argp_00 = local_68->argp, argp_00 != (argp *)0x0)" ( (comma_expression "argp_00 = local_68->argp, argp_00 != (argp *)0x0" (assignment_expression "argp_00 = local_68->argp" identifier = (field_expression "local_68->argp" identifier -> field_identifier)) , (binary_expression "argp_00 != (argp *)0x0" identifier != (cast_expression "(argp *)0x0" ( (type_descriptor "argp *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal))) ))) )) (compound_statement "{\n    uVar4 = 0;\n    do {\n      local_68 = local_68 + 1;\n      group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);\n      argp_00 = local_68->argp;\n      uVar4 = uVar4 + 1;\n    } while (argp_00 != (argp *)0x0);\n  }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (do_statement "do {\n      local_68 = local_68 + 1;\n      group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);\n      argp_00 = local_68->argp;\n      uVar4 = uVar4 + 1;\n    } while (argp_00 != (argp *)0x0);" do (compound_statement "{\n      local_68 = local_68 + 1;\n      group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);\n      argp_00 = local_68->argp;\n      uVar4 = uVar4 + 1;\n    }" { (expression_statement "local_68 = local_68 + 1;" (assignment_expression "local_68 = local_68 + 1" identifier = (binary_expression "local_68 + 1" identifier + number_literal)) ;) (expression_statement "group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt);" (assignment_expression "group_00 = convert_options(argp_00,local_58,uVar4,group_00,cvt)" identifier = (call_expression "convert_options(argp_00,local_58,uVar4,group_00,cvt)" identifier (argument_list "(argp_00,local_58,uVar4,group_00,cvt)" ( identifier , identifier , identifier , identifier , identifier )))) ;) (expression_statement "argp_00 = local_68->argp;" (assignment_expression "argp_00 = local_68->argp" identifier = (field_expression "local_68->argp" identifier -> field_identifier)) ;) (expression_statement "uVar4 = uVar4 + 1;" (assignment_expression "uVar4 = uVar4 + 1" identifier = (binary_expression "uVar4 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(argp_00 != (argp *)0x0)" ( (binary_expression "argp_00 != (argp *)0x0" identifier != (cast_expression "(argp *)0x0" ( (type_descriptor "argp *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) ;) }))) (return_statement "return group_00;" return identifier ;) })))
(translation_unit "void FUN_00108d09(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)\n\n{\n  undefined1 *puVar1;\n  char *__s2;\n  undefined8 *puVar2;\n  char *__s1;\n  uint uVar3;\n  ushort **ppuVar4;\n  long *plVar5;\n  ulong uVar6;\n  int iVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long *local_68;\n  long *local_58;\n  \n  plVar5 = (long *)*param_1;\n  local_68 = (long *)param_1[4];\n  plVar10 = plVar5;\n  if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  *param_4 = param_1[1];\n  param_4[1] = (long)param_1;\n  param_4[2] = param_5[1];\n  *(undefined4 *)(param_4 + 3) = 0;\n  param_4[4] = param_2;\n  *(undefined4 *)(param_4 + 5) = param_3;\n  param_4[6] = 0;\n  param_4[8] = 0;\n  param_4[7] = 0;\n  if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }\n  plVar5 = param_4 + 9;\n  local_58 = param_4;\nLAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }\n  return;\n}\n\n" (function_definition "void FUN_00108d09(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)\n\n{\n  undefined1 *puVar1;\n  char *__s2;\n  undefined8 *puVar2;\n  char *__s1;\n  uint uVar3;\n  ushort **ppuVar4;\n  long *plVar5;\n  ulong uVar6;\n  int iVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long *local_68;\n  long *local_58;\n  \n  plVar5 = (long *)*param_1;\n  local_68 = (long *)param_1[4];\n  plVar10 = plVar5;\n  if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  *param_4 = param_1[1];\n  param_4[1] = (long)param_1;\n  param_4[2] = param_5[1];\n  *(undefined4 *)(param_4 + 3) = 0;\n  param_4[4] = param_2;\n  *(undefined4 *)(param_4 + 5) = param_3;\n  param_4[6] = 0;\n  param_4[8] = 0;\n  param_4[7] = 0;\n  if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }\n  plVar5 = param_4 + 9;\n  local_58 = param_4;\nLAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }\n  return;\n}" primitive_type (function_declarator "FUN_00108d09(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)" identifier (parameter_list "(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)" ( (parameter_declaration "long *param_1" (sized_type_specifier "long" long) (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "long param_2" (sized_type_specifier "long" long) identifier) , (parameter_declaration "undefined4 param_3" type_identifier identifier) , (parameter_declaration "long *param_4" (sized_type_specifier "long" long) (pointer_declarator "*param_4" * identifier)) , (parameter_declaration "long *param_5" (sized_type_specifier "long" long) (pointer_declarator "*param_5" * identifier)) ))) (compound_statement "{\n  undefined1 *puVar1;\n  char *__s2;\n  undefined8 *puVar2;\n  char *__s1;\n  uint uVar3;\n  ushort **ppuVar4;\n  long *plVar5;\n  ulong uVar6;\n  int iVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long *local_68;\n  long *local_58;\n  \n  plVar5 = (long *)*param_1;\n  local_68 = (long *)param_1[4];\n  plVar10 = plVar5;\n  if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  *param_4 = param_1[1];\n  param_4[1] = (long)param_1;\n  param_4[2] = param_5[1];\n  *(undefined4 *)(param_4 + 3) = 0;\n  param_4[4] = param_2;\n  *(undefined4 *)(param_4 + 5) = param_3;\n  param_4[6] = 0;\n  param_4[8] = 0;\n  param_4[7] = 0;\n  if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }\n  plVar5 = param_4 + 9;\n  local_58 = param_4;\nLAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }\n  return;\n}" { (declaration "undefined1 *puVar1;" type_identifier (pointer_declarator "*puVar1" * identifier) ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "uint uVar3;" type_identifier identifier ;) (declaration "ushort **ppuVar4;" type_identifier (pointer_declarator "**ppuVar4" * (pointer_declarator "*ppuVar4" * identifier)) ;) (declaration "long *plVar5;" (sized_type_specifier "long" long) (pointer_declarator "*plVar5" * identifier) ;) (declaration "ulong uVar6;" type_identifier identifier ;) (declaration "int iVar7;" primitive_type identifier ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar9;" type_identifier (pointer_declarator "*puVar9" * identifier) ;) (declaration "long *plVar10;" (sized_type_specifier "long" long) (pointer_declarator "*plVar10" * identifier) ;) (declaration "long *local_68;" (sized_type_specifier "long" long) (pointer_declarator "*local_68" * identifier) ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (expression_statement "plVar5 = (long *)*param_1;" (assignment_expression "plVar5 = (long *)*param_1" identifier = (cast_expression "(long *)*param_1" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*param_1" * identifier))) ;) (expression_statement "local_68 = (long *)param_1[4];" (assignment_expression "local_68 = (long *)param_1[4]" identifier = (cast_expression "(long *)param_1[4]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_1[4]" identifier [ number_literal ]))) ;) (expression_statement "plVar10 = plVar5;" (assignment_expression "plVar10 = plVar5" identifier = identifier) ;) (if_statement "if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" if (parenthesized_expression "(plVar5 == (long *)0x0)" ( (binary_expression "plVar5 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }" { (if_statement "if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }" if (parenthesized_expression "(param_1[1] == 0)" ( (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }" { (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" identifier = (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "plVar5 = param_4;" (assignment_expression "plVar5 = param_4" identifier = identifier) ;) (goto_statement "goto LAB_00108f78;" goto statement_identifier ;) })) }) (else_clause "else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" else (compound_statement "{\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" { (for_statement "for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }" for ( ; (parenthesized_expression "(((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0))" ( (binary_expression "((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)" (parenthesized_expression "((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0))" ( (binary_expression "(iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)" (parenthesized_expression "(iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0))" ( (comma_expression "iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)" (assignment_expression "iVar7 = (int)plVar5[1]" identifier = (cast_expression "(int)plVar5[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar5[1]" identifier [ number_literal ]))) , (binary_expression "iVar7 != 0 || (*plVar5 != 0)" (binary_expression "iVar7 != 0" identifier != number_literal) || (parenthesized_expression "(*plVar5 != 0)" ( (binary_expression "*plVar5 != 0" (pointer_expression "*plVar5" * identifier) != number_literal) )))) )) || (parenthesized_expression "(plVar5[4] != 0)" ( (binary_expression "plVar5[4] != 0" (subscript_expression "plVar5[4]" identifier [ number_literal ]) != number_literal) ))) )) || (parenthesized_expression "((int)plVar5[5] != 0)" ( (binary_expression "(int)plVar5[5] != 0" (cast_expression "(int)plVar5[5]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar5[5]" identifier [ number_literal ])) != number_literal) ))) )) ; (assignment_expression "plVar5 = plVar5 + 6" identifier = (binary_expression "plVar5 + 6" identifier + number_literal)) ) (compound_statement "{\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }" { (if_statement "if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }" if (parenthesized_expression "((*(uint *)(plVar5 + 3) & 4) == 0)" ( (binary_expression "(*(uint *)(plVar5 + 3) & 4) == 0" (parenthesized_expression "(*(uint *)(plVar5 + 3) & 4)" ( (binary_expression "*(uint *)(plVar5 + 3) & 4" (pointer_expression "*(uint *)(plVar5 + 3)" * (cast_expression "(uint *)(plVar5 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar5 + 3)" ( (binary_expression "plVar5 + 3" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        plVar10 = plVar5;\n      }" { (expression_statement "plVar10 = plVar5;" (assignment_expression "plVar10 = plVar5" identifier = identifier) ;) })) (if_statement "if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }" if (parenthesized_expression "((*(uint *)(plVar10 + 3) & 8) == 0)" ( (binary_expression "(*(uint *)(plVar10 + 3) & 8) == 0" (parenthesized_expression "(*(uint *)(plVar10 + 3) & 8)" ( (binary_expression "*(uint *)(plVar10 + 3) & 8" (pointer_expression "*(uint *)(plVar10 + 3)" * (cast_expression "(uint *)(plVar10 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 3)" ( (binary_expression "plVar10 + 3" identifier + number_literal) )))) & number_literal) )) == number_literal) )) (compound_statement "{\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }" { (if_statement "if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }" if (parenthesized_expression "((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           ))" ( (binary_expression "(((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )" (parenthesized_expression "(((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff))" ( (binary_expression "((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)" (parenthesized_expression "((*(uint *)(plVar5 + 3) & 8) == 0)" ( (binary_expression "(*(uint *)(plVar5 + 3) & 8) == 0" (parenthesized_expression "(*(uint *)(plVar5 + 3) & 8)" ( (binary_expression "*(uint *)(plVar5 + 3) & 8" (pointer_expression "*(uint *)(plVar5 + 3)" * (cast_expression "(uint *)(plVar5 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar5 + 3)" ( (binary_expression "plVar5 + 3" identifier + number_literal) )))) & number_literal) )) == number_literal) )) && (parenthesized_expression "(iVar7 - 1U < 0xff)" ( (binary_expression "iVar7 - 1U < 0xff" (binary_expression "iVar7 - 1U" identifier - number_literal) < number_literal) ))) )) && (parenthesized_expression "(ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )" ( (comma_expression "ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0" (assignment_expression "ppuVar4 = __ctype_b_loc()" identifier = (call_expression "__ctype_b_loc()" identifier (argument_list "()" ( )))) , (binary_expression "(*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40)" ( (binary_expression "*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40" (pointer_expression "*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1)" * (cast_expression "(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)*ppuVar4 + (long)iVar7 * 2 + 1)" ( (binary_expression "(long)*ppuVar4 + (long)iVar7 * 2 + 1" (binary_expression "(long)*ppuVar4 + (long)iVar7 * 2" (cast_expression "(long)*ppuVar4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (pointer_expression "*ppuVar4" * identifier)) + (binary_expression "(long)iVar7 * 2" (cast_expression "(long)iVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) * number_literal)) + number_literal) )))) & number_literal) )) != number_literal)) ))) )) (compound_statement "{\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }" { (expression_statement "puVar1 = (undefined1 *)param_5[1];" (assignment_expression "puVar1 = (undefined1 *)param_5[1]" identifier = (cast_expression "(undefined1 *)param_5[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "param_5[1] = (long)(puVar1 + 1);" (assignment_expression "param_5[1] = (long)(puVar1 + 1)" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(long)(puVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "*puVar1 = (char)iVar7;" (assignment_expression "*puVar1 = (char)iVar7" (pointer_expression "*puVar1" * identifier) = (cast_expression "(char)iVar7" ( (type_descriptor "char" primitive_type) ) identifier)) ;) (if_statement "if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }" if (parenthesized_expression "(plVar10[2] != 0)" ( (binary_expression "plVar10[2] != 0" (subscript_expression "plVar10[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }" { (expression_statement "puVar1 = (undefined1 *)param_5[1];" (assignment_expression "puVar1 = (undefined1 *)param_5[1]" identifier = (cast_expression "(undefined1 *)param_5[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "param_5[1] = (long)(puVar1 + 1);" (assignment_expression "param_5[1] = (long)(puVar1 + 1)" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(long)(puVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "*puVar1 = 0x3a;" (assignment_expression "*puVar1 = 0x3a" (pointer_expression "*puVar1" * identifier) = number_literal) ;) (if_statement "if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }" if (parenthesized_expression "((*(byte *)(plVar10 + 3) & 1) != 0)" ( (binary_expression "(*(byte *)(plVar10 + 3) & 1) != 0" (parenthesized_expression "(*(byte *)(plVar10 + 3) & 1)" ( (binary_expression "*(byte *)(plVar10 + 3) & 1" (pointer_expression "*(byte *)(plVar10 + 3)" * (cast_expression "(byte *)(plVar10 + 3)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 3)" ( (binary_expression "plVar10 + 3" identifier + number_literal) )))) & number_literal) )) != number_literal) )) (compound_statement "{\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }" { (expression_statement "puVar1 = (undefined1 *)param_5[1];" (assignment_expression "puVar1 = (undefined1 *)param_5[1]" identifier = (cast_expression "(undefined1 *)param_5[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) ;) (expression_statement "param_5[1] = (long)(puVar1 + 1);" (assignment_expression "param_5[1] = (long)(puVar1 + 1)" (subscript_expression "param_5[1]" identifier [ number_literal ]) = (cast_expression "(long)(puVar1 + 1)" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) (parenthesized_expression "(puVar1 + 1)" ( (binary_expression "puVar1 + 1" identifier + number_literal) )))) ;) (expression_statement "*puVar1 = 0x3a;" (assignment_expression "*puVar1 = 0x3a" (pointer_expression "*puVar1" * identifier) = number_literal) ;) })) })) (expression_statement "*(undefined1 *)param_5[1] = 0;" (assignment_expression "*(undefined1 *)param_5[1] = 0" (pointer_expression "*(undefined1 *)param_5[1]" * (cast_expression "(undefined1 *)param_5[1]" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "param_5[1]" identifier [ number_literal ]))) = number_literal) ;) })) (expression_statement "__s2 = (char *)*plVar5;" (assignment_expression "__s2 = (char *)*plVar5" identifier = (cast_expression "(char *)*plVar5" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar5" * identifier))) ;) (if_statement "if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }" if (parenthesized_expression "(__s2 != (char *)0x0)" ( (binary_expression "__s2 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }" { (expression_statement "puVar2 = *(undefined8 **)(*param_5 + 0x10);" (assignment_expression "puVar2 = *(undefined8 **)(*param_5 + 0x10)" identifier = (pointer_expression "*(undefined8 **)(*param_5 + 0x10)" * (cast_expression "(undefined8 **)(*param_5 + 0x10)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*param_5 + 0x10)" ( (binary_expression "*param_5 + 0x10" (pointer_expression "*param_5" * identifier) + number_literal) ))))) ;) (expression_statement "__s1 = (char *)*puVar2;" (assignment_expression "__s1 = (char *)*puVar2" identifier = (cast_expression "(char *)*puVar2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier))) ;) (expression_statement "puVar9 = puVar2;" (assignment_expression "puVar9 = puVar2" identifier = identifier) ;) (while_statement "while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }" while (parenthesized_expression "(__s1 != (char *)0x0)" ( (binary_expression "__s1 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }" { (expression_statement "iVar7 = strcmp(__s1,__s2);" (assignment_expression "iVar7 = strcmp(__s1,__s2)" identifier = (call_expression "strcmp(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) ;) (if_statement "if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }" if (parenthesized_expression "(iVar7 == 0)" ( (binary_expression "iVar7 == 0" identifier == number_literal) )) (compound_statement "{\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }" { (if_statement "if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;" if (parenthesized_expression "(-1 < (int)((long)puVar9 - (long)puVar2 >> 5))" ( (binary_expression "-1 < (int)((long)puVar9 - (long)puVar2 >> 5)" number_literal < (cast_expression "(int)((long)puVar9 - (long)puVar2 >> 5)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)puVar9 - (long)puVar2 >> 5)" ( (binary_expression "(long)puVar9 - (long)puVar2 >> 5" (binary_expression "(long)puVar9 - (long)puVar2" (cast_expression "(long)puVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)puVar2" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) >> number_literal) )))) )) (goto_statement "goto LAB_00108d87;" goto statement_identifier ;)) (break_statement "break;" break ;) })) (expression_statement "puVar9 = puVar9 + 4;" (assignment_expression "puVar9 = puVar9 + 4" identifier = (binary_expression "puVar9 + 4" identifier + number_literal)) ;) (expression_statement "__s1 = (char *)*puVar9;" (assignment_expression "__s1 = (char *)*puVar9" identifier = (cast_expression "(char *)*puVar9" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar9" * identifier))) ;) })) (expression_statement "*(char **)param_5[2] = __s2;" (assignment_expression "*(char **)param_5[2] = __s2" (pointer_expression "*(char **)param_5[2]" * (cast_expression "(char **)param_5[2]" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (subscript_expression "param_5[2]" identifier [ number_literal ]))) = identifier) ;) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (if_statement "if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }" if (parenthesized_expression "(plVar10[2] != 0)" ( (binary_expression "plVar10[2] != 0" (subscript_expression "plVar10[2]" identifier [ number_literal ]) != number_literal) )) (compound_statement "{\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }" { (expression_statement "iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;" (assignment_expression "iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1" identifier = (binary_expression "(*(uint *)(plVar10 + 3) & 1) + 1" (parenthesized_expression "(*(uint *)(plVar10 + 3) & 1)" ( (binary_expression "*(uint *)(plVar10 + 3) & 1" (pointer_expression "*(uint *)(plVar10 + 3)" * (cast_expression "(uint *)(plVar10 + 3)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 3)" ( (binary_expression "plVar10 + 3" identifier + number_literal) )))) & number_literal) )) + number_literal)) ;) })) (expression_statement "*(int *)(param_5[2] + 8) = iVar7;" (assignment_expression "*(int *)(param_5[2] + 8) = iVar7" (pointer_expression "*(int *)(param_5[2] + 8)" * (cast_expression "(int *)(param_5[2] + 8)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5[2] + 8)" ( (binary_expression "param_5[2] + 8" (subscript_expression "param_5[2]" identifier [ number_literal ]) + number_literal) )))) = identifier) ;) (expression_statement "*(undefined8 *)(param_5[2] + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_5[2] + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_5[2] + 0x10)" * (cast_expression "(undefined8 *)(param_5[2] + 0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5[2] + 0x10)" ( (binary_expression "param_5[2] + 0x10" (subscript_expression "param_5[2]" identifier [ number_literal ]) + number_literal) )))) = number_literal) ;) (expression_statement "uVar3 = *(uint *)(plVar5 + 1);" (assignment_expression "uVar3 = *(uint *)(plVar5 + 1)" identifier = (pointer_expression "*(uint *)(plVar5 + 1)" * (cast_expression "(uint *)(plVar5 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar5 + 1)" ( (binary_expression "plVar5 + 1" identifier + number_literal) ))))) ;) (if_statement "if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }" if (parenthesized_expression "(uVar3 == 0)" ( (binary_expression "uVar3 == 0" identifier == number_literal) )) (compound_statement "{\n            uVar3 = *(uint *)(plVar10 + 1);\n          }" { (expression_statement "uVar3 = *(uint *)(plVar10 + 1);" (assignment_expression "uVar3 = *(uint *)(plVar10 + 1)" identifier = (pointer_expression "*(uint *)(plVar10 + 1)" * (cast_expression "(uint *)(plVar10 + 1)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(plVar10 + 1)" ( (binary_expression "plVar10 + 1" identifier + number_literal) ))))) ;) })) (expression_statement "*(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);" (assignment_expression "*(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff)" (pointer_expression "*(uint *)(param_5[2] + 0x18)" * (cast_expression "(uint *)(param_5[2] + 0x18)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_5[2] + 0x18)" ( (binary_expression "param_5[2] + 0x18" (subscript_expression "param_5[2]" identifier [ number_literal ]) + number_literal) )))) = (binary_expression "((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff)" (binary_expression "((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000" (parenthesized_expression "((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1)" ( (binary_expression "(int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1" (binary_expression "(int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39" (cast_expression "(int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((long)param_4 - *(long *)(*param_5 + 0x50) >> 3)" ( (binary_expression "(long)param_4 - *(long *)(*param_5 + 0x50) >> 3" (binary_expression "(long)param_4 - *(long *)(*param_5 + 0x50)" (cast_expression "(long)param_4" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (pointer_expression "*(long *)(*param_5 + 0x50)" * (cast_expression "(long *)(*param_5 + 0x50)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*param_5 + 0x50)" ( (binary_expression "*param_5 + 0x50" (pointer_expression "*param_5" * identifier) + number_literal) ))))) >> number_literal) ))) * number_literal) + number_literal) )) * number_literal) + (parenthesized_expression "(uVar3 & 0xffffff)" ( (binary_expression "uVar3 & 0xffffff" identifier & number_literal) )))) ;) (expression_statement "lVar8 = param_5[2];" (assignment_expression "lVar8 = param_5[2]" identifier = (subscript_expression "param_5[2]" identifier [ number_literal ])) ;) (expression_statement "param_5[2] = lVar8 + 0x20;" (assignment_expression "param_5[2] = lVar8 + 0x20" (subscript_expression "param_5[2]" identifier [ number_literal ]) = (binary_expression "lVar8 + 0x20" identifier + number_literal)) ;) (expression_statement "*(undefined8 *)(lVar8 + 0x20) = 0;" (assignment_expression "*(undefined8 *)(lVar8 + 0x20) = 0" (pointer_expression "*(undefined8 *)(lVar8 + 0x20)" * (cast_expression "(undefined8 *)(lVar8 + 0x20)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(lVar8 + 0x20)" ( (binary_expression "lVar8 + 0x20" identifier + number_literal) )))) = number_literal) ;) })) })) (labeled_statement "LAB_00108d87:" statement_identifier : (expression_statement "" ;)) })) }))) (expression_statement "*param_4 = param_1[1];" (assignment_expression "*param_4 = param_1[1]" (pointer_expression "*param_4" * identifier) = (subscript_expression "param_1[1]" identifier [ number_literal ])) ;) (expression_statement "param_4[1] = (long)param_1;" (assignment_expression "param_4[1] = (long)param_1" (subscript_expression "param_4[1]" identifier [ number_literal ]) = (cast_expression "(long)param_1" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (expression_statement "param_4[2] = param_5[1];" (assignment_expression "param_4[2] = param_5[1]" (subscript_expression "param_4[2]" identifier [ number_literal ]) = (subscript_expression "param_5[1]" identifier [ number_literal ])) ;) (expression_statement "*(undefined4 *)(param_4 + 3) = 0;" (assignment_expression "*(undefined4 *)(param_4 + 3) = 0" (pointer_expression "*(undefined4 *)(param_4 + 3)" * (cast_expression "(undefined4 *)(param_4 + 3)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 3)" ( (binary_expression "param_4 + 3" identifier + number_literal) )))) = number_literal) ;) (expression_statement "param_4[4] = param_2;" (assignment_expression "param_4[4] = param_2" (subscript_expression "param_4[4]" identifier [ number_literal ]) = identifier) ;) (expression_statement "*(undefined4 *)(param_4 + 5) = param_3;" (assignment_expression "*(undefined4 *)(param_4 + 5) = param_3" (pointer_expression "*(undefined4 *)(param_4 + 5)" * (cast_expression "(undefined4 *)(param_4 + 5)" ( (type_descriptor "undefined4 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_4 + 5)" ( (binary_expression "param_4 + 5" identifier + number_literal) )))) = identifier) ;) (expression_statement "param_4[6] = 0;" (assignment_expression "param_4[6] = 0" (subscript_expression "param_4[6]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[8] = 0;" (assignment_expression "param_4[8] = 0" (subscript_expression "param_4[8]" identifier [ number_literal ]) = number_literal) ;) (expression_statement "param_4[7] = 0;" (assignment_expression "param_4[7] = 0" (subscript_expression "param_4[7]" identifier [ number_literal ]) = number_literal) ;) (if_statement "if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }" if (parenthesized_expression "(local_68 != (long *)0x0)" ( (binary_expression "local_68 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }" { (if_statement "if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }" if (parenthesized_expression "(*local_68 == 0)" ( (binary_expression "*local_68 == 0" (pointer_expression "*local_68" * identifier) == number_literal) )) (compound_statement "{\n      uVar6 = 0;\n    }" { (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" identifier = number_literal) ;) }) (else_clause "else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }" else (compound_statement "{\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }" { (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" identifier = number_literal) ;) (do_statement "do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);" do (compound_statement "{\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      }" { (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" identifier = (binary_expression "uVar3 + 1" identifier + number_literal)) ;) (expression_statement "uVar6 = (ulong)uVar3;" (assignment_expression "uVar6 = (ulong)uVar3" identifier = (cast_expression "(ulong)uVar3" ( (type_descriptor "ulong" type_identifier) ) identifier)) ;) }) while (parenthesized_expression "(local_68[uVar6 * 4] != 0)" ( (binary_expression "local_68[uVar6 * 4] != 0" (subscript_expression "local_68[uVar6 * 4]" identifier [ (binary_expression "uVar6 * 4" identifier * number_literal) ]) != number_literal) )) ;) }))) (expression_statement "lVar8 = param_5[3];" (assignment_expression "lVar8 = param_5[3]" identifier = (subscript_expression "param_5[3]" identifier [ number_literal ])) ;) (expression_statement "param_4[7] = lVar8;" (assignment_expression "param_4[7] = lVar8" (subscript_expression "param_4[7]" identifier [ number_literal ]) = identifier) ;) (expression_statement "param_5[3] = lVar8 + uVar6 * 8;" (assignment_expression "param_5[3] = lVar8 + uVar6 * 8" (subscript_expression "param_5[3]" identifier [ number_literal ]) = (binary_expression "lVar8 + uVar6 * 8" identifier + (binary_expression "uVar6 * 8" identifier * number_literal))) ;) })) (expression_statement "plVar5 = param_4 + 9;" (assignment_expression "plVar5 = param_4 + 9" identifier = (binary_expression "param_4 + 9" identifier + number_literal)) ;) (expression_statement "local_58 = param_4;" (assignment_expression "local_58 = param_4" identifier = identifier) ;) (labeled_statement "LAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }" statement_identifier : (if_statement "if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }" if (parenthesized_expression "((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0))" ( (binary_expression "(local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)" (parenthesized_expression "(local_68 != (long *)0x0)" ( (binary_expression "local_68 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(lVar8 = *local_68, lVar8 != 0)" ( (comma_expression "lVar8 = *local_68, lVar8 != 0" (assignment_expression "lVar8 = *local_68" identifier = (pointer_expression "*local_68" * identifier)) , (binary_expression "lVar8 != 0" identifier != number_literal)) ))) )) (compound_statement "{\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }" { (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" identifier = number_literal) ;) (do_statement "do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);" do (compound_statement "{\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    }" { (expression_statement "local_68 = local_68 + 4;" (assignment_expression "local_68 = local_68 + 4" identifier = (binary_expression "local_68 + 4" identifier + number_literal)) ;) (expression_statement "plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);" (assignment_expression "plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5)" identifier = (cast_expression "(long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (call_expression "FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5)" identifier (argument_list "(lVar8,local_58,iVar7,plVar5,param_5)" ( identifier , identifier , identifier , identifier , identifier ))))) ;) (expression_statement "lVar8 = *local_68;" (assignment_expression "lVar8 = *local_68" identifier = (pointer_expression "*local_68" * identifier)) ;) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" identifier = (binary_expression "iVar7 + 1" identifier + number_literal)) ;) }) while (parenthesized_expression "(lVar8 != 0)" ( (binary_expression "lVar8 != 0" identifier != number_literal) )) ;) }))) (return_statement "return;" return ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE IDENT) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) , (parameter_declaration (sized_type_specifier long) (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * (pointer_declarator * IDENT)) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) })) }) (else_clause else (compound_statement { (for_statement for ( ; (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) , (binary_expression (binary_expression IDENT != LIT) || (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != LIT) )))) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) ))) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != LIT) ))) )) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = IDENT) ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (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) )) == LIT) )) && (parenthesized_expression ( (binary_expression (binary_expression IDENT - LIT) < LIT) ))) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( )))) , (binary_expression (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)) ) (pointer_expression * IDENT)) + (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) * LIT)) + LIT) )))) & LIT) )) != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (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) )) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) })) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) = LIT) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (while_statement while (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) >> LIT) )))) )) (goto_statement goto statement_identifier ;)) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (subscript_expression IDENT [ LIT ]))) = IDENT) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) & LIT) )) + LIT)) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = LIT) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) + LIT) )))) = (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) ))))) >> LIT) ))) * LIT) + LIT) )) * LIT) + (parenthesized_expression ( (binary_expression IDENT & LIT) )))) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = LIT) ;) })) })) (labeled_statement statement_identifier : (expression_statement ;)) })) }))) (expression_statement (assignment_expression (pointer_expression * IDENT) = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (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 (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE) ) IDENT)) ;) }) while (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ (binary_expression IDENT * LIT) ]) != LIT) )) ;) }))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = IDENT) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT != LIT)) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , IDENT ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) }))) (return_statement return ;) })))
(function_definition "void FUN_00108d09(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)\n\n{\n  undefined1 *puVar1;\n  char *__s2;\n  undefined8 *puVar2;\n  char *__s1;\n  uint uVar3;\n  ushort **ppuVar4;\n  long *plVar5;\n  ulong uVar6;\n  int iVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long *local_68;\n  long *local_58;\n  \n  plVar5 = (long *)*param_1;\n  local_68 = (long *)param_1[4];\n  plVar10 = plVar5;\n  if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  *param_4 = param_1[1];\n  param_4[1] = (long)param_1;\n  param_4[2] = param_5[1];\n  *(undefined4 *)(param_4 + 3) = 0;\n  param_4[4] = param_2;\n  *(undefined4 *)(param_4 + 5) = param_3;\n  param_4[6] = 0;\n  param_4[8] = 0;\n  param_4[7] = 0;\n  if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }\n  plVar5 = param_4 + 9;\n  local_58 = param_4;\nLAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }\n  return;\n}" (primitive_type "void") (function_declarator "FUN_00108d09(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)" (identifier "FUN_00108d09") (parameter_list "(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)" (( "(") (parameter_declaration "long *param_1" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "long param_2" (sized_type_specifier "long" (long "long")) (identifier "param_2")) (, ",") (parameter_declaration "undefined4 param_3" (type_identifier "undefined4") (identifier "param_3")) (, ",") (parameter_declaration "long *param_4" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) (, ",") (parameter_declaration "long *param_5" (sized_type_specifier "long" (long "long")) (pointer_declarator "*param_5" (* "*") (identifier "param_5"))) () ")"))) (compound_statement "{\n  undefined1 *puVar1;\n  char *__s2;\n  undefined8 *puVar2;\n  char *__s1;\n  uint uVar3;\n  ushort **ppuVar4;\n  long *plVar5;\n  ulong uVar6;\n  int iVar7;\n  long lVar8;\n  undefined8 *puVar9;\n  long *plVar10;\n  long *local_68;\n  long *local_58;\n  \n  plVar5 = (long *)*param_1;\n  local_68 = (long *)param_1[4];\n  plVar10 = plVar5;\n  if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }\n  *param_4 = param_1[1];\n  param_4[1] = (long)param_1;\n  param_4[2] = param_5[1];\n  *(undefined4 *)(param_4 + 3) = 0;\n  param_4[4] = param_2;\n  *(undefined4 *)(param_4 + 5) = param_3;\n  param_4[6] = 0;\n  param_4[8] = 0;\n  param_4[7] = 0;\n  if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }\n  plVar5 = param_4 + 9;\n  local_58 = param_4;\nLAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }\n  return;\n}" ({ "{") (declaration "undefined1 *puVar1;" (type_identifier "undefined1") (pointer_declarator "*puVar1" (* "*") (identifier "puVar1")) (; ";")) (declaration "char *__s2;" (primitive_type "char") (pointer_declarator "*__s2" (* "*") (identifier "__s2")) (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "char *__s1;" (primitive_type "char") (pointer_declarator "*__s1" (* "*") (identifier "__s1")) (; ";")) (declaration "uint uVar3;" (type_identifier "uint") (identifier "uVar3") (; ";")) (declaration "ushort **ppuVar4;" (type_identifier "ushort") (pointer_declarator "**ppuVar4" (* "*") (pointer_declarator "*ppuVar4" (* "*") (identifier "ppuVar4"))) (; ";")) (declaration "long *plVar5;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar5" (* "*") (identifier "plVar5")) (; ";")) (declaration "ulong uVar6;" (type_identifier "ulong") (identifier "uVar6") (; ";")) (declaration "int iVar7;" (primitive_type "int") (identifier "iVar7") (; ";")) (declaration "long lVar8;" (sized_type_specifier "long" (long "long")) (identifier "lVar8") (; ";")) (declaration "undefined8 *puVar9;" (type_identifier "undefined8") (pointer_declarator "*puVar9" (* "*") (identifier "puVar9")) (; ";")) (declaration "long *plVar10;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar10" (* "*") (identifier "plVar10")) (; ";")) (declaration "long *local_68;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_68" (* "*") (identifier "local_68")) (; ";")) (declaration "long *local_58;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (expression_statement "plVar5 = (long *)*param_1;" (assignment_expression "plVar5 = (long *)*param_1" (identifier "plVar5") (= "=") (cast_expression "(long *)*param_1" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*param_1" (* "*") (identifier "param_1")))) (; ";")) (expression_statement "local_68 = (long *)param_1[4];" (assignment_expression "local_68 = (long *)param_1[4]" (identifier "local_68") (= "=") (cast_expression "(long *)param_1[4]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_1[4]" (identifier "param_1") ([ "[") (number_literal "4") (] "]")))) (; ";")) (expression_statement "plVar10 = plVar5;" (assignment_expression "plVar10 = plVar5" (identifier "plVar10") (= "=") (identifier "plVar5")) (; ";")) (if_statement "if (plVar5 == (long *)0x0) {\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }\n  else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" (if "if") (parenthesized_expression "(plVar5 == (long *)0x0)" (( "(") (binary_expression "plVar5 == (long *)0x0" (identifier "plVar5") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }\n  }" ({ "{") (if_statement "if (param_1[1] == 0) {\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }" (if "if") (parenthesized_expression "(param_1[1] == 0)" (( "(") (binary_expression "param_1[1] == 0" (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      local_58 = (long *)0x0;\n      plVar5 = param_4;\n      goto LAB_00108f78;\n    }" ({ "{") (expression_statement "local_58 = (long *)0x0;" (assignment_expression "local_58 = (long *)0x0" (identifier "local_58") (= "=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";")) (expression_statement "plVar5 = param_4;" (assignment_expression "plVar5 = param_4" (identifier "plVar5") (= "=") (identifier "param_4")) (; ";")) (goto_statement "goto LAB_00108f78;" (goto "goto") (statement_identifier "LAB_00108f78") (; ";")) (} "}"))) (} "}")) (else_clause "else {\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" (else "else") (compound_statement "{\n    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }\n  }" ({ "{") (for_statement "for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }" (for "for") (( "(") (; ";") (parenthesized_expression "(((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0))" (( "(") (binary_expression "((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||\n           ((int)plVar5[5] != 0)" (parenthesized_expression "((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0))" (( "(") (binary_expression "(iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)" (parenthesized_expression "(iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0))" (( "(") (comma_expression "iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)" (assignment_expression "iVar7 = (int)plVar5[1]" (identifier "iVar7") (= "=") (cast_expression "(int)plVar5[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar5[1]" (identifier "plVar5") ([ "[") (number_literal "1") (] "]")))) (, ",") (binary_expression "iVar7 != 0 || (*plVar5 != 0)" (binary_expression "iVar7 != 0" (identifier "iVar7") (!= "!=") (number_literal "0")) (|| "||") (parenthesized_expression "(*plVar5 != 0)" (( "(") (binary_expression "*plVar5 != 0" (pointer_expression "*plVar5" (* "*") (identifier "plVar5")) (!= "!=") (number_literal "0")) () ")")))) () ")")) (|| "||") (parenthesized_expression "(plVar5[4] != 0)" (( "(") (binary_expression "plVar5[4] != 0" (subscript_expression "plVar5[4]" (identifier "plVar5") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0")) () ")"))) () ")")) (|| "||") (parenthesized_expression "((int)plVar5[5] != 0)" (( "(") (binary_expression "(int)plVar5[5] != 0" (cast_expression "(int)plVar5[5]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar5[5]" (identifier "plVar5") ([ "[") (number_literal "5") (] "]"))) (!= "!=") (number_literal "0")) () ")"))) () ")")) (; ";") (assignment_expression "plVar5 = plVar5 + 6" (identifier "plVar5") (= "=") (binary_expression "plVar5 + 6" (identifier "plVar5") (+ "+") (number_literal "6"))) () ")") (compound_statement "{\n      if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }\n      if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }\nLAB_00108d87:\n    }" ({ "{") (if_statement "if ((*(uint *)(plVar5 + 3) & 4) == 0) {\n        plVar10 = plVar5;\n      }" (if "if") (parenthesized_expression "((*(uint *)(plVar5 + 3) & 4) == 0)" (( "(") (binary_expression "(*(uint *)(plVar5 + 3) & 4) == 0" (parenthesized_expression "(*(uint *)(plVar5 + 3) & 4)" (( "(") (binary_expression "*(uint *)(plVar5 + 3) & 4" (pointer_expression "*(uint *)(plVar5 + 3)" (* "*") (cast_expression "(uint *)(plVar5 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar5 + 3)" (( "(") (binary_expression "plVar5 + 3" (identifier "plVar5") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "4")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        plVar10 = plVar5;\n      }" ({ "{") (expression_statement "plVar10 = plVar5;" (assignment_expression "plVar10 = plVar5" (identifier "plVar10") (= "=") (identifier "plVar5")) (; ";")) (} "}"))) (if_statement "if ((*(uint *)(plVar10 + 3) & 8) == 0) {\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }" (if "if") (parenthesized_expression "((*(uint *)(plVar10 + 3) & 8) == 0)" (( "(") (binary_expression "(*(uint *)(plVar10 + 3) & 8) == 0" (parenthesized_expression "(*(uint *)(plVar10 + 3) & 8)" (( "(") (binary_expression "*(uint *)(plVar10 + 3) & 8" (pointer_expression "*(uint *)(plVar10 + 3)" (* "*") (cast_expression "(uint *)(plVar10 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar10 + 3)" (( "(") (binary_expression "plVar10 + 3" (identifier "plVar10") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }\n        __s2 = (char *)*plVar5;\n        if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }\n      }" ({ "{") (if_statement "if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )) {\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }" (if "if") (parenthesized_expression "((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           ))" (( "(") (binary_expression "(((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&\n           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )" (parenthesized_expression "(((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff))" (( "(") (binary_expression "((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)" (parenthesized_expression "((*(uint *)(plVar5 + 3) & 8) == 0)" (( "(") (binary_expression "(*(uint *)(plVar5 + 3) & 8) == 0" (parenthesized_expression "(*(uint *)(plVar5 + 3) & 8)" (( "(") (binary_expression "*(uint *)(plVar5 + 3) & 8" (pointer_expression "*(uint *)(plVar5 + 3)" (* "*") (cast_expression "(uint *)(plVar5 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar5 + 3)" (( "(") (binary_expression "plVar5 + 3" (identifier "plVar5") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "8")) () ")")) (== "==") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(iVar7 - 1U < 0xff)" (( "(") (binary_expression "iVar7 - 1U < 0xff" (binary_expression "iVar7 - 1U" (identifier "iVar7") (- "-") (number_literal "1U")) (< "<") (number_literal "0xff")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0\n           )" (( "(") (comma_expression "ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0" (assignment_expression "ppuVar4 = __ctype_b_loc()" (identifier "ppuVar4") (= "=") (call_expression "__ctype_b_loc()" (identifier "__ctype_b_loc") (argument_list "()" (( "(") () ")")))) (, ",") (binary_expression "(*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0" (parenthesized_expression "(*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40)" (( "(") (binary_expression "*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40" (pointer_expression "*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1)" (* "*") (cast_expression "(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)*ppuVar4 + (long)iVar7 * 2 + 1)" (( "(") (binary_expression "(long)*ppuVar4 + (long)iVar7 * 2 + 1" (binary_expression "(long)*ppuVar4 + (long)iVar7 * 2" (cast_expression "(long)*ppuVar4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (pointer_expression "*ppuVar4" (* "*") (identifier "ppuVar4"))) (+ "+") (binary_expression "(long)iVar7 * 2" (cast_expression "(long)iVar7" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "iVar7")) (* "*") (number_literal "2"))) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x40")) () ")")) (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n          puVar1 = (undefined1 *)param_5[1];\n          param_5[1] = (long)(puVar1 + 1);\n          *puVar1 = (char)iVar7;\n          if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }\n          *(undefined1 *)param_5[1] = 0;\n        }" ({ "{") (expression_statement "puVar1 = (undefined1 *)param_5[1];" (assignment_expression "puVar1 = (undefined1 *)param_5[1]" (identifier "puVar1") (= "=") (cast_expression "(undefined1 *)param_5[1]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_5[1] = (long)(puVar1 + 1);" (assignment_expression "param_5[1] = (long)(puVar1 + 1)" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)(puVar1 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar1 = (char)iVar7;" (assignment_expression "*puVar1 = (char)iVar7" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (cast_expression "(char)iVar7" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (identifier "iVar7"))) (; ";")) (if_statement "if (plVar10[2] != 0) {\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }" (if "if") (parenthesized_expression "(plVar10[2] != 0)" (( "(") (binary_expression "plVar10[2] != 0" (subscript_expression "plVar10[2]" (identifier "plVar10") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            puVar1 = (undefined1 *)param_5[1];\n            param_5[1] = (long)(puVar1 + 1);\n            *puVar1 = 0x3a;\n            if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }\n          }" ({ "{") (expression_statement "puVar1 = (undefined1 *)param_5[1];" (assignment_expression "puVar1 = (undefined1 *)param_5[1]" (identifier "puVar1") (= "=") (cast_expression "(undefined1 *)param_5[1]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_5[1] = (long)(puVar1 + 1);" (assignment_expression "param_5[1] = (long)(puVar1 + 1)" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)(puVar1 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar1 = 0x3a;" (assignment_expression "*puVar1 = 0x3a" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "0x3a")) (; ";")) (if_statement "if ((*(byte *)(plVar10 + 3) & 1) != 0) {\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }" (if "if") (parenthesized_expression "((*(byte *)(plVar10 + 3) & 1) != 0)" (( "(") (binary_expression "(*(byte *)(plVar10 + 3) & 1) != 0" (parenthesized_expression "(*(byte *)(plVar10 + 3) & 1)" (( "(") (binary_expression "*(byte *)(plVar10 + 3) & 1" (pointer_expression "*(byte *)(plVar10 + 3)" (* "*") (cast_expression "(byte *)(plVar10 + 3)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar10 + 3)" (( "(") (binary_expression "plVar10 + 3" (identifier "plVar10") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "1")) () ")")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n              puVar1 = (undefined1 *)param_5[1];\n              param_5[1] = (long)(puVar1 + 1);\n              *puVar1 = 0x3a;\n            }" ({ "{") (expression_statement "puVar1 = (undefined1 *)param_5[1];" (assignment_expression "puVar1 = (undefined1 *)param_5[1]" (identifier "puVar1") (= "=") (cast_expression "(undefined1 *)param_5[1]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "param_5[1] = (long)(puVar1 + 1);" (assignment_expression "param_5[1] = (long)(puVar1 + 1)" (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)(puVar1 + 1)" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (parenthesized_expression "(puVar1 + 1)" (( "(") (binary_expression "puVar1 + 1" (identifier "puVar1") (+ "+") (number_literal "1")) () ")")))) (; ";")) (expression_statement "*puVar1 = 0x3a;" (assignment_expression "*puVar1 = 0x3a" (pointer_expression "*puVar1" (* "*") (identifier "puVar1")) (= "=") (number_literal "0x3a")) (; ";")) (} "}"))) (} "}"))) (expression_statement "*(undefined1 *)param_5[1] = 0;" (assignment_expression "*(undefined1 *)param_5[1] = 0" (pointer_expression "*(undefined1 *)param_5[1]" (* "*") (cast_expression "(undefined1 *)param_5[1]" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (expression_statement "__s2 = (char *)*plVar5;" (assignment_expression "__s2 = (char *)*plVar5" (identifier "__s2") (= "=") (cast_expression "(char *)*plVar5" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar5" (* "*") (identifier "plVar5")))) (; ";")) (if_statement "if (__s2 != (char *)0x0) {\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }" (if "if") (parenthesized_expression "(__s2 != (char *)0x0)" (( "(") (binary_expression "__s2 != (char *)0x0" (identifier "__s2") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          puVar2 = *(undefined8 **)(*param_5 + 0x10);\n          __s1 = (char *)*puVar2;\n          puVar9 = puVar2;\n          while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }\n          *(char **)param_5[2] = __s2;\n          iVar7 = 0;\n          if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }\n          *(int *)(param_5[2] + 8) = iVar7;\n          *(undefined8 *)(param_5[2] + 0x10) = 0;\n          uVar3 = *(uint *)(plVar5 + 1);\n          if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }\n          *(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);\n          lVar8 = param_5[2];\n          param_5[2] = lVar8 + 0x20;\n          *(undefined8 *)(lVar8 + 0x20) = 0;\n        }" ({ "{") (expression_statement "puVar2 = *(undefined8 **)(*param_5 + 0x10);" (assignment_expression "puVar2 = *(undefined8 **)(*param_5 + 0x10)" (identifier "puVar2") (= "=") (pointer_expression "*(undefined8 **)(*param_5 + 0x10)" (* "*") (cast_expression "(undefined8 **)(*param_5 + 0x10)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*param_5 + 0x10)" (( "(") (binary_expression "*param_5 + 0x10" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "__s1 = (char *)*puVar2;" (assignment_expression "__s1 = (char *)*puVar2" (identifier "__s1") (= "=") (cast_expression "(char *)*puVar2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2")))) (; ";")) (expression_statement "puVar9 = puVar2;" (assignment_expression "puVar9 = puVar2" (identifier "puVar9") (= "=") (identifier "puVar2")) (; ";")) (while_statement "while (__s1 != (char *)0x0) {\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }" (while "while") (parenthesized_expression "(__s1 != (char *)0x0)" (( "(") (binary_expression "__s1 != (char *)0x0" (identifier "__s1") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n            iVar7 = strcmp(__s1,__s2);\n            if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }\n            puVar9 = puVar9 + 4;\n            __s1 = (char *)*puVar9;\n          }" ({ "{") (expression_statement "iVar7 = strcmp(__s1,__s2);" (assignment_expression "iVar7 = strcmp(__s1,__s2)" (identifier "iVar7") (= "=") (call_expression "strcmp(__s1,__s2)" (identifier "strcmp") (argument_list "(__s1,__s2)" (( "(") (identifier "__s1") (, ",") (identifier "__s2") () ")")))) (; ";")) (if_statement "if (iVar7 == 0) {\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }" (if "if") (parenthesized_expression "(iVar7 == 0)" (( "(") (binary_expression "iVar7 == 0" (identifier "iVar7") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;\n              break;\n            }" ({ "{") (if_statement "if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;" (if "if") (parenthesized_expression "(-1 < (int)((long)puVar9 - (long)puVar2 >> 5))" (( "(") (binary_expression "-1 < (int)((long)puVar9 - (long)puVar2 >> 5)" (number_literal "-1") (< "<") (cast_expression "(int)((long)puVar9 - (long)puVar2 >> 5)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((long)puVar9 - (long)puVar2 >> 5)" (( "(") (binary_expression "(long)puVar9 - (long)puVar2 >> 5" (binary_expression "(long)puVar9 - (long)puVar2" (cast_expression "(long)puVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar9")) (- "-") (cast_expression "(long)puVar2" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar2"))) (>> ">>") (number_literal "5")) () ")")))) () ")")) (goto_statement "goto LAB_00108d87;" (goto "goto") (statement_identifier "LAB_00108d87") (; ";"))) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "puVar9 = puVar9 + 4;" (assignment_expression "puVar9 = puVar9 + 4" (identifier "puVar9") (= "=") (binary_expression "puVar9 + 4" (identifier "puVar9") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "__s1 = (char *)*puVar9;" (assignment_expression "__s1 = (char *)*puVar9" (identifier "__s1") (= "=") (cast_expression "(char *)*puVar9" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar9" (* "*") (identifier "puVar9")))) (; ";")) (} "}"))) (expression_statement "*(char **)param_5[2] = __s2;" (assignment_expression "*(char **)param_5[2] = __s2" (pointer_expression "*(char **)param_5[2]" (* "*") (cast_expression "(char **)param_5[2]" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")))) (= "=") (identifier "__s2")) (; ";")) (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (if_statement "if (plVar10[2] != 0) {\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }" (if "if") (parenthesized_expression "(plVar10[2] != 0)" (( "(") (binary_expression "plVar10[2] != 0" (subscript_expression "plVar10[2]" (identifier "plVar10") ([ "[") (number_literal "2") (] "]")) (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;\n          }" ({ "{") (expression_statement "iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;" (assignment_expression "iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1" (identifier "iVar7") (= "=") (binary_expression "(*(uint *)(plVar10 + 3) & 1) + 1" (parenthesized_expression "(*(uint *)(plVar10 + 3) & 1)" (( "(") (binary_expression "*(uint *)(plVar10 + 3) & 1" (pointer_expression "*(uint *)(plVar10 + 3)" (* "*") (cast_expression "(uint *)(plVar10 + 3)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar10 + 3)" (( "(") (binary_expression "plVar10 + 3" (identifier "plVar10") (+ "+") (number_literal "3")) () ")")))) (& "&") (number_literal "1")) () ")")) (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "*(int *)(param_5[2] + 8) = iVar7;" (assignment_expression "*(int *)(param_5[2] + 8) = iVar7" (pointer_expression "*(int *)(param_5[2] + 8)" (* "*") (cast_expression "(int *)(param_5[2] + 8)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5[2] + 8)" (( "(") (binary_expression "param_5[2] + 8" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "8")) () ")")))) (= "=") (identifier "iVar7")) (; ";")) (expression_statement "*(undefined8 *)(param_5[2] + 0x10) = 0;" (assignment_expression "*(undefined8 *)(param_5[2] + 0x10) = 0" (pointer_expression "*(undefined8 *)(param_5[2] + 0x10)" (* "*") (cast_expression "(undefined8 *)(param_5[2] + 0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5[2] + 0x10)" (( "(") (binary_expression "param_5[2] + 0x10" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x10")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "uVar3 = *(uint *)(plVar5 + 1);" (assignment_expression "uVar3 = *(uint *)(plVar5 + 1)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(plVar5 + 1)" (* "*") (cast_expression "(uint *)(plVar5 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar5 + 1)" (( "(") (binary_expression "plVar5 + 1" (identifier "plVar5") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (if_statement "if (uVar3 == 0) {\n            uVar3 = *(uint *)(plVar10 + 1);\n          }" (if "if") (parenthesized_expression "(uVar3 == 0)" (( "(") (binary_expression "uVar3 == 0" (identifier "uVar3") (== "==") (number_literal "0")) () ")")) (compound_statement "{\n            uVar3 = *(uint *)(plVar10 + 1);\n          }" ({ "{") (expression_statement "uVar3 = *(uint *)(plVar10 + 1);" (assignment_expression "uVar3 = *(uint *)(plVar10 + 1)" (identifier "uVar3") (= "=") (pointer_expression "*(uint *)(plVar10 + 1)" (* "*") (cast_expression "(uint *)(plVar10 + 1)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(plVar10 + 1)" (( "(") (binary_expression "plVar10 + 1" (identifier "plVar10") (+ "+") (number_literal "1")) () ")"))))) (; ";")) (} "}"))) (expression_statement "*(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff);" (assignment_expression "*(uint *)(param_5[2] + 0x18) =\n               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff)" (pointer_expression "*(uint *)(param_5[2] + 0x18)" (* "*") (cast_expression "(uint *)(param_5[2] + 0x18)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_5[2] + 0x18)" (( "(") (binary_expression "param_5[2] + 0x18" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (+ "+") (number_literal "0x18")) () ")")))) (= "=") (binary_expression "((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000\n               + (uVar3 & 0xffffff)" (binary_expression "((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000" (parenthesized_expression "((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1)" (( "(") (binary_expression "(int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1" (binary_expression "(int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39" (cast_expression "(int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((long)param_4 - *(long *)(*param_5 + 0x50) >> 3)" (( "(") (binary_expression "(long)param_4 - *(long *)(*param_5 + 0x50) >> 3" (binary_expression "(long)param_4 - *(long *)(*param_5 + 0x50)" (cast_expression "(long)param_4" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_4")) (- "-") (pointer_expression "*(long *)(*param_5 + 0x50)" (* "*") (cast_expression "(long *)(*param_5 + 0x50)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*param_5 + 0x50)" (( "(") (binary_expression "*param_5 + 0x50" (pointer_expression "*param_5" (* "*") (identifier "param_5")) (+ "+") (number_literal "0x50")) () ")"))))) (>> ">>") (number_literal "3")) () ")"))) (* "*") (number_literal "0x38e38e39")) (+ "+") (number_literal "1")) () ")")) (* "*") (number_literal "0x1000000")) (+ "+") (parenthesized_expression "(uVar3 & 0xffffff)" (( "(") (binary_expression "uVar3 & 0xffffff" (identifier "uVar3") (& "&") (number_literal "0xffffff")) () ")")))) (; ";")) (expression_statement "lVar8 = param_5[2];" (assignment_expression "lVar8 = param_5[2]" (identifier "lVar8") (= "=") (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "param_5[2] = lVar8 + 0x20;" (assignment_expression "param_5[2] = lVar8 + 0x20" (subscript_expression "param_5[2]" (identifier "param_5") ([ "[") (number_literal "2") (] "]")) (= "=") (binary_expression "lVar8 + 0x20" (identifier "lVar8") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "*(undefined8 *)(lVar8 + 0x20) = 0;" (assignment_expression "*(undefined8 *)(lVar8 + 0x20) = 0" (pointer_expression "*(undefined8 *)(lVar8 + 0x20)" (* "*") (cast_expression "(undefined8 *)(lVar8 + 0x20)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(lVar8 + 0x20)" (( "(") (binary_expression "lVar8 + 0x20" (identifier "lVar8") (+ "+") (number_literal "0x20")) () ")")))) (= "=") (number_literal "0")) (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_00108d87:" (statement_identifier "LAB_00108d87") (: ":") (expression_statement "" (; ""))) (} "}"))) (} "}")))) (expression_statement "*param_4 = param_1[1];" (assignment_expression "*param_4 = param_1[1]" (pointer_expression "*param_4" (* "*") (identifier "param_4")) (= "=") (subscript_expression "param_1[1]" (identifier "param_1") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "param_4[1] = (long)param_1;" (assignment_expression "param_4[1] = (long)param_1" (subscript_expression "param_4[1]" (identifier "param_4") ([ "[") (number_literal "1") (] "]")) (= "=") (cast_expression "(long)param_1" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_1"))) (; ";")) (expression_statement "param_4[2] = param_5[1];" (assignment_expression "param_4[2] = param_5[1]" (subscript_expression "param_4[2]" (identifier "param_4") ([ "[") (number_literal "2") (] "]")) (= "=") (subscript_expression "param_5[1]" (identifier "param_5") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "*(undefined4 *)(param_4 + 3) = 0;" (assignment_expression "*(undefined4 *)(param_4 + 3) = 0" (pointer_expression "*(undefined4 *)(param_4 + 3)" (* "*") (cast_expression "(undefined4 *)(param_4 + 3)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 3)" (( "(") (binary_expression "param_4 + 3" (identifier "param_4") (+ "+") (number_literal "3")) () ")")))) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_4[4] = param_2;" (assignment_expression "param_4[4] = param_2" (subscript_expression "param_4[4]" (identifier "param_4") ([ "[") (number_literal "4") (] "]")) (= "=") (identifier "param_2")) (; ";")) (expression_statement "*(undefined4 *)(param_4 + 5) = param_3;" (assignment_expression "*(undefined4 *)(param_4 + 5) = param_3" (pointer_expression "*(undefined4 *)(param_4 + 5)" (* "*") (cast_expression "(undefined4 *)(param_4 + 5)" (( "(") (type_descriptor "undefined4 *" (type_identifier "undefined4") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_4 + 5)" (( "(") (binary_expression "param_4 + 5" (identifier "param_4") (+ "+") (number_literal "5")) () ")")))) (= "=") (identifier "param_3")) (; ";")) (expression_statement "param_4[6] = 0;" (assignment_expression "param_4[6] = 0" (subscript_expression "param_4[6]" (identifier "param_4") ([ "[") (number_literal "6") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_4[8] = 0;" (assignment_expression "param_4[8] = 0" (subscript_expression "param_4[8]" (identifier "param_4") ([ "[") (number_literal "8") (] "]")) (= "=") (number_literal "0")) (; ";")) (expression_statement "param_4[7] = 0;" (assignment_expression "param_4[7] = 0" (subscript_expression "param_4[7]" (identifier "param_4") ([ "[") (number_literal "7") (] "]")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (local_68 != (long *)0x0) {\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }" (if "if") (parenthesized_expression "(local_68 != (long *)0x0)" (( "(") (binary_expression "local_68 != (long *)0x0" (identifier "local_68") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }\n    lVar8 = param_5[3];\n    param_4[7] = lVar8;\n    param_5[3] = lVar8 + uVar6 * 8;\n  }" ({ "{") (if_statement "if (*local_68 == 0) {\n      uVar6 = 0;\n    }\n    else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }" (if "if") (parenthesized_expression "(*local_68 == 0)" (( "(") (binary_expression "*local_68 == 0" (pointer_expression "*local_68" (* "*") (identifier "local_68")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n      uVar6 = 0;\n    }" ({ "{") (expression_statement "uVar6 = 0;" (assignment_expression "uVar6 = 0" (identifier "uVar6") (= "=") (number_literal "0")) (; ";")) (} "}")) (else_clause "else {\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }" (else "else") (compound_statement "{\n      uVar3 = 0;\n      do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);\n    }" ({ "{") (expression_statement "uVar3 = 0;" (assignment_expression "uVar3 = 0" (identifier "uVar3") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      } while (local_68[uVar6 * 4] != 0);" (do "do") (compound_statement "{\n        uVar3 = uVar3 + 1;\n        uVar6 = (ulong)uVar3;\n      }" ({ "{") (expression_statement "uVar3 = uVar3 + 1;" (assignment_expression "uVar3 = uVar3 + 1" (identifier "uVar3") (= "=") (binary_expression "uVar3 + 1" (identifier "uVar3") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar6 = (ulong)uVar3;" (assignment_expression "uVar6 = (ulong)uVar3" (identifier "uVar6") (= "=") (cast_expression "(ulong)uVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "uVar3"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(local_68[uVar6 * 4] != 0)" (( "(") (binary_expression "local_68[uVar6 * 4] != 0" (subscript_expression "local_68[uVar6 * 4]" (identifier "local_68") ([ "[") (binary_expression "uVar6 * 4" (identifier "uVar6") (* "*") (number_literal "4")) (] "]")) (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (expression_statement "lVar8 = param_5[3];" (assignment_expression "lVar8 = param_5[3]" (identifier "lVar8") (= "=") (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]"))) (; ";")) (expression_statement "param_4[7] = lVar8;" (assignment_expression "param_4[7] = lVar8" (subscript_expression "param_4[7]" (identifier "param_4") ([ "[") (number_literal "7") (] "]")) (= "=") (identifier "lVar8")) (; ";")) (expression_statement "param_5[3] = lVar8 + uVar6 * 8;" (assignment_expression "param_5[3] = lVar8 + uVar6 * 8" (subscript_expression "param_5[3]" (identifier "param_5") ([ "[") (number_literal "3") (] "]")) (= "=") (binary_expression "lVar8 + uVar6 * 8" (identifier "lVar8") (+ "+") (binary_expression "uVar6 * 8" (identifier "uVar6") (* "*") (number_literal "8")))) (; ";")) (} "}"))) (expression_statement "plVar5 = param_4 + 9;" (assignment_expression "plVar5 = param_4 + 9" (identifier "plVar5") (= "=") (binary_expression "param_4 + 9" (identifier "param_4") (+ "+") (number_literal "9"))) (; ";")) (expression_statement "local_58 = param_4;" (assignment_expression "local_58 = param_4" (identifier "local_58") (= "=") (identifier "param_4")) (; ";")) (labeled_statement "LAB_00108f78:\n  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }" (statement_identifier "LAB_00108f78") (: ":") (if_statement "if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }" (if "if") (parenthesized_expression "((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0))" (( "(") (binary_expression "(local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)" (parenthesized_expression "(local_68 != (long *)0x0)" (( "(") (binary_expression "local_68 != (long *)0x0" (identifier "local_68") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(lVar8 = *local_68, lVar8 != 0)" (( "(") (comma_expression "lVar8 = *local_68, lVar8 != 0" (assignment_expression "lVar8 = *local_68" (identifier "lVar8") (= "=") (pointer_expression "*local_68" (* "*") (identifier "local_68"))) (, ",") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (compound_statement "{\n    iVar7 = 0;\n    do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);\n  }" ({ "{") (expression_statement "iVar7 = 0;" (assignment_expression "iVar7 = 0" (identifier "iVar7") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    } while (lVar8 != 0);" (do "do") (compound_statement "{\n      local_68 = local_68 + 4;\n      plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);\n      lVar8 = *local_68;\n      iVar7 = iVar7 + 1;\n    }" ({ "{") (expression_statement "local_68 = local_68 + 4;" (assignment_expression "local_68 = local_68 + 4" (identifier "local_68") (= "=") (binary_expression "local_68 + 4" (identifier "local_68") (+ "+") (number_literal "4"))) (; ";")) (expression_statement "plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5);" (assignment_expression "plVar5 = (long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5)" (identifier "plVar5") (= "=") (cast_expression "(long *)FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "FUN_00108d09(lVar8,local_58,iVar7,plVar5,param_5)" (identifier "FUN_00108d09") (argument_list "(lVar8,local_58,iVar7,plVar5,param_5)" (( "(") (identifier "lVar8") (, ",") (identifier "local_58") (, ",") (identifier "iVar7") (, ",") (identifier "plVar5") (, ",") (identifier "param_5") () ")"))))) (; ";")) (expression_statement "lVar8 = *local_68;" (assignment_expression "lVar8 = *local_68" (identifier "lVar8") (= "=") (pointer_expression "*local_68" (* "*") (identifier "local_68"))) (; ";")) (expression_statement "iVar7 = iVar7 + 1;" (assignment_expression "iVar7 = iVar7 + 1" (identifier "iVar7") (= "=") (binary_expression "iVar7 + 1" (identifier "iVar7") (+ "+") (number_literal "1"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(lVar8 != 0)" (( "(") (binary_expression "lVar8 != 0" (identifier "lVar8") (!= "!=") (number_literal "0")) () ")")) (; ";")) (} "}")))) (return_statement "return;" (return "return") (; ";")) (} "}")))

type_1 * function_1(type_2 *type_2,type_1 *parent,type_3 parent_index,type_1 *type_1,
                       type_4 *cvt)

{
  char *var_4;
  type_5 *var_9;
  char *var_5;
  void **var_11;
  type_3 var_8;
  type_6 **ppuVar5;
  type_1 *group_00;
  type_7 var_12;
  type_8 *var_1;
  int var_2;
  type_2 *var_13;
  type_5 *var_7;
  type_8 *paVar10;
  type_9 *var_10;
  type_1 *local_58;
  
  var_1 = type_2->options;
  var_10 = type_2->children;
  paVar10 = var_1;
  if (var_1 == (type_8 *)0x0) {
    if (type_2->parser == (type_10)0x0) {
      local_58 = (type_1 *)0x0;
      group_00 = type_1;
      goto LAB_00108f78;
    }
  }
  else {
    for (; (((var_2 = var_1->key, var_2 != 0 || (var_1->name != (char *)0x0)) ||
            (var_1->doc != (char *)0x0)) || (var_1->type_1 != 0)); var_1 = var_1 + 1) {
      if ((var_1->flags & 4U) == 0) {
        paVar10 = var_1;
      }
      if ((paVar10->flags & 8U) == 0) {
        if ((((var_1->flags & 8U) == 0) && (var_2 - 1U < 0xff)) &&
           (ppuVar5 = var_3(), (*(type_11 *)((long)*ppuVar5 + (long)var_2 * 2 + 1) & 0x40) != 0
           )) {
          var_4 = cvt->short_end;
          cvt->short_end = var_4 + 1;
          *var_4 = (char)var_2;
          if (paVar10->arg != (char *)0x0) {
            var_4 = cvt->short_end;
            cvt->short_end = var_4 + 1;
            *var_4 = ':';
            if ((paVar10->flags & 1) != 0) {
              var_4 = cvt->short_end;
              cvt->short_end = var_4 + 1;
              *var_4 = ':';
            }
          }
          *cvt->short_end = '\0';
        }
        var_4 = var_1->name;
        if (var_4 != (char *)0x0) {
          var_9 = cvt->parser->long_opts;
          var_5 = var_9->name;
          var_7 = var_9;
          while (var_5 != (char *)0x0) {
            var_2 = var_6(var_5,var_4);
            if (var_2 == 0) {
              if (-1 < (int)((long)var_7 - (long)var_9 >> 5)) goto LAB_00108d87;
              break;
            }
            var_7 = var_7 + 1;
            var_5 = var_7->name;
          }
          cvt->long_end->name = var_4;
          var_2 = 0;
          if (paVar10->arg != (char *)0x0) {
            var_2 = (paVar10->flags & 1U) + 1;
          }
          cvt->long_end->has_arg = var_2;
          cvt->long_end->flag = (int *)0x0;
          var_8 = var_1->key;
          if (var_8 == 0) {
            var_8 = paVar10->key;
          }
          cvt->long_end->val =
               ((int)((long)type_1 - (long)cvt->parser->groups >> 3) * 0x38e38e39 + 1) * 0x1000000 +
               (var_8 & 0xffffff);
          var_9 = cvt->long_end;
          cvt->long_end = var_9 + 1;
          var_9[1].name = (char *)0x0;
        }
      }
LAB_00108d87:
    }
  }
  type_1->parser = type_2->parser;
  type_1->type_2 = type_2;
  type_1->short_end = cvt->short_end;
  type_1->args_processed = 0;
  type_1->parent = parent;
  type_1->parent_index = parent_index;
  type_1->input = (void *)0x0;
  type_1->hook = (void *)0x0;
  type_1->child_inputs = (void **)0x0;
  if (var_10 != (type_9 *)0x0) {
    if (var_10->type_2 == (type_2 *)0x0) {
      var_12 = 0;
    }
    else {
      var_8 = 0;
      do {
        var_8 = var_8 + 1;
        var_12 = (type_7)var_8;
      } while (var_10[var_12].type_2 != (type_2 *)0x0);
    }
    var_11 = cvt->child_inputs_end;
    type_1->child_inputs = var_11;
    cvt->child_inputs_end = var_11 + var_12;
  }
  group_00 = type_1 + 1;
  local_58 = type_1;
LAB_00108f78:
  if ((var_10 != (type_9 *)0x0) && (var_13 = var_10->type_2, var_13 != (type_2 *)0x0)) {
    var_8 = 0;
    do {
      var_10 = var_10 + 1;
      group_00 = function_1(var_13,local_58,var_8,group_00,cvt);
      var_13 = var_10->type_2;
      var_8 = var_8 + 1;
    } while (var_13 != (type_2 *)0x0);
  }
  return group_00;
}


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

void MASKED(long *param_1,long param_2,undefined4 param_3,long *param_4,long *param_5)

{
  undefined1 *puVar1;
  char *__s2;
  undefined8 *puVar2;
  char *__s1;
  uint uVar3;
  ushort **ppuVar4;
  long *plVar5;
  ulong uVar6;
  int iVar7;
  long lVar8;
  undefined8 *puVar9;
  long *plVar10;
  long *local_68;
  long *local_58;
  
  plVar5 = (long *)*param_1;
  local_68 = (long *)param_1[4];
  plVar10 = plVar5;
  if (plVar5 == (long *)0x0) {
    if (param_1[1] == 0) {
      local_58 = (long *)0x0;
      plVar5 = param_4;
      goto LAB_00108f78;
    }
  }
  else {
    for (; (((iVar7 = (int)plVar5[1], iVar7 != 0 || (*plVar5 != 0)) || (plVar5[4] != 0)) ||
           ((int)plVar5[5] != 0)); plVar5 = plVar5 + 6) {
      if ((*(uint *)(plVar5 + 3) & 4) == 0) {
        plVar10 = plVar5;
      }
      if ((*(uint *)(plVar10 + 3) & 8) == 0) {
        if ((((*(uint *)(plVar5 + 3) & 8) == 0) && (iVar7 - 1U < 0xff)) &&
           (ppuVar4 = __ctype_b_loc(), (*(byte *)((long)*ppuVar4 + (long)iVar7 * 2 + 1) & 0x40) != 0
           )) {
          puVar1 = (undefined1 *)param_5[1];
          param_5[1] = (long)(puVar1 + 1);
          *puVar1 = (char)iVar7;
          if (plVar10[2] != 0) {
            puVar1 = (undefined1 *)param_5[1];
            param_5[1] = (long)(puVar1 + 1);
            *puVar1 = 0x3a;
            if ((*(byte *)(plVar10 + 3) & 1) != 0) {
              puVar1 = (undefined1 *)param_5[1];
              param_5[1] = (long)(puVar1 + 1);
              *puVar1 = 0x3a;
            }
          }
          *(undefined1 *)param_5[1] = 0;
        }
        __s2 = (char *)*plVar5;
        if (__s2 != (char *)0x0) {
          puVar2 = *(undefined8 **)(*param_5 + 0x10);
          __s1 = (char *)*puVar2;
          puVar9 = puVar2;
          while (__s1 != (char *)0x0) {
            iVar7 = strcmp(__s1,__s2);
            if (iVar7 == 0) {
              if (-1 < (int)((long)puVar9 - (long)puVar2 >> 5)) goto LAB_00108d87;
              break;
            }
            puVar9 = puVar9 + 4;
            __s1 = (char *)*puVar9;
          }
          *(char **)param_5[2] = __s2;
          iVar7 = 0;
          if (plVar10[2] != 0) {
            iVar7 = (*(uint *)(plVar10 + 3) & 1) + 1;
          }
          *(int *)(param_5[2] + 8) = iVar7;
          *(undefined8 *)(param_5[2] + 0x10) = 0;
          uVar3 = *(uint *)(plVar5 + 1);
          if (uVar3 == 0) {
            uVar3 = *(uint *)(plVar10 + 1);
          }
          *(uint *)(param_5[2] + 0x18) =
               ((int)((long)param_4 - *(long *)(*param_5 + 0x50) >> 3) * 0x38e38e39 + 1) * 0x1000000
               + (uVar3 & 0xffffff);
          lVar8 = param_5[2];
          param_5[2] = lVar8 + 0x20;
          *(undefined8 *)(lVar8 + 0x20) = 0;
        }
      }
LAB_00108d87:
    }
  }
  *param_4 = param_1[1];
  param_4[1] = (long)param_1;
  param_4[2] = param_5[1];
  *(undefined4 *)(param_4 + 3) = 0;
  param_4[4] = param_2;
  *(undefined4 *)(param_4 + 5) = param_3;
  param_4[6] = 0;
  param_4[8] = 0;
  param_4[7] = 0;
  if (local_68 != (long *)0x0) {
    if (*local_68 == 0) {
      uVar6 = 0;
    }
    else {
      uVar3 = 0;
      do {
        uVar3 = uVar3 + 1;
        uVar6 = (ulong)uVar3;
      } while (local_68[uVar6 * 4] != 0);
    }
    lVar8 = param_5[3];
    param_4[7] = lVar8;
    param_5[3] = lVar8 + uVar6 * 8;
  }
  plVar5 = param_4 + 9;
  local_58 = param_4;
LAB_00108f78:
  if ((local_68 != (long *)0x0) && (lVar8 = *local_68, lVar8 != 0)) {
    iVar7 = 0;
    do {
      local_68 = local_68 + 4;
      plVar5 = (long *)MASKED(lVar8,local_58,iVar7,plVar5,param_5);
      lVar8 = *local_68;
      iVar7 = iVar7 + 1;
    } while (lVar8 != 0);
  }
  return;
}

