
bfd_boolean debug_type_samep(debug_handle *info,debug_type_s *t1,debug_type_s *t2)

{
  debug_type_kind dVar1;
  debug_type_kind dVar2;
  long lVar3;
  long lVar4;
  long lVar5;
  long lVar6;
  long lVar7;
  debug_class_type *pdVar8;
  debug_class_type *pdVar9;
  debug_field *ppdVar10;
  debug_field *ppdVar11;
  char *__s2;
  char *__s1;
  debug_named_type *pdVar12;
  debug_named_type *pdVar13;
  debug_baseclass *ppdVar14;
  debug_baseclass *ppdVar15;
  undefined8 *puVar16;
  undefined8 *puVar17;
  debug_method pdVar18;
  debug_method pdVar19;
  code *pcVar20;
  bfd_boolean bVar21;
  int iVar22;
  uint uVar23;
  debug_type_compare_list *pdVar24;
  debug_type_s *pdVar25;
  debug_type_s *t1_00;
  debug_array_type *pdVar26;
  debug_array_type *pdVar27;
  debug_name *pdVar28;
  debug_type_conflict *ppdVar29;
  debug_type_conflict pdVar30;
  long lVar31;
  debug_method *ppdVar32;
  debug_type_conflict *ppdVar33;
  debug_name *__s2_00;
  debug_name *__s1_00;
  debug_type_compare_list *pdVar34;
  debug_method *ppdVar35;
  debug_type_conflict pdVar36;
  debug_name *pdVar37;
  debug_type_compare_list top;
  
  while (dVar1 = t1->kind, dVar1 == DEBUG_KIND_INDIRECT) {
    t1 = *((t1->u).kindirect)->slot;
    if (t1 == (debug_type_conflict)0x0) {
      return 0;
    }
  }
  while (dVar2 = t2->kind, dVar2 == DEBUG_KIND_INDIRECT) {
    t2 = *((t2->u).kindirect)->slot;
    if (t2 == (debug_type_conflict)0x0) {
      return 0;
    }
  }
  if (t1 == t2) {
    return 1;
  }
  top.t1 = t1;
  top.t2 = t2;
  if (dVar1 == DEBUG_KIND_NAMED) {
    if (dVar2 == DEBUG_KIND_TAGGED) {
      bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2);
      return bVar21;
    }
    lVar31._0_4_ = t2->kind;
    lVar31._4_4_ = t2->size;
    lVar5._0_4_ = t1->kind;
    lVar5._4_4_ = t1->size;
    if (lVar5 != lVar31) {
      return 0;
    }
    pdVar24 = info->compare_list;
    pdVar34 = pdVar24;
    if (pdVar24 != (debug_type_compare_list *)0x0) goto LAB_0012b498;
    top.next = (debug_type_compare_list *)0x0;
    info->compare_list = &top;
switchD_0012b468_caseD_16:
    pdVar12 = (t2->u).knamed;
    pdVar13 = (t1->u).knamed;
    iVar22 = strcmp(pdVar13->name->name,pdVar12->name->name);
    uVar23 = 0;
    if (iVar22 != 0) goto LAB_0012b4be;
    pdVar25 = pdVar12->type;
    pdVar30 = pdVar13->type;
    goto LAB_0012b6fe;
  }
  if ((dVar2 == DEBUG_KIND_NAMED) && (dVar1 == DEBUG_KIND_TAGGED)) {
    bVar21 = debug_type_samep(info,t1,((t2->u).kpointer)->pointer);
    return bVar21;
  }
  lVar3._0_4_ = t2->kind;
  lVar3._4_4_ = t2->size;
  lVar4._0_4_ = t1->kind;
  lVar4._4_4_ = t1->size;
  if (lVar4 != lVar3) {
    return 0;
  }
  if (dVar1 == DEBUG_KIND_INT) {
    return (uint)((t1->u).kint == (t2->u).kint);
  }
  if (dVar1 < DEBUG_KIND_FLOAT) {
    if (dVar1 == DEBUG_KIND_VOID) {
      return 1;
    }
  }
  else if (dVar1 < DEBUG_KIND_STRUCT) {
    return 1;
  }
  pdVar24 = info->compare_list;
  pdVar34 = pdVar24;
  for (; pdVar24 != (debug_type_compare_list *)0x0; pdVar24 = pdVar24->next) {
LAB_0012b498:
    if ((t1 == pdVar24->t1) && (t2 == pdVar24->t2)) {
      return 1;
    }
  }
  info->compare_list = &top;
  pdVar24 = pdVar34;
  top.next = pdVar34;
  switch(dVar1) {
  case DEBUG_KIND_STRUCT:
  case DEBUG_KIND_UNION:
  case DEBUG_KIND_CLASS:
  case DEBUG_KIND_UNION_CLASS:
    pdVar8 = (t1->u).kclass;
    pdVar9 = (t2->u).kclass;
    if (pdVar8 == (debug_class_type *)0x0) {
      uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);
      break;
    }
    if (pdVar9 != (debug_class_type *)0x0) {
      if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {
        uVar23 = 1;
        break;
      }
      ppdVar10 = pdVar8->fields;
      ppdVar11 = pdVar9->fields;
      if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&
          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==
           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&
         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&
          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==
           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {
        lVar31 = 0;
        if (ppdVar10 != (debug_field *)0x0) {
          do {
            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);
            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);
            if (puVar16 == (undefined8 *)0x0) {
              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;
              goto LAB_0012b971;
            }
            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;
            __s2 = (char *)*puVar17;
            __s1 = (char *)*puVar16;
            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;
            if (*(int *)((long)puVar16 + 0x14) == 0) {
              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;
            }
            else {
              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);
              if (iVar22 != 0) goto LAB_0012b7fc;
            }
            iVar22 = strcmp(__s1,__s2);
            if (iVar22 != 0) goto LAB_0012b7fc;
            lVar31 = lVar31 + 8;
            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],
                                          (debug_type_real_list *)0x0);
            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],
                                        (debug_type_real_list *)0x0);
            uVar23 = debug_type_samep(info,t1_00,pdVar25);
            pdVar24 = top.next;
          } while (uVar23 != 0);
          break;
        }
LAB_0012b971:
        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&
           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,
           uVar23 == 0)) break;
        ppdVar14 = pdVar8->baseclasses;
        if (ppdVar14 != (debug_baseclass *)0x0) {
          ppdVar15 = pdVar9->baseclasses;
          lVar31 = 0;
          do {
            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);
            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);
            if (puVar16 == (undefined8 *)0x0) {
              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;
              goto LAB_0012b9f3;
            }
            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||
               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;
            lVar31 = lVar31 + 8;
            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);
            pdVar24 = top.next;
          } while (uVar23 != 0);
          break;
        }
LAB_0012b9f3:
        ppdVar32 = pdVar8->methods;
        if (ppdVar32 != (debug_method *)0x0) {
          ppdVar35 = pdVar9->methods;
          while( true ) {
            pdVar18 = *ppdVar32;
            pdVar19 = *ppdVar35;
            if (pdVar18 == (debug_method)0x0) break;
            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;
            if (((*pdVar18->name != *pdVar19->name) ||
                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||
               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=
                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;
            if (pdVar18->variants == (debug_method_variant_s **)0x0) {
                    /* WARNING: Does not return */
              pcVar20 = (code *)invalidInstructionException();
              (*pcVar20)();
            }
            ppdVar32 = ppdVar32 + 1;
            ppdVar35 = ppdVar35 + 1;
          }
          uVar23 = (uint)(pdVar19 == (debug_method)0x0);
          pdVar24 = top.next;
          break;
        }
        goto LAB_0012b941;
      }
    }
LAB_0012b55d:
    uVar23 = 0;
    break;
  case DEBUG_KIND_ENUM:
    pdVar12 = (t1->u).knamed;
    pdVar13 = (t2->u).knamed;
    if (pdVar12 == (debug_named_type *)0x0) {
      uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);
    }
    else {
      uVar23 = 0;
      if (pdVar13 != (debug_named_type *)0x0) {
        pdVar37 = pdVar12->name;
        pdVar28 = pdVar13->name;
        pdVar30 = pdVar12->type;
        pdVar36 = pdVar13->type;
        __s1_00 = pdVar37->next;
        __s2_00 = pdVar28->next;
        if (__s1_00 == (debug_name *)0x0) {
LAB_0012b950:
          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);
        }
        else if (((__s2_00 != (debug_name *)0x0) &&
                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&
                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,
                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {
          do {
            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);
            if (iVar22 != 0) goto LAB_0012b55d;
            pdVar37 = (debug_name *)&pdVar37->name;
            __s1_00 = *(debug_name **)pdVar37;
            pdVar28 = (debug_name *)&pdVar28->name;
            pdVar30 = (debug_type_conflict)&pdVar30->pointer;
            pdVar36 = (debug_type_conflict)&pdVar36->pointer;
            __s2_00 = *(debug_name **)pdVar28;
            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;
            uVar23 = 0;
          } while (((__s2_00 != (debug_name *)0x0) &&
                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&
                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));
        }
      }
    }
    break;
  case DEBUG_KIND_POINTER:
  case DEBUG_KIND_REFERENCE:
  case DEBUG_KIND_CONST:
  case DEBUG_KIND_VOLATILE:
    uVar23 = debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer);
    pdVar24 = top.next;
    break;
  case DEBUG_KIND_FUNCTION:
    uVar23 = 0;
    if (((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs) break;
    bVar21 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type
                             );
    if (bVar21 != 0) {
      ppdVar29 = ((t1->u).kfunction)->arg_types;
      ppdVar33 = ((t2->u).kfunction)->arg_types;
      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {
        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;
        while( true ) {
          if (*ppdVar29 == (debug_type_s *)0x0) break;
          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;
          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);
          if (bVar21 == 0) goto LAB_0012b92c;
          ppdVar29 = ppdVar29 + 1;
          ppdVar33 = ppdVar33 + 1;
        }
        goto LAB_0012b936;
      }
    }
    goto LAB_0012b7fc;
  case DEBUG_KIND_RANGE:
    pdVar27 = (debug_array_type *)(t2->u).krange;
    pdVar26 = (debug_array_type *)(t1->u).krange;
    uVar23 = 0;
    if ((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)) break;
    goto LAB_0012b729;
  case DEBUG_KIND_ARRAY:
    pdVar27 = (t2->u).karray;
    pdVar26 = (t1->u).karray;
    uVar23 = 0;
    if (((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||
       (pdVar26->stringp != pdVar27->stringp)) break;
    goto LAB_0012b729;
  case DEBUG_KIND_SET:
    pdVar27 = (debug_array_type *)(t2->u).kset;
    pdVar26 = (debug_array_type *)(t1->u).kset;
    uVar23 = 0;
    if (*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type) break;
LAB_0012b729:
    pdVar25 = pdVar27->element_type;
    pdVar30 = pdVar26->element_type;
LAB_0012b6fe:
    bVar21 = debug_type_samep(info,pdVar30,pdVar25);
    uVar23 = (uint)(bVar21 != 0);
    pdVar24 = top.next;
    break;
  case DEBUG_KIND_OFFSET:
    uVar23 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type
                             );
    pdVar24 = top.next;
    if (uVar23 == 0) break;
    pdVar25 = ((t2->u).kpointer)->pointer;
    pdVar30 = ((t1->u).kpointer)->pointer;
    goto LAB_0012b6fe;
  case DEBUG_KIND_METHOD:
    uVar23 = 0;
    if ((((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||
       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type
                                 ), pdVar24 = top.next, uVar23 == 0)) break;
    bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer);
    if (bVar21 != 0) {
      ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;
      ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;
      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {
        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;
        while( true ) {
          if (*ppdVar29 == (debug_type_s *)0x0) break;
          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;
          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);
          if (bVar21 == 0) goto LAB_0012b92c;
          ppdVar29 = ppdVar29 + 1;
          ppdVar33 = ppdVar33 + 1;
        }
        goto LAB_0012b936;
      }
    }
LAB_0012b7fc:
    uVar23 = 0;
    pdVar24 = top.next;
    break;
  case DEBUG_KIND_NAMED:
  case DEBUG_KIND_TAGGED:
    goto switchD_0012b468_caseD_16;
  default:
                    /* WARNING: Subroutine does not return */
    abort();
  }
LAB_0012b4be:
  info->compare_list = pdVar24;
  return uVar23;
LAB_0012b92c:
  if (*ppdVar29 == (debug_type_conflict)0x0) {
LAB_0012b936:
    if (*ppdVar33 == (debug_type_conflict)0x0) {
LAB_0012b941:
      uVar23 = 1;
      pdVar24 = top.next;
      goto LAB_0012b4be;
    }
  }
  goto LAB_0012b7fc;
}



uint FUN_0012b360(long param_1,uint *param_2,uint *param_3)

{
  uint uVar1;
  undefined8 *puVar2;
  code *pcVar3;
  uint uVar4;
  int iVar5;
  long *plVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  long *plVar9;
  long lVar10;
  long *plVar11;
  long lVar12;
  undefined8 *puVar13;
  char *pcVar14;
  long lVar15;
  char *pcVar16;
  undefined8 *puVar17;
  long *plVar18;
  undefined8 *puVar19;
  long *local_58;
  uint *local_50;
  uint *local_48;
  
  while (uVar4 = *param_2, uVar4 == 1) {
    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);
    if (param_2 == (uint *)0x0) {
      return 0;
    }
  }
  while (uVar1 = *param_3, uVar1 == 1) {
    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);
    if (param_3 == (uint *)0x0) {
      return 0;
    }
  }
  if (param_2 == param_3) {
    return 1;
  }
  local_50 = param_2;
  local_48 = param_3;
  if (uVar4 == 0x16) {
    if (uVar1 == 0x17) {
      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);
      return uVar4;
    }
    if (*(long *)param_2 != *(long *)param_3) {
      return 0;
    }
    plVar6 = *(long **)(param_1 + 0x58);
    local_58 = plVar6;
    if (plVar6 != (long *)0x0) goto LAB_0012b498;
    local_58 = (long *)0x0;
    *(long ***)(param_1 + 0x58) = &local_58;
switchD_0012b468_caseD_16:
    plVar11 = *(long **)(param_3 + 4);
    plVar9 = *(long **)(param_2 + 4);
    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));
    uVar4 = 0;
    if (iVar5 != 0) goto LAB_0012b4be;
    lVar10 = plVar11[1];
    lVar15 = plVar9[1];
    goto LAB_0012b6fe;
  }
  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {
    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));
    return uVar4;
  }
  if (*(long *)param_2 != *(long *)param_3) {
    return 0;
  }
  if (uVar4 == 3) {
    return (uint)(param_2[4] == param_3[4]);
  }
  if (uVar4 < 4) {
    if (uVar4 == 2) {
      return 1;
    }
  }
  else if (uVar4 < 7) {
    return 1;
  }
  plVar6 = *(long **)(param_1 + 0x58);
  local_58 = plVar6;
  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {
LAB_0012b498:
    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {
      return 1;
    }
  }
  *(long ***)(param_1 + 0x58) = &local_58;
  plVar6 = local_58;
  switch(uVar4) {
  case 7:
  case 8:
  case 9:
  case 10:
    plVar11 = *(long **)(param_2 + 4);
    plVar9 = *(long **)(param_3 + 4);
    if (plVar11 == (long *)0x0) {
      uVar4 = (uint)(plVar9 == (long *)0x0);
      break;
    }
    if (plVar9 != (long *)0x0) {
      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&
         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {
        uVar4 = 1;
        break;
      }
      lVar10 = *plVar11;
      lVar15 = *plVar9;
      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&
         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {
        lVar12 = 0;
        if (lVar10 != 0) {
          do {
            puVar13 = *(undefined8 **)(lVar10 + lVar12);
            puVar17 = *(undefined8 **)(lVar15 + lVar12);
            if (puVar13 == (undefined8 *)0x0) {
              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;
              goto LAB_0012b971;
            }
            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;
            pcVar16 = (char *)*puVar17;
            pcVar14 = (char *)*puVar13;
            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;
            if (*(int *)((long)puVar13 + 0x14) == 0) {
              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;
            }
            else {
              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);
              if (iVar5 != 0) goto LAB_0012b7fc;
            }
            iVar5 = strcmp(pcVar14,pcVar16);
            if (iVar5 != 0) goto LAB_0012b7fc;
            lVar12 = lVar12 + 8;
            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);
            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);
            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);
            plVar6 = local_58;
          } while (uVar4 != 0);
          break;
        }
LAB_0012b971:
        if ((plVar11[4] != 0) &&
           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))
        break;
        lVar10 = plVar11[2];
        if (lVar10 != 0) {
          lVar15 = plVar9[2];
          lVar12 = 0;
          do {
            puVar13 = *(undefined8 **)(lVar10 + lVar12);
            puVar17 = *(undefined8 **)(lVar15 + lVar12);
            if (puVar13 == (undefined8 *)0x0) {
              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;
              goto LAB_0012b9f3;
            }
            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||
               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;
            lVar12 = lVar12 + 8;
            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);
            plVar6 = local_58;
          } while (uVar4 != 0);
          break;
        }
LAB_0012b9f3:
        puVar13 = (undefined8 *)plVar11[3];
        if (puVar13 != (undefined8 *)0x0) {
          puVar17 = (undefined8 *)plVar9[3];
          while( true ) {
            puVar19 = (undefined8 *)*puVar13;
            puVar2 = (undefined8 *)*puVar17;
            if (puVar19 == (undefined8 *)0x0) break;
            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;
            if (((*(char *)*puVar19 != *(char *)*puVar2) ||
                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||
               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;
            if (puVar19[1] == 0) {
                    /* WARNING: Does not return */
              pcVar3 = (code *)invalidInstructionException();
              (*pcVar3)();
            }
            puVar13 = puVar13 + 1;
            puVar17 = puVar17 + 1;
          }
          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);
          plVar6 = local_58;
          break;
        }
        goto LAB_0012b941;
      }
    }
LAB_0012b55d:
    uVar4 = 0;
    break;
  case 0xb:
    puVar13 = *(undefined8 **)(param_2 + 4);
    puVar17 = *(undefined8 **)(param_3 + 4);
    if (puVar13 == (undefined8 *)0x0) {
      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);
    }
    else {
      uVar4 = 0;
      if (puVar17 != (undefined8 *)0x0) {
        puVar19 = (undefined8 *)*puVar13;
        plVar11 = (long *)*puVar17;
        plVar9 = (long *)puVar13[1];
        plVar18 = (long *)puVar17[1];
        pcVar16 = (char *)*puVar19;
        pcVar14 = (char *)*plVar11;
        if (pcVar16 == (char *)0x0) {
LAB_0012b950:
          uVar4 = (uint)(*plVar11 == 0);
        }
        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {
          do {
            iVar5 = strcmp(pcVar16,pcVar14);
            if (iVar5 != 0) goto LAB_0012b55d;
            puVar19 = puVar19 + 1;
            pcVar16 = (char *)*puVar19;
            plVar11 = plVar11 + 1;
            plVar9 = plVar9 + 1;
            plVar18 = plVar18 + 1;
            pcVar14 = (char *)*plVar11;
            if (pcVar16 == (char *)0x0) goto LAB_0012b950;
            uVar4 = 0;
          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));
        }
      }
    }
    break;
  case 0xc:
  case 0xe:
  case 0x14:
  case 0x15:
    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));
    plVar6 = local_58;
    break;
  case 0xd:
    uVar4 = 0;
    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))
    break;
    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));
    if (iVar5 != 0) {
      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);
      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);
      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {
        if (plVar6 == (long *)0x0) goto LAB_0012b941;
        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {
          if (*plVar11 == 0) goto LAB_0012b7fc;
          iVar5 = FUN_0012bab0(param_1);
          if (iVar5 == 0) goto LAB_0012b92c;
          plVar11 = plVar11 + 1;
        }
        goto LAB_0012b936;
      }
    }
    goto LAB_0012b7fc;
  case 0xf:
    plVar11 = *(long **)(param_3 + 4);
    plVar9 = *(long **)(param_2 + 4);
    uVar4 = 0;
    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;
    goto LAB_0012b729;
  case 0x10:
    plVar11 = *(long **)(param_3 + 4);
    plVar9 = *(long **)(param_2 + 4);
    uVar4 = 0;
    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||
       ((int)plVar9[4] != (int)plVar11[4])) break;
    goto LAB_0012b729;
  case 0x11:
    plVar11 = *(long **)(param_3 + 4);
    plVar9 = *(long **)(param_2 + 4);
    uVar4 = 0;
    if ((int)plVar9[1] != (int)plVar11[1]) break;
LAB_0012b729:
    lVar10 = *plVar11;
    lVar15 = *plVar9;
LAB_0012b6fe:
    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);
    uVar4 = (uint)(iVar5 != 0);
    plVar6 = local_58;
    break;
  case 0x12:
    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));
    plVar6 = local_58;
    if (uVar4 == 0) break;
    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);
    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);
    goto LAB_0012b6fe;
  case 0x13:
    uVar4 = 0;
    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))
       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),
                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))
    break;
    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),
                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));
    if (iVar5 != 0) {
      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);
      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);
      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {
        if (plVar6 == (long *)0x0) goto LAB_0012b941;
        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {
          if (*plVar11 == 0) goto LAB_0012b7fc;
          iVar5 = FUN_0012bab0(param_1);
          if (iVar5 == 0) goto LAB_0012b92c;
          plVar11 = plVar11 + 1;
        }
        goto LAB_0012b936;
      }
    }
LAB_0012b7fc:
    uVar4 = 0;
    plVar6 = local_58;
    break;
  case 0x16:
  case 0x17:
    goto switchD_0012b468_caseD_16;
  default:
                    /* WARNING: Subroutine does not return */
    abort();
  }
LAB_0012b4be:
  *(long **)(param_1 + 0x58) = plVar6;
  return uVar4;
LAB_0012b92c:
  if (*plVar6 == 0) {
LAB_0012b936:
    if (*plVar11 == 0) {
LAB_0012b941:
      uVar4 = 1;
      plVar6 = local_58;
      goto LAB_0012b4be;
    }
  }
  goto LAB_0012b7fc;
}


MOV RAX,qword ptr [0x00000000]
UD2
PUSH R15
PUSH R14
PUSH R13
PUSH R12
MOV R12,RDI
PUSH RBP
MOV RBP,RDX
PUSH RBX
MOV RBX,RSI
SUB RSP,0x48
JMP 0x0012b393
MOV RAX,qword ptr [RBX + 0x10]
MOV RAX,qword ptr [RAX]
MOV RBX,qword ptr [RAX]
TEST RBX,RBX
JZ 0x0012b410
MOV EDX,dword ptr [RBX]
CMP EDX,0x1
JZ 0x0012b380
JMP 0x0012b3af
MOV RAX,qword ptr [RBP + 0x10]
MOV RAX,qword ptr [RAX]
MOV RBP,qword ptr [RAX]
TEST RBP,RBP
JZ 0x0012b410
MOV EAX,dword ptr [RBP]
CMP EAX,0x1
JZ 0x0012b3a0
CMP RBX,RBP
JZ 0x0012b3e8
CMP EDX,0x16
JZ 0x0012b3fc
CMP EAX,0x16
JNZ 0x0012b3cf
CMP EDX,0x17
JZ 0x0012b890
MOV RAX,qword ptr [RBP]
CMP qword ptr [RBX],RAX
JNZ 0x0012b410
CMP EDX,0x3
JZ 0x0012b46a
JBE 0x0012b421
CMP EDX,0x6
JA 0x0012b42b
ADD RSP,0x48
MOV EAX,0x1
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
CMP EAX,0x17
JZ 0x0012b8a8
MOV RAX,qword ptr [RBP]
CMP qword ptr [RBX],RAX
JZ 0x0012b478
NOP
XOR EAX,EAX
ADD RSP,0x48
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV EAX,0x1
CMP EDX,0x2
JZ 0x0012b412
MOV R13,qword ptr [R12 + 0x58]
TEST R13,R13
JNZ 0x0012b486
LEA RAX,[RSP + 0x20]
SUB EDX,0x7
MOV qword ptr [RSP + 0x28],RBX
MOV qword ptr [RSP + 0x30],RBP
MOV qword ptr [RSP + 0x20],R13
MOV qword ptr [R12 + 0x58],RAX
CMP EDX,0x10
JA 0x0010787a
LEA RCX,[0x146630]
MOVSXD RAX,dword ptr [RCX + RDX*0x4]
ADD RAX,RCX
JMP RAX
MOV EAX,dword ptr [RBP + 0x10]
CMP dword ptr [RBX + 0x10],EAX
SETZ AL
MOVZX EAX,AL
JMP 0x0012b412
MOV R13,qword ptr [R12 + 0x58]
TEST R13,R13
JZ 0x0012b8c0
MOV RAX,R13
JMP 0x0012b498
MOV RAX,qword ptr [RAX]
TEST RAX,RAX
JZ 0x0012b435
CMP RBX,qword ptr [RAX + 0x8]
JNZ 0x0012b490
CMP RBP,qword ptr [RAX + 0x10]
JNZ 0x0012b490
JMP 0x0012b3e8
MOV RDX,qword ptr [RBP + 0x10]
MOV RSI,qword ptr [RBX + 0x10]
MOV RDI,R12
CALL 0x0012bab0
MOV R13,qword ptr [RSP + 0x20]
MOV qword ptr [R12 + 0x58],R13
JMP 0x0012b412
MOV RCX,qword ptr [RBX + 0x10]
MOV RDX,qword ptr [RBP + 0x10]
TEST RCX,RCX
JZ 0x0012b912
XOR EAX,EAX
TEST RDX,RDX
JZ 0x0012b4be
MOV R15,qword ptr [RCX]
MOV RBX,qword ptr [RDX]
MOV RBP,qword ptr [RCX + 0x8]
MOV R14,qword ptr [RDX + 0x8]
MOV RDI,qword ptr [R15]
MOV RSI,qword ptr [RBX]
TEST RDI,RDI
JZ 0x0012b950
TEST RSI,RSI
JZ 0x0012b4be
MOVZX ECX,byte ptr [RDI]
CMP byte ptr [RSI],CL
JNZ 0x0012b4be
MOV RCX,qword ptr [RBP]
CMP qword ptr [R14],RCX
JZ 0x0012b554
JMP 0x0012b4be
ADD R15,0x8
MOV RDI,qword ptr [R15]
ADD RBX,0x8
ADD RBP,0x8
ADD R14,0x8
MOV RSI,qword ptr [RBX]
TEST RDI,RDI
JZ 0x0012b950
TEST RSI,RSI
JZ 0x0012b4be
MOVZX ECX,byte ptr [RSI]
CMP byte ptr [RDI],CL
JNZ 0x0012b4be
MOV RCX,qword ptr [R14]
CMP qword ptr [RBP],RCX
JNZ 0x0012b4be
CALL 0x00107450
TEST EAX,EAX
JZ 0x0012b518
XOR EAX,EAX
JMP 0x0012b4be
MOV R14,qword ptr [RBX + 0x10]
MOV RBX,qword ptr [RBP + 0x10]
TEST R14,R14
JZ 0x0012b91f
TEST RBX,RBX
JZ 0x0012b55d
MOV EAX,dword ptr [R14 + 0xc]
CMP EAX,dword ptr [R12 + 0x38]
JBE 0x0012b58e
CMP EAX,dword ptr [RBX + 0xc]
JZ 0x0012b95e
MOV RCX,qword ptr [R14]
MOV RAX,qword ptr [RBX]
TEST RCX,RCX
MOV qword ptr [RSP + 0x8],RAX
SETZ DL
TEST RAX,RAX
MOV qword ptr [RSP],RCX
SETZ AL
CMP DL,AL
JNZ 0x0012b55d
CMP qword ptr [R14 + 0x10],0x0
SETZ DL
CMP qword ptr [RBX + 0x10],0x0
SETZ AL
CMP DL,AL
JNZ 0x0012b55d
CMP qword ptr [R14 + 0x18],0x0
SETZ DL
CMP qword ptr [RBX + 0x18],0x0
SETZ AL
CMP DL,AL
JNZ 0x0012b55d
CMP qword ptr [R14 + 0x20],0x0
SETZ DL
CMP qword ptr [RBX + 0x20],0x0
SETZ AL
CMP DL,AL
JNZ 0x0012b55d
XOR R13D,R13D
TEST RCX,RCX
JNZ 0x0012b667
JMP 0x0012b971
MOV qword ptr [RSP + 0x18],R9
MOV qword ptr [RSP + 0x10],RDX
CALL 0x00107450
MOV RDX,qword ptr [RSP + 0x10]
MOV R9,qword ptr [RSP + 0x18]
TEST EAX,EAX
JNZ 0x0012b7fc
MOV RSI,R9
MOV RDI,RDX
CALL 0x00107450
TEST EAX,EAX
JNZ 0x0012b7fc
MOV RSI,qword ptr [R15 + 0x8]
XOR EDX,EDX
MOV RDI,R12
ADD R13,0x8
CALL 0x0012b0d0
MOV RSI,qword ptr [RBP + 0x8]
XOR EDX,EDX
MOV RDI,R12
MOV R15,RAX
CALL 0x0012b0d0
MOV RDX,R15
MOV RDI,R12
MOV RSI,RAX
CALL 0x0012bab0
TEST EAX,EAX
JZ 0x0012b4b9
MOV RAX,qword ptr [RSP]
MOV RBP,qword ptr [RAX + R13*0x1]
MOV RAX,qword ptr [RSP + 0x8]
MOV R15,qword ptr [RAX + R13*0x1]
TEST RBP,RBP
JZ 0x0012b968
TEST R15,R15
JZ 0x0012b7fc
MOV R9,qword ptr [R15]
MOV RDX,qword ptr [RBP]
MOVZX EAX,byte ptr [R9]
CMP byte ptr [RDX],AL
JNZ 0x0012b7fc
MOV RAX,qword ptr [R15 + 0x10]
CMP qword ptr [RBP + 0x10],RAX
JNZ 0x0012b7fc
CMP dword ptr [RBP + 0x14],0x0
MOV RDI,qword ptr [RBP + 0x18]
MOV RSI,qword ptr [R15 + 0x18]
JNZ 0x0012b5fa
CMP RDI,RSI
JZ 0x0012b61b
JMP 0x0012b7fc
MOV RDX,qword ptr [RBP + 0x10]
MOV RAX,qword ptr [RBX + 0x10]
MOV RDI,R12
MOV RDX,qword ptr [RDX]
MOV RSI,qword ptr [RAX]
CALL 0x0012bab0
TEST EAX,EAX
JZ 0x0012b4b9
MOV RAX,qword ptr [RBP + 0x10]
MOV RDX,qword ptr [RAX + 0x8]
MOV RAX,qword ptr [RBX + 0x10]
MOV RSI,qword ptr [RAX + 0x8]
MOV RDI,R12
CALL 0x0012bab0
TEST EAX,EAX
SETNZ AL
MOVZX EAX,AL
JMP 0x0012b4b9
MOV RDX,qword ptr [RBP + 0x10]
MOV RCX,qword ptr [RBX + 0x10]
XOR EAX,EAX
MOV EDI,dword ptr [RDX + 0x8]
CMP dword ptr [RCX + 0x8],EDI
JNZ 0x0012b4be
MOV RDX,qword ptr [RDX]
MOV RSI,qword ptr [RCX]
JMP 0x0012b6fe
MOV RDX,qword ptr [RBP + 0x10]
MOV RCX,qword ptr [RBX + 0x10]
XOR EAX,EAX
MOV RDI,qword ptr [RDX + 0x10]
CMP qword ptr [RCX + 0x10],RDI
JNZ 0x0012b4be
MOV RDI,qword ptr [RDX + 0x18]
CMP qword ptr [RCX + 0x18],RDI
JNZ 0x0012b4be
MOV EDI,dword ptr [RDX + 0x20]
CMP dword ptr [RCX + 0x20],EDI
JNZ 0x0012b4be
JMP 0x0012b729
MOV RDX,qword ptr [RBP + 0x10]
MOV RCX,qword ptr [RBX + 0x10]
XOR EAX,EAX
MOV RDI,qword ptr [RDX + 0x8]
CMP qword ptr [RCX + 0x8],RDI
JNZ 0x0012b4be
MOV RDI,qword ptr [RDX + 0x10]
CMP qword ptr [RCX + 0x10],RDI
JNZ 0x0012b4be
JMP 0x0012b729
MOV RDX,qword ptr [RBP + 0x10]
MOV RCX,qword ptr [RBX + 0x10]
XOR EAX,EAX
MOV EDI,dword ptr [RDX + 0x18]
CMP dword ptr [RCX + 0x18],EDI
JNZ 0x0012b4be
MOV RDX,qword ptr [RDX]
MOV RSI,qword ptr [RCX]
MOV RDI,R12
CALL 0x0012bab0
TEST EAX,EAX
JZ 0x0012b4b9
MOV RAX,qword ptr [RBP + 0x10]
MOV RDI,R12
MOV RDX,qword ptr [RAX + 0x8]
MOV RAX,qword ptr [RBX + 0x10]
MOV RSI,qword ptr [RAX + 0x8]
CALL 0x0012bab0
TEST EAX,EAX
JZ 0x0012b7fc
MOV RAX,qword ptr [RBX + 0x10]
MOV RBX,qword ptr [RAX + 0x10]
MOV RAX,qword ptr [RBP + 0x10]
MOV RBP,qword ptr [RAX + 0x10]
TEST RBX,RBX
SETZ DL
TEST RBP,RBP
SETZ AL
CMP DL,AL
JZ 0x0012ba72
MOV R13,qword ptr [RSP + 0x20]
XOR EAX,EAX
JMP 0x0012b4be
MOV RDX,qword ptr [RBP + 0x10]
MOV RCX,qword ptr [RBX + 0x10]
XOR EAX,EAX
MOV EDI,dword ptr [RDX + 0x10]
CMP dword ptr [RCX + 0x10],EDI
JNZ 0x0012b4be
MOV RDX,qword ptr [RDX]
MOV RSI,qword ptr [RCX]
MOV RDI,R12
CALL 0x0012bab0
TEST EAX,EAX
JZ 0x0012b7fc
MOV RAX,qword ptr [RBX + 0x10]
MOV RBX,qword ptr [RAX + 0x8]
MOV RAX,qword ptr [RBP + 0x10]
MOV RBP,qword ptr [RAX + 0x8]
TEST RBX,RBX
SETZ DL
TEST RBP,RBP
SETZ AL
CMP DL,AL
JNZ 0x0012b7fc
TEST RBX,RBX
JZ 0x0012b941
MOV RSI,qword ptr [RBX]
MOV RDX,qword ptr [RBP]
TEST RSI,RSI
JZ 0x0012b936
TEST RDX,RDX
JZ 0x0012b7fc
MOV RDI,R12
CALL 0x0012bab0
TEST EAX,EAX
JZ 0x0012b92c
ADD RBX,0x8
ADD RBP,0x8
JMP 0x0012b859
MOV RAX,qword ptr [RBP + 0x10]
MOV RSI,RBX
MOV RDI,R12
MOV RDX,qword ptr [RAX + 0x8]
CALL 0x0012bab0
JMP 0x0012b412
MOV RAX,qword ptr [RBX + 0x10]
MOV RDX,RBP
MOV RDI,R12
MOV RSI,qword ptr [RAX + 0x8]
CALL 0x0012bab0
JMP 0x0012b412
LEA RAX,[RSP + 0x20]
MOV qword ptr [RSP + 0x28],RBX
MOV qword ptr [RSP + 0x30],RBP
MOV qword ptr [RSP + 0x20],0x0
MOV qword ptr [R12 + 0x58],RAX
MOV RBP,qword ptr [RBP + 0x10]
MOV RBX,qword ptr [RBX + 0x10]
MOV RAX,qword ptr [RBP]
MOV RSI,qword ptr [RAX + 0x8]
MOV RAX,qword ptr [RBX]
MOV RDI,qword ptr [RAX + 0x8]
CALL 0x00107450
MOV EDX,EAX
XOR EAX,EAX
TEST EDX,EDX
JNZ 0x0012b4be
MOV RDX,qword ptr [RBP + 0x8]
MOV RSI,qword ptr [RBX + 0x8]
JMP 0x0012b6fe
XOR EAX,EAX
TEST RDX,RDX
SETZ AL
JMP 0x0012b4be
XOR EAX,EAX
TEST RBX,RBX
SETZ AL
JMP 0x0012b4be
CMP qword ptr [RBX],0x0
JNZ 0x0012b7fc
CMP qword ptr [RBP],0x0
JNZ 0x0012b7fc
MOV R13,qword ptr [RSP + 0x20]
MOV EAX,0x1
JMP 0x0012b4be
XOR EAX,EAX
CMP qword ptr [RBX],0x0
SETZ AL
JMP 0x0012b4be
MOV EAX,0x1
JMP 0x0012b4be
TEST R15,R15
JNZ 0x0012b7fc
MOV RSI,qword ptr [R14 + 0x20]
TEST RSI,RSI
JZ 0x0012b98e
MOV RDX,qword ptr [RBX + 0x20]
MOV RDI,R12
CALL 0x0012bab0
TEST EAX,EAX
JZ 0x0012b4b9
MOV R13,qword ptr [R14 + 0x10]
TEST R13,R13
JZ 0x0012b9f3
MOV R15,qword ptr [RBX + 0x10]
XOR EBP,EBP
JMP 0x0012b9dc
TEST RAX,RAX
JZ 0x0012b7fc
MOV RCX,qword ptr [RAX + 0x8]
CMP qword ptr [RSI + 0x8],RCX
JNZ 0x0012b7fc
MOV ECX,dword ptr [RAX + 0x10]
CMP dword ptr [RSI + 0x10],ECX
JNZ 0x0012b7fc
MOV RDX,qword ptr [RAX]
MOV RSI,qword ptr [RSI]
MOV RDI,R12
ADD RBP,0x8
CALL 0x0012bab0
TEST EAX,EAX
JZ 0x0012b4b9
MOV RSI,qword ptr [R13 + RBP*0x1]
MOV RAX,qword ptr [R15 + RBP*0x1]
TEST RSI,RSI
JNZ 0x0012b99f
TEST RAX,RAX
JNZ 0x0012b7fc
MOV RBP,qword ptr [R14 + 0x18]
TEST RBP,RBP
JZ 0x0012b941
MOV R13,qword ptr [RBX + 0x18]
JMP 0x0012ba58
TEST RBX,RBX
JZ 0x0012b7fc
MOV RSI,qword ptr [RBX]
MOV RDI,qword ptr [R14]
MOVZX EAX,byte ptr [RSI]
CMP byte ptr [RDI],AL
JNZ 0x0012b7fc
CALL 0x00107450
TEST EAX,EAX
JNZ 0x0012b7fc
MOV RAX,qword ptr [R14 + 0x8]
TEST RAX,RAX
SETZ CL
CMP qword ptr [RBX + 0x8],0x0
SETZ DL
CMP CL,DL
JNZ 0x0012b7fc
TEST RAX,RAX
JZ 0x0010787f
ADD RBP,0x8
ADD R13,0x8
MOV R14,qword ptr [RBP]
MOV RBX,qword ptr [R13]
TEST R14,R14
JNZ 0x0012ba06
XOR EAX,EAX
TEST RBX,RBX
SETZ AL
JMP 0x0012b4b9
TEST RBX,RBX
JZ 0x0012b941
MOV RSI,qword ptr [RBX]
MOV RDX,qword ptr [RBP]
TEST RSI,RSI
JZ 0x0012b936
TEST RDX,RDX
JZ 0x0012b7fc
MOV RDI,R12
CALL 0x0012bab0
TEST EAX,EAX
JZ 0x0012b92c
ADD RBX,0x8
ADD RBP,0x8
JMP 0x0012ba7b
(translation_unit "uint FUN_0012b360(long param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  undefined8 *puVar2;\n  code *pcVar3;\n  uint uVar4;\n  int iVar5;\n  long *plVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  long *plVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  undefined8 *puVar13;\n  char *pcVar14;\n  long lVar15;\n  char *pcVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  long *local_58;\n  uint *local_50;\n  uint *local_48;\n  \n  while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  if (param_2 == param_3) {\n    return 1;\n  }\n  local_50 = param_2;\n  local_48 = param_3;\n  if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }\n  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }\n  if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }\n  if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }\n  if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }\n  plVar6 = *(long **)(param_1 + 0x58);\n  local_58 = plVar6;\n  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }\n  *(long ***)(param_1 + 0x58) = &local_58;\n  plVar6 = local_58;\n  switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\nLAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;\n  return uVar4;\nLAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}\n\n" (function_definition "uint FUN_0012b360(long param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  undefined8 *puVar2;\n  code *pcVar3;\n  uint uVar4;\n  int iVar5;\n  long *plVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  long *plVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  undefined8 *puVar13;\n  char *pcVar14;\n  long lVar15;\n  char *pcVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  long *local_58;\n  uint *local_50;\n  uint *local_48;\n  \n  while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  if (param_2 == param_3) {\n    return 1;\n  }\n  local_50 = param_2;\n  local_48 = param_3;\n  if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }\n  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }\n  if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }\n  if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }\n  if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }\n  plVar6 = *(long **)(param_1 + 0x58);\n  local_58 = plVar6;\n  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }\n  *(long ***)(param_1 + 0x58) = &local_58;\n  plVar6 = local_58;\n  switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\nLAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;\n  return uVar4;\nLAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}" type_identifier (function_declarator "FUN_0012b360(long param_1,uint *param_2,uint *param_3)" identifier (parameter_list "(long param_1,uint *param_2,uint *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  undefined8 *puVar2;\n  code *pcVar3;\n  uint uVar4;\n  int iVar5;\n  long *plVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  long *plVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  undefined8 *puVar13;\n  char *pcVar14;\n  long lVar15;\n  char *pcVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  long *local_58;\n  uint *local_50;\n  uint *local_48;\n  \n  while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  if (param_2 == param_3) {\n    return 1;\n  }\n  local_50 = param_2;\n  local_48 = param_3;\n  if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }\n  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }\n  if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }\n  if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }\n  if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }\n  plVar6 = *(long **)(param_1 + 0x58);\n  local_58 = plVar6;\n  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }\n  *(long ***)(param_1 + 0x58) = &local_58;\n  plVar6 = local_58;\n  switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\nLAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;\n  return uVar4;\nLAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "undefined8 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "long *plVar18;" (sized_type_specifier "long" long) (pointer_declarator "*plVar18" * identifier) ;) (declaration "undefined8 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "uint *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "uint *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (while_statement "while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }" while (parenthesized_expression "(uVar4 = *param_2, uVar4 == 1)" ( (comma_expression "uVar4 = *param_2, uVar4 == 1" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) , (binary_expression "uVar4 == 1" identifier == number_literal)) )) (compound_statement "{\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }" { (expression_statement "param_2 = *(uint **)**(undefined8 **)(param_2 + 4);" (assignment_expression "param_2 = *(uint **)**(undefined8 **)(param_2 + 4)" identifier = (pointer_expression "*(uint **)**(undefined8 **)(param_2 + 4)" * (cast_expression "(uint **)**(undefined8 **)(param_2 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "**(undefined8 **)(param_2 + 4)" * (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))))))) ;) (if_statement "if (param_2 == (uint *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(param_2 == (uint *)0x0)" ( (binary_expression "param_2 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (while_statement "while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }" while (parenthesized_expression "(uVar1 = *param_3, uVar1 == 1)" ( (comma_expression "uVar1 = *param_3, uVar1 == 1" (assignment_expression "uVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) , (binary_expression "uVar1 == 1" identifier == number_literal)) )) (compound_statement "{\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }" { (expression_statement "param_3 = *(uint **)**(undefined8 **)(param_3 + 4);" (assignment_expression "param_3 = *(uint **)**(undefined8 **)(param_3 + 4)" identifier = (pointer_expression "*(uint **)**(undefined8 **)(param_3 + 4)" * (cast_expression "(uint **)**(undefined8 **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "**(undefined8 **)(param_3 + 4)" * (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))))))) ;) (if_statement "if (param_3 == (uint *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(param_3 == (uint *)0x0)" ( (binary_expression "param_3 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (param_2 == param_3) {\n    return 1;\n  }" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (expression_statement "local_48 = param_3;" (assignment_expression "local_48 = param_3" identifier = identifier) ;) (if_statement "if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }" if (parenthesized_expression "(uVar4 == 0x16)" ( (binary_expression "uVar4 == 0x16" identifier == number_literal) )) (compound_statement "{\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }" { (if_statement "if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }" if (parenthesized_expression "(uVar1 == 0x17)" ( (binary_expression "uVar1 == 0x17" identifier == number_literal) )) (compound_statement "{\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }" { (expression_statement "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);" (assignment_expression "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3)" identifier = (call_expression "FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3)" identifier (argument_list "(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3)" ( identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 4) + 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 4) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" ( (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) )))) , identifier )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }" if (parenthesized_expression "(*(long *)param_2 != *(long *)param_3)" ( (binary_expression "*(long *)param_2 != *(long *)param_3" (pointer_expression "*(long *)param_2" * (cast_expression "(long *)param_2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(long *)param_3" * (cast_expression "(long *)param_3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "plVar6 = *(long **)(param_1 + 0x58);" (assignment_expression "plVar6 = *(long **)(param_1 + 0x58)" identifier = (pointer_expression "*(long **)(param_1 + 0x58)" * (cast_expression "(long **)(param_1 + 0x58)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_58 = plVar6;" (assignment_expression "local_58 = plVar6" identifier = identifier) ;) (if_statement "if (plVar6 != (long *)0x0) goto LAB_0012b498;" if (parenthesized_expression "(plVar6 != (long *)0x0)" ( (binary_expression "plVar6 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b498;" goto statement_identifier ;)) (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 "*(long ***)(param_1 + 0x58) = &local_58;" (assignment_expression "*(long ***)(param_1 + 0x58) = &local_58" (pointer_expression "*(long ***)(param_1 + 0x58)" * (cast_expression "(long ***)(param_1 + 0x58)" ( (type_descriptor "long ***" (sized_type_specifier "long" long) (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = (pointer_expression "&local_58" & identifier)) ;) (labeled_statement "switchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);" statement_identifier : (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;)) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));" (assignment_expression "iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8))" identifier = (call_expression "strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8))" identifier (argument_list "(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8))" ( (pointer_expression "*(char **)(*plVar9 + 8)" * (cast_expression "(char **)(*plVar9 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar9 + 8)" ( (binary_expression "*plVar9 + 8" (pointer_expression "*plVar9" * identifier) + number_literal) )))) , (pointer_expression "*(char **)(*plVar11 + 8)" * (cast_expression "(char **)(*plVar11 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 8)" ( (binary_expression "*plVar11 + 8" (pointer_expression "*plVar11" * identifier) + number_literal) )))) )))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar5 != 0) goto LAB_0012b4be;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b4be;" goto statement_identifier ;)) (expression_statement "lVar10 = plVar11[1];" (assignment_expression "lVar10 = plVar11[1]" identifier = (subscript_expression "plVar11[1]" identifier [ number_literal ])) ;) (expression_statement "lVar15 = plVar9[1];" (assignment_expression "lVar15 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0012b6fe;" goto statement_identifier ;) })) (if_statement "if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }" if (parenthesized_expression "((uVar1 == 0x16) && (uVar4 == 0x17))" ( (binary_expression "(uVar1 == 0x16) && (uVar4 == 0x17)" (parenthesized_expression "(uVar1 == 0x16)" ( (binary_expression "uVar1 == 0x16" identifier == number_literal) )) && (parenthesized_expression "(uVar4 == 0x17)" ( (binary_expression "uVar4 == 0x17" identifier == number_literal) ))) )) (compound_statement "{\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }" { (expression_statement "uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));" (assignment_expression "uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8))" identifier = (call_expression "FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8))" identifier (argument_list "(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_3 + 4) + 8)" * (cast_expression "(undefined8 *)(*(long *)(param_3 + 4) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" ( (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) )))) )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }" if (parenthesized_expression "(*(long *)param_2 != *(long *)param_3)" ( (binary_expression "*(long *)param_2 != *(long *)param_3" (pointer_expression "*(long *)param_2" * (cast_expression "(long *)param_2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(long *)param_3" * (cast_expression "(long *)param_3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }" if (parenthesized_expression "(uVar4 == 3)" ( (binary_expression "uVar4 == 3" identifier == number_literal) )) (compound_statement "{\n    return (uint)(param_2[4] == param_3[4]);\n  }" { (return_statement "return (uint)(param_2[4] == param_3[4]);" return (call_expression "(uint)(param_2[4] == param_3[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2[4] == param_3[4])" ( (binary_expression "param_2[4] == param_3[4]" (subscript_expression "param_2[4]" identifier [ number_literal ]) == (subscript_expression "param_3[4]" identifier [ number_literal ])) ))) ;) })) (if_statement "if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }" if (parenthesized_expression "(uVar4 < 4)" ( (binary_expression "uVar4 < 4" identifier < number_literal) )) (compound_statement "{\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }" { (if_statement "if (uVar4 == 2) {\n      return 1;\n    }" if (parenthesized_expression "(uVar4 == 2)" ( (binary_expression "uVar4 == 2" identifier == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (uVar4 < 7) {\n    return 1;\n  }" else (if_statement "if (uVar4 < 7) {\n    return 1;\n  }" if (parenthesized_expression "(uVar4 < 7)" ( (binary_expression "uVar4 < 7" identifier < number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })))) (expression_statement "plVar6 = *(long **)(param_1 + 0x58);" (assignment_expression "plVar6 = *(long **)(param_1 + 0x58)" identifier = (pointer_expression "*(long **)(param_1 + 0x58)" * (cast_expression "(long **)(param_1 + 0x58)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_58 = plVar6;" (assignment_expression "local_58 = plVar6" identifier = identifier) ;) (for_statement "for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }" for ( ; (binary_expression "plVar6 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "plVar6 = (long *)*plVar6" identifier = (cast_expression "(long *)*plVar6" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar6" * identifier))) ) (compound_statement "{\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }" { (labeled_statement "LAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }" statement_identifier : (if_statement "if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }" if (parenthesized_expression "((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2]))" ( (binary_expression "(param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])" (parenthesized_expression "(param_2 == (uint *)plVar6[1])" ( (binary_expression "param_2 == (uint *)plVar6[1]" identifier == (cast_expression "(uint *)plVar6[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar6[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(param_3 == (uint *)plVar6[2])" ( (binary_expression "param_3 == (uint *)plVar6[2]" identifier == (cast_expression "(uint *)plVar6[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar6[2]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) }))) })) (expression_statement "*(long ***)(param_1 + 0x58) = &local_58;" (assignment_expression "*(long ***)(param_1 + 0x58) = &local_58" (pointer_expression "*(long ***)(param_1 + 0x58)" * (cast_expression "(long ***)(param_1 + 0x58)" ( (type_descriptor "long ***" (sized_type_specifier "long" long) (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = (pointer_expression "&local_58" & identifier)) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (switch_statement "switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" switch (parenthesized_expression "(uVar4)" ( identifier )) (compound_statement "{\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 9:" case number_literal :) (case_statement "case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;" case number_literal : (expression_statement "plVar11 = *(long **)(param_2 + 4);" (assignment_expression "plVar11 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar9 = *(long **)(param_3 + 4);" (assignment_expression "plVar9 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (if_statement "if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }" if (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }" { (expression_statement "uVar4 = (uint)(plVar9 == (long *)0x0);" (assignment_expression "uVar4 = (uint)(plVar9 == (long *)0x0)" identifier = (call_expression "(uint)(plVar9 == (long *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(plVar9 == (long *)0x0)" ( (binary_expression "plVar9 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) (break_statement "break;" break ;) })) (if_statement "if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }" if (parenthesized_expression "(plVar9 != (long *)0x0)" ( (binary_expression "plVar9 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }" { (if_statement "if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }" if (parenthesized_expression "((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc)))" ( (binary_expression "(*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))" (parenthesized_expression "(*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc))" ( (binary_expression "*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)" (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) < (pointer_expression "*(uint *)((long)plVar11 + 0xc)" * (cast_expression "(uint *)((long)plVar11 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0xc)" ( (binary_expression "(long)plVar11 + 0xc" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) && (parenthesized_expression "(*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))" ( (binary_expression "*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc)" (pointer_expression "*(uint *)((long)plVar11 + 0xc)" * (cast_expression "(uint *)((long)plVar11 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0xc)" ( (binary_expression "(long)plVar11 + 0xc" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (pointer_expression "*(uint *)((long)plVar9 + 0xc)" * (cast_expression "(uint *)((long)plVar9 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar9 + 0xc)" ( (binary_expression "(long)plVar9 + 0xc" (cast_expression "(long)plVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ))) )) (compound_statement "{\n        uVar4 = 1;\n        break;\n      }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (break_statement "break;" break ;) })) (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (expression_statement "lVar15 = *plVar9;" (assignment_expression "lVar15 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (if_statement "if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }" if (parenthesized_expression "((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0)))))" ( (binary_expression "(((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))" (parenthesized_expression "(((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0)))" ( (binary_expression "((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))" (parenthesized_expression "((lVar10 == 0) == (lVar15 == 0))" ( (binary_expression "(lVar10 == 0) == (lVar15 == 0)" (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) == (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) ))) )) && (parenthesized_expression "((plVar11[2] == 0) == (plVar9[2] == 0))" ( (binary_expression "(plVar11[2] == 0) == (plVar9[2] == 0)" (parenthesized_expression "(plVar11[2] == 0)" ( (binary_expression "plVar11[2] == 0" (subscript_expression "plVar11[2]" identifier [ number_literal ]) == number_literal) )) == (parenthesized_expression "(plVar9[2] == 0)" ( (binary_expression "plVar9[2] == 0" (subscript_expression "plVar9[2]" identifier [ number_literal ]) == number_literal) ))) ))) )) && (parenthesized_expression "(((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))" ( (parenthesized_expression "((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0)))" ( (binary_expression "(plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))" (binary_expression "(plVar11[3] == 0) == (plVar9[3] == 0)" (parenthesized_expression "(plVar11[3] == 0)" ( (binary_expression "plVar11[3] == 0" (subscript_expression "plVar11[3]" identifier [ number_literal ]) == number_literal) )) == (parenthesized_expression "(plVar9[3] == 0)" ( (binary_expression "plVar9[3] == 0" (subscript_expression "plVar9[3]" identifier [ number_literal ]) == number_literal) ))) && (parenthesized_expression "((plVar11[4] == 0) == (plVar9[4] == 0))" ( (binary_expression "(plVar11[4] == 0) == (plVar9[4] == 0)" (parenthesized_expression "(plVar11[4] == 0)" ( (binary_expression "plVar11[4] == 0" (subscript_expression "plVar11[4]" identifier [ number_literal ]) == number_literal) )) == (parenthesized_expression "(plVar9[4] == 0)" ( (binary_expression "plVar9[4] == 0" (subscript_expression "plVar9[4]" identifier [ number_literal ]) == number_literal) ))) ))) )) ))) )) (compound_statement "{\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (if_statement "if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" { (do_statement "do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);" do (compound_statement "{\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          }" { (expression_statement "puVar13 = *(undefined8 **)(lVar10 + lVar12);" (assignment_expression "puVar13 = *(undefined8 **)(lVar10 + lVar12)" identifier = (pointer_expression "*(undefined8 **)(lVar10 + lVar12)" * (cast_expression "(undefined8 **)(lVar10 + lVar12)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + lVar12)" ( (binary_expression "lVar10 + lVar12" identifier + identifier) ))))) ;) (expression_statement "puVar17 = *(undefined8 **)(lVar15 + lVar12);" (assignment_expression "puVar17 = *(undefined8 **)(lVar15 + lVar12)" identifier = (pointer_expression "*(undefined8 **)(lVar15 + lVar12)" * (cast_expression "(undefined8 **)(lVar15 + lVar12)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar15 + lVar12)" ( (binary_expression "lVar15 + lVar12" identifier + identifier) ))))) ;) (if_statement "if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }" if (parenthesized_expression "(puVar13 == (undefined8 *)0x0)" ( (binary_expression "puVar13 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }" { (if_statement "if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" ( (binary_expression "puVar17 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (goto_statement "goto LAB_0012b971;" goto statement_identifier ;) })) (if_statement "if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar17 == (undefined8 *)0x0)" ( (binary_expression "puVar17 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "pcVar16 = (char *)*puVar17;" (assignment_expression "pcVar16 = (char *)*puVar17" identifier = (cast_expression "(char *)*puVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "pcVar14 = (char *)*puVar13;" (assignment_expression "pcVar14 = (char *)*puVar13" identifier = (cast_expression "(char *)*puVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (if_statement "if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;" if (parenthesized_expression "((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2]))" ( (binary_expression "(*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])" (parenthesized_expression "(*pcVar14 != *pcVar16)" ( (binary_expression "*pcVar14 != *pcVar16" (pointer_expression "*pcVar14" * identifier) != (pointer_expression "*pcVar16" * identifier)) )) || (parenthesized_expression "(puVar13[2] != puVar17[2])" ( (binary_expression "puVar13[2] != puVar17[2]" (subscript_expression "puVar13[2]" identifier [ number_literal ]) != (subscript_expression "puVar17[2]" identifier [ number_literal ])) ))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (if_statement "if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }" if (parenthesized_expression "(*(int *)((long)puVar13 + 0x14) == 0)" ( (binary_expression "*(int *)((long)puVar13 + 0x14) == 0" (pointer_expression "*(int *)((long)puVar13 + 0x14)" * (cast_expression "(int *)((long)puVar13 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar13 + 0x14)" ( (binary_expression "(long)puVar13 + 0x14" (cast_expression "(long)puVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }" { (if_statement "if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;" if (parenthesized_expression "((char *)puVar13[3] != (char *)puVar17[3])" ( (binary_expression "(char *)puVar13[3] != (char *)puVar17[3]" (cast_expression "(char *)puVar13[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[3]" identifier [ number_literal ])) != (cast_expression "(char *)puVar17[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) }) (else_clause "else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }" else (compound_statement "{\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }" { (expression_statement "iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);" (assignment_expression "iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3])" identifier = (call_expression "strcmp((char *)puVar13[3],(char *)puVar17[3])" identifier (argument_list "((char *)puVar13[3],(char *)puVar17[3])" ( (cast_expression "(char *)puVar13[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[3]" identifier [ number_literal ])) , (cast_expression "(char *)puVar17[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[3]" identifier [ number_literal ])) )))) ;) (if_statement "if (iVar5 != 0) goto LAB_0012b7fc;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) }))) (expression_statement "iVar5 = strcmp(pcVar14,pcVar16);" (assignment_expression "iVar5 = strcmp(pcVar14,pcVar16)" identifier = (call_expression "strcmp(pcVar14,pcVar16)" identifier (argument_list "(pcVar14,pcVar16)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 != 0) goto LAB_0012b7fc;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "lVar12 = lVar12 + 8;" (assignment_expression "lVar12 = lVar12 + 8" identifier = (binary_expression "lVar12 + 8" identifier + number_literal)) ;) (expression_statement "uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);" (assignment_expression "uVar7 = FUN_0012b0d0(param_1,puVar17[1],0)" identifier = (call_expression "FUN_0012b0d0(param_1,puVar17[1],0)" identifier (argument_list "(param_1,puVar17[1],0)" ( identifier , (subscript_expression "puVar17[1]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);" (assignment_expression "uVar8 = FUN_0012b0d0(param_1,puVar13[1],0)" identifier = (call_expression "FUN_0012b0d0(param_1,puVar13[1],0)" identifier (argument_list "(param_1,puVar13[1],0)" ( identifier , (subscript_expression "puVar13[1]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);" (assignment_expression "uVar4 = FUN_0012bab0(param_1,uVar8,uVar7)" identifier = (call_expression "FUN_0012bab0(param_1,uVar8,uVar7)" identifier (argument_list "(param_1,uVar8,uVar7)" ( identifier , identifier , identifier )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) (break_statement "break;" break ;) })) (labeled_statement "LAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;" statement_identifier : (if_statement "if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;" if (parenthesized_expression "((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))" ( (binary_expression "(plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0)" (parenthesized_expression "(plVar11[4] != 0)" ( (binary_expression "plVar11[4] != 0" (subscript_expression "plVar11[4]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0)" ( (comma_expression "uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0" (assignment_expression "uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4])" identifier = (call_expression "FUN_0012bab0(param_1,plVar11[4],plVar9[4])" identifier (argument_list "(param_1,plVar11[4],plVar9[4])" ( identifier , (subscript_expression "plVar11[4]" identifier [ number_literal ]) , (subscript_expression "plVar9[4]" identifier [ number_literal ]) )))) , (comma_expression "plVar6 = local_58, uVar4 == 0" (assignment_expression "plVar6 = local_58" identifier = identifier) , (binary_expression "uVar4 == 0" identifier == number_literal))) ))) )) (break_statement "break;" break ;))) (expression_statement "lVar10 = plVar11[2];" (assignment_expression "lVar10 = plVar11[2]" identifier = (subscript_expression "plVar11[2]" identifier [ number_literal ])) ;) (if_statement "if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" { (expression_statement "lVar15 = plVar9[2];" (assignment_expression "lVar15 = plVar9[2]" identifier = (subscript_expression "plVar9[2]" identifier [ number_literal ])) ;) (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);" do (compound_statement "{\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          }" { (expression_statement "puVar13 = *(undefined8 **)(lVar10 + lVar12);" (assignment_expression "puVar13 = *(undefined8 **)(lVar10 + lVar12)" identifier = (pointer_expression "*(undefined8 **)(lVar10 + lVar12)" * (cast_expression "(undefined8 **)(lVar10 + lVar12)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + lVar12)" ( (binary_expression "lVar10 + lVar12" identifier + identifier) ))))) ;) (expression_statement "puVar17 = *(undefined8 **)(lVar15 + lVar12);" (assignment_expression "puVar17 = *(undefined8 **)(lVar15 + lVar12)" identifier = (pointer_expression "*(undefined8 **)(lVar15 + lVar12)" * (cast_expression "(undefined8 **)(lVar15 + lVar12)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar15 + lVar12)" ( (binary_expression "lVar15 + lVar12" identifier + identifier) ))))) ;) (if_statement "if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }" if (parenthesized_expression "(puVar13 == (undefined8 *)0x0)" ( (binary_expression "puVar13 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }" { (if_statement "if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" ( (binary_expression "puVar17 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (goto_statement "goto LAB_0012b9f3;" goto statement_identifier ;) })) (if_statement "if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;" if (parenthesized_expression "(((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2)))" ( (binary_expression "((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))" (parenthesized_expression "((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1]))" ( (binary_expression "(puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])" (parenthesized_expression "(puVar17 == (undefined8 *)0x0)" ( (binary_expression "puVar17 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar13[1] != puVar17[1])" ( (binary_expression "puVar13[1] != puVar17[1]" (subscript_expression "puVar13[1]" identifier [ number_literal ]) != (subscript_expression "puVar17[1]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "(*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))" ( (binary_expression "*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2)" (pointer_expression "*(int *)(puVar13 + 2)" * (cast_expression "(int *)(puVar13 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 2)" ( (binary_expression "puVar13 + 2" identifier + number_literal) )))) != (pointer_expression "*(int *)(puVar17 + 2)" * (cast_expression "(int *)(puVar17 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) ))))) ))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "lVar12 = lVar12 + 8;" (assignment_expression "lVar12 = lVar12 + 8" identifier = (binary_expression "lVar12 + 8" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);" (assignment_expression "uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17)" identifier = (call_expression "FUN_0012bab0(param_1,*puVar13,*puVar17)" identifier (argument_list "(param_1,*puVar13,*puVar17)" ( identifier , (pointer_expression "*puVar13" * identifier) , (pointer_expression "*puVar17" * identifier) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) (break_statement "break;" break ;) })) (labeled_statement "LAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];" statement_identifier : (expression_statement "puVar13 = (undefined8 *)plVar11[3];" (assignment_expression "puVar13 = (undefined8 *)plVar11[3]" identifier = (cast_expression "(undefined8 *)plVar11[3]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[3]" identifier [ number_literal ]))) ;)) (if_statement "if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }" if (parenthesized_expression "(puVar13 != (undefined8 *)0x0)" ( (binary_expression "puVar13 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }" { (expression_statement "puVar17 = (undefined8 *)plVar9[3];" (assignment_expression "puVar17 = (undefined8 *)plVar9[3]" identifier = (cast_expression "(undefined8 *)plVar9[3]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar9[3]" identifier [ number_literal ]))) ;) (while_statement "while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }" { (expression_statement "puVar19 = (undefined8 *)*puVar13;" (assignment_expression "puVar19 = (undefined8 *)*puVar13" identifier = (cast_expression "(undefined8 *)*puVar13" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (expression_statement "puVar2 = (undefined8 *)*puVar17;" (assignment_expression "puVar2 = (undefined8 *)*puVar17" identifier = (cast_expression "(undefined8 *)*puVar17" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (if_statement "if (puVar19 == (undefined8 *)0x0) break;" if (parenthesized_expression "(puVar19 == (undefined8 *)0x0)" ( (binary_expression "puVar19 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (if_statement "if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;" if (parenthesized_expression "(((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0)))" ( (binary_expression "((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))" (parenthesized_expression "((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0))" ( (binary_expression "(*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)" (parenthesized_expression "(*(char *)*puVar19 != *(char *)*puVar2)" ( (binary_expression "*(char *)*puVar19 != *(char *)*puVar2" (pointer_expression "*(char *)*puVar19" * (cast_expression "(char *)*puVar19" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) != (pointer_expression "*(char *)*puVar2" * (cast_expression "(char *)*puVar2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)))) )) || (parenthesized_expression "(iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)" ( (comma_expression "iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0" (assignment_expression "iVar5 = strcmp((char *)*puVar19,(char *)*puVar2)" identifier = (call_expression "strcmp((char *)*puVar19,(char *)*puVar2)" identifier (argument_list "((char *)*puVar19,(char *)*puVar2)" ( (cast_expression "(char *)*puVar19" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier)) , (cast_expression "(char *)*puVar2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "((puVar19[1] == 0) != (puVar2[1] == 0))" ( (binary_expression "(puVar19[1] == 0) != (puVar2[1] == 0)" (parenthesized_expression "(puVar19[1] == 0)" ( (binary_expression "puVar19[1] == 0" (subscript_expression "puVar19[1]" identifier [ number_literal ]) == number_literal) )) != (parenthesized_expression "(puVar2[1] == 0)" ( (binary_expression "puVar2[1] == 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) == number_literal) ))) ))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (if_statement "if (puVar19[1] == 0) {\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }" if (parenthesized_expression "(puVar19[1] == 0)" ( (binary_expression "puVar19[1] == 0" (subscript_expression "puVar19[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    /* WARNING: Does not return */\n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }" { comment (expression_statement "pcVar3 = (code *)invalidInstructionException();" (assignment_expression "pcVar3 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = (uint)(puVar2 == (undefined8 *)0x0);" (assignment_expression "uVar4 = (uint)(puVar2 == (undefined8 *)0x0)" identifier = (call_expression "(uint)(puVar2 == (undefined8 *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_0012b941;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0012b55d:\n    uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (break_statement "break;" break ;)) (case_statement "case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;" case number_literal : (expression_statement "puVar13 = *(undefined8 **)(param_2 + 4);" (assignment_expression "puVar13 = *(undefined8 **)(param_2 + 4)" identifier = (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar17 = *(undefined8 **)(param_3 + 4);" (assignment_expression "puVar17 = *(undefined8 **)(param_3 + 4)" identifier = (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (if_statement "if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }" if (parenthesized_expression "(puVar13 == (undefined8 *)0x0)" ( (binary_expression "puVar13 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }" { (expression_statement "uVar4 = (uint)(puVar17 == (undefined8 *)0x0);" (assignment_expression "uVar4 = (uint)(puVar17 == (undefined8 *)0x0)" identifier = (call_expression "(uint)(puVar17 == (undefined8 *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar17 == (undefined8 *)0x0)" ( (binary_expression "puVar17 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) }) (else_clause "else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }" else (compound_statement "{\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }" if (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" ( (binary_expression "puVar17 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }" { (expression_statement "puVar19 = (undefined8 *)*puVar13;" (assignment_expression "puVar19 = (undefined8 *)*puVar13" identifier = (cast_expression "(undefined8 *)*puVar13" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (expression_statement "plVar11 = (long *)*puVar17;" (assignment_expression "plVar11 = (long *)*puVar17" identifier = (cast_expression "(long *)*puVar17" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "plVar9 = (long *)puVar13[1];" (assignment_expression "plVar9 = (long *)puVar13[1]" identifier = (cast_expression "(long *)puVar13[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[1]" identifier [ number_literal ]))) ;) (expression_statement "plVar18 = (long *)puVar17[1];" (assignment_expression "plVar18 = (long *)puVar17[1]" identifier = (cast_expression "(long *)puVar17[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar16 = (char *)*puVar19;" (assignment_expression "pcVar16 = (char *)*puVar19" identifier = (cast_expression "(char *)*puVar19" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "pcVar14 = (char *)*plVar11;" (assignment_expression "pcVar14 = (char *)*plVar11" identifier = (cast_expression "(char *)*plVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" if (parenthesized_expression "(pcVar16 == (char *)0x0)" ( (binary_expression "pcVar16 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }" { (labeled_statement "LAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);" statement_identifier : (expression_statement "uVar4 = (uint)(*plVar11 == 0);" (assignment_expression "uVar4 = (uint)(*plVar11 == 0)" identifier = (call_expression "(uint)(*plVar11 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )))) ;)) }) (else_clause "else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" else (if_statement "if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" if (parenthesized_expression "(((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9))" ( (binary_expression "((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)" (parenthesized_expression "((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16))" ( (binary_expression "(pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)" (parenthesized_expression "(pcVar14 != (char *)0x0)" ( (binary_expression "pcVar14 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar14 == *pcVar16)" ( (binary_expression "*pcVar14 == *pcVar16" (pointer_expression "*pcVar14" * identifier) == (pointer_expression "*pcVar16" * identifier)) ))) )) && (parenthesized_expression "(*plVar18 == *plVar9)" ( (binary_expression "*plVar18 == *plVar9" (pointer_expression "*plVar18" * identifier) == (pointer_expression "*plVar9" * identifier)) ))) )) (compound_statement "{\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" { (do_statement "do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));" do (compound_statement "{\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          }" { (expression_statement "iVar5 = strcmp(pcVar16,pcVar14);" (assignment_expression "iVar5 = strcmp(pcVar16,pcVar14)" identifier = (call_expression "strcmp(pcVar16,pcVar14)" identifier (argument_list "(pcVar16,pcVar14)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 != 0) goto LAB_0012b55d;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b55d;" goto statement_identifier ;)) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "pcVar16 = (char *)*puVar19;" (assignment_expression "pcVar16 = (char *)*puVar19" identifier = (cast_expression "(char *)*puVar19" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) (expression_statement "plVar9 = plVar9 + 1;" (assignment_expression "plVar9 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (expression_statement "plVar18 = plVar18 + 1;" (assignment_expression "plVar18 = plVar18 + 1" identifier = (binary_expression "plVar18 + 1" identifier + number_literal)) ;) (expression_statement "pcVar14 = (char *)*plVar11;" (assignment_expression "pcVar14 = (char *)*plVar11" identifier = (cast_expression "(char *)*plVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (pcVar16 == (char *)0x0) goto LAB_0012b950;" if (parenthesized_expression "(pcVar16 == (char *)0x0)" ( (binary_expression "pcVar16 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b950;" goto statement_identifier ;)) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18))" ( (binary_expression "((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18)" (parenthesized_expression "((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14))" ( (binary_expression "(pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)" (parenthesized_expression "(pcVar14 != (char *)0x0)" ( (binary_expression "pcVar14 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar16 == *pcVar14)" ( (binary_expression "*pcVar16 == *pcVar14" (pointer_expression "*pcVar16" * identifier) == (pointer_expression "*pcVar14" * identifier)) ))) )) && (parenthesized_expression "(*plVar9 == *plVar18)" ( (binary_expression "*plVar9 == *plVar18" (pointer_expression "*plVar9" * identifier) == (pointer_expression "*plVar18" * identifier)) ))) )) ;) })))) })) }))) (break_statement "break;" break ;)) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;" case number_literal : (expression_statement "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));" (assignment_expression "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4))" identifier = (call_expression "FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4))" identifier (argument_list "(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4))" ( identifier , (pointer_expression "*(undefined8 *)(param_2 + 4)" * (cast_expression "(undefined8 *)(param_2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_3 + 4)" * (cast_expression "(undefined8 *)(param_3 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;" case number_literal : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;" if (parenthesized_expression "(*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))" ( (binary_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2)" (pointer_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 2)" * (cast_expression "(int *)(*(undefined8 **)(param_2 + 4) + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(param_2 + 4) + 2)" ( (binary_expression "*(undefined8 **)(param_2 + 4) + 2" (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) )))) != (pointer_expression "*(int *)(*(undefined8 **)(param_3 + 4) + 2)" * (cast_expression "(int *)(*(undefined8 **)(param_3 + 4) + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(param_3 + 4) + 2)" ( (binary_expression "*(undefined8 **)(param_3 + 4) + 2" (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));" (assignment_expression "iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" identifier = (call_expression "FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" identifier (argument_list "(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" ( identifier , (pointer_expression "**(undefined8 **)(param_2 + 4)" * (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) , (pointer_expression "**(undefined8 **)(param_3 + 4)" * (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) )))) ;) (if_statement "if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" { (expression_statement "plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);" (assignment_expression "plVar6 = *(long **)(*(long *)(param_2 + 4) + 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_2 + 4) + 8)" * (cast_expression "(long **)(*(long *)(param_2 + 4) + 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" ( (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);" (assignment_expression "plVar11 = *(long **)(*(long *)(param_3 + 4) + 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_3 + 4) + 8)" * (cast_expression "(long **)(*(long *)(param_3 + 4) + 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" ( (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" if (parenthesized_expression "((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0))" ( (binary_expression "(plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)" (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) == (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" { (if_statement "if (plVar6 == (long *)0x0) goto LAB_0012b941;" if (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b941;" goto statement_identifier ;)) (for_statement "for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" for ( ; (binary_expression "*plVar6 != 0" (pointer_expression "*plVar6" * identifier) != number_literal) ; (assignment_expression "plVar6 = plVar6 + 1" identifier = (binary_expression "plVar6 + 1" identifier + number_literal)) ) (compound_statement "{\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" { (if_statement "if (*plVar11 == 0) goto LAB_0012b7fc;" if (parenthesized_expression "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "iVar5 = FUN_0012bab0(param_1);" (assignment_expression "iVar5 = FUN_0012bab0(param_1)" identifier = (call_expression "FUN_0012bab0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0012b92c;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012b92c;" goto statement_identifier ;)) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_0012b936;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (case_statement "case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;" case number_literal : (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;" if (parenthesized_expression "((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2]))" ( (binary_expression "(plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])" (parenthesized_expression "(plVar9[1] != plVar11[1])" ( (binary_expression "plVar9[1] != plVar11[1]" (subscript_expression "plVar9[1]" identifier [ number_literal ]) != (subscript_expression "plVar11[1]" identifier [ number_literal ])) )) || (parenthesized_expression "(plVar9[2] != plVar11[2])" ( (binary_expression "plVar9[2] != plVar11[2]" (subscript_expression "plVar9[2]" identifier [ number_literal ]) != (subscript_expression "plVar11[2]" identifier [ number_literal ])) ))) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0012b729;" goto statement_identifier ;)) (case_statement "case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;" case number_literal : (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;" if (parenthesized_expression "(((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4]))" ( (binary_expression "((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])" (parenthesized_expression "((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3]))" ( (binary_expression "(plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])" (parenthesized_expression "(plVar9[2] != plVar11[2])" ( (binary_expression "plVar9[2] != plVar11[2]" (subscript_expression "plVar9[2]" identifier [ number_literal ]) != (subscript_expression "plVar11[2]" identifier [ number_literal ])) )) || (parenthesized_expression "(plVar9[3] != plVar11[3])" ( (binary_expression "plVar9[3] != plVar11[3]" (subscript_expression "plVar9[3]" identifier [ number_literal ]) != (subscript_expression "plVar11[3]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "((int)plVar9[4] != (int)plVar11[4])" ( (binary_expression "(int)plVar9[4] != (int)plVar11[4]" (cast_expression "(int)plVar9[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar9[4]" identifier [ number_literal ])) != (cast_expression "(int)plVar11[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar11[4]" identifier [ number_literal ]))) ))) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0012b729;" goto statement_identifier ;)) (case_statement "case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;" case number_literal : (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if ((int)plVar9[1] != (int)plVar11[1]) break;" if (parenthesized_expression "((int)plVar9[1] != (int)plVar11[1])" ( (binary_expression "(int)plVar9[1] != (int)plVar11[1]" (cast_expression "(int)plVar9[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar9[1]" identifier [ number_literal ])) != (cast_expression "(int)plVar11[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar11[1]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0012b729:\n    lVar10 = *plVar11;" statement_identifier : (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;)) (expression_statement "lVar15 = *plVar9;" (assignment_expression "lVar15 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (labeled_statement "LAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);" statement_identifier : (expression_statement "iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);" (assignment_expression "iVar5 = FUN_0012bab0(param_1,lVar15,lVar10)" identifier = (call_expression "FUN_0012bab0(param_1,lVar15,lVar10)" identifier (argument_list "(param_1,lVar15,lVar10)" ( identifier , identifier , identifier )))) ;)) (expression_statement "uVar4 = (uint)(iVar5 != 0);" (assignment_expression "uVar4 = (uint)(iVar5 != 0)" identifier = (call_expression "(uint)(iVar5 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;" case number_literal : (expression_statement "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));" (assignment_expression "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" identifier = (call_expression "FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" identifier (argument_list "(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" ( identifier , (pointer_expression "**(undefined8 **)(param_2 + 4)" * (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) , (pointer_expression "**(undefined8 **)(param_3 + 4)" * (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);" (assignment_expression "lVar10 = *(long *)(*(long *)(param_3 + 4) + 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_3 + 4) + 8)" * (cast_expression "(long *)(*(long *)(param_3 + 4) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" ( (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);" (assignment_expression "lVar15 = *(long *)(*(long *)(param_2 + 4) + 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_2 + 4) + 8)" * (cast_expression "(long *)(*(long *)(param_2 + 4) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" ( (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_0012b6fe;" goto statement_identifier ;)) (case_statement "case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;" case number_literal : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;" if (parenthesized_expression "((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))" ( (binary_expression "(*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0)" (parenthesized_expression "(*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))" ( (binary_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3)" (pointer_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 3)" * (cast_expression "(int *)(*(undefined8 **)(param_2 + 4) + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(param_2 + 4) + 3)" ( (binary_expression "*(undefined8 **)(param_2 + 4) + 3" (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) )))) != (pointer_expression "*(int *)(*(undefined8 **)(param_3 + 4) + 3)" * (cast_expression "(int *)(*(undefined8 **)(param_3 + 4) + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(param_3 + 4) + 3)" ( (binary_expression "*(undefined8 **)(param_3 + 4) + 3" (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) )) || (parenthesized_expression "(uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0)" ( (comma_expression "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0" (assignment_expression "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4))" identifier = (call_expression "FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4))" identifier (argument_list "(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4))" ( identifier , (pointer_expression "**(undefined8 **)(param_2 + 4)" * (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) , (pointer_expression "**(undefined8 **)(param_3 + 4)" * (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) )))) , (comma_expression "plVar6 = local_58, uVar4 == 0" (assignment_expression "plVar6 = local_58" identifier = identifier) , (binary_expression "uVar4 == 0" identifier == number_literal))) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));" (assignment_expression "iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8))" identifier = (call_expression "FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8))" identifier (argument_list "(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8))" ( identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 4) + 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 4) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" ( (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) )))) , (pointer_expression "*(undefined8 *)(*(long *)(param_3 + 4) + 8)" * (cast_expression "(undefined8 *)(*(long *)(param_3 + 4) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" ( (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) )))) )))) ;) (if_statement "if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" { (expression_statement "plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);" (assignment_expression "plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10)" identifier = (pointer_expression "*(long **)(*(long *)(param_2 + 4) + 0x10)" * (cast_expression "(long **)(*(long *)(param_2 + 4) + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 0x10)" ( (binary_expression "*(long *)(param_2 + 4) + 0x10" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);" (assignment_expression "plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10)" identifier = (pointer_expression "*(long **)(*(long *)(param_3 + 4) + 0x10)" * (cast_expression "(long **)(*(long *)(param_3 + 4) + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 0x10)" ( (binary_expression "*(long *)(param_3 + 4) + 0x10" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" if (parenthesized_expression "((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0))" ( (binary_expression "(plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)" (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) == (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" { (if_statement "if (plVar6 == (long *)0x0) goto LAB_0012b941;" if (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b941;" goto statement_identifier ;)) (for_statement "for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" for ( ; (binary_expression "*plVar6 != 0" (pointer_expression "*plVar6" * identifier) != number_literal) ; (assignment_expression "plVar6 = plVar6 + 1" identifier = (binary_expression "plVar6 + 1" identifier + number_literal)) ) (compound_statement "{\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" { (if_statement "if (*plVar11 == 0) goto LAB_0012b7fc;" if (parenthesized_expression "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "iVar5 = FUN_0012bab0(param_1);" (assignment_expression "iVar5 = FUN_0012bab0(param_1)" identifier = (call_expression "FUN_0012bab0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0012b92c;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012b92c;" goto statement_identifier ;)) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_0012b936;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0012b7fc:\n    uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x16:" case number_literal :) (case_statement "case 0x17:\n    goto switchD_0012b468_caseD_16;" case number_literal : (goto_statement "goto switchD_0012b468_caseD_16;" goto statement_identifier ;)) (case_statement "default:\n                    /* WARNING: Subroutine does not return */\n    abort();" default : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) (labeled_statement "LAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;" statement_identifier : (expression_statement "*(long **)(param_1 + 0x58) = plVar6;" (assignment_expression "*(long **)(param_1 + 0x58) = plVar6" (pointer_expression "*(long **)(param_1 + 0x58)" * (cast_expression "(long **)(param_1 + 0x58)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;)) (return_statement "return uVar4;" return identifier ;) (labeled_statement "LAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }" statement_identifier : (if_statement "if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }" if (parenthesized_expression "(*plVar6 == 0)" ( (binary_expression "*plVar6 == 0" (pointer_expression "*plVar6" * identifier) == number_literal) )) (compound_statement "{\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }" { (labeled_statement "LAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }" statement_identifier : (if_statement "if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }" if (parenthesized_expression "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )) (compound_statement "{\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }" { (labeled_statement "LAB_0012b941:\n      uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (goto_statement "goto LAB_0012b4be;" goto statement_identifier ;) }))) }))) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;) })))
(translation_unit "bfd_boolean debug_type_samep(debug_handle *info,debug_type_s *t1,debug_type_s *t2)\n\n{\n  debug_type_kind dVar1;\n  debug_type_kind dVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  debug_class_type *pdVar8;\n  debug_class_type *pdVar9;\n  debug_field *ppdVar10;\n  debug_field *ppdVar11;\n  char *__s2;\n  char *__s1;\n  debug_named_type *pdVar12;\n  debug_named_type *pdVar13;\n  debug_baseclass *ppdVar14;\n  debug_baseclass *ppdVar15;\n  undefined8 *puVar16;\n  undefined8 *puVar17;\n  debug_method pdVar18;\n  debug_method pdVar19;\n  code *pcVar20;\n  bfd_boolean bVar21;\n  int iVar22;\n  uint uVar23;\n  debug_type_compare_list *pdVar24;\n  debug_type_s *pdVar25;\n  debug_type_s *t1_00;\n  debug_array_type *pdVar26;\n  debug_array_type *pdVar27;\n  debug_name *pdVar28;\n  debug_type_conflict *ppdVar29;\n  debug_type_conflict pdVar30;\n  long lVar31;\n  debug_method *ppdVar32;\n  debug_type_conflict *ppdVar33;\n  debug_name *__s2_00;\n  debug_name *__s1_00;\n  debug_type_compare_list *pdVar34;\n  debug_method *ppdVar35;\n  debug_type_conflict pdVar36;\n  debug_name *pdVar37;\n  debug_type_compare_list top;\n  \n  while (dVar1 = t1->kind, dVar1 == DEBUG_KIND_INDIRECT) {\n    t1 = *((t1->u).kindirect)->slot;\n    if (t1 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }\n  while (dVar2 = t2->kind, dVar2 == DEBUG_KIND_INDIRECT) {\n    t2 = *((t2->u).kindirect)->slot;\n    if (t2 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }\n  if (t1 == t2) {\n    return 1;\n  }\n  top.t1 = t1;\n  top.t2 = t2;\n  if (dVar1 == DEBUG_KIND_NAMED) {\n    if (dVar2 == DEBUG_KIND_TAGGED) {\n      bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2);\n      return bVar21;\n    }\n    lVar31._0_4_ = t2->kind;\n    lVar31._4_4_ = t2->size;\n    lVar5._0_4_ = t1->kind;\n    lVar5._4_4_ = t1->size;\n    if (lVar5 != lVar31) {\n      return 0;\n    }\n    pdVar24 = info->compare_list;\n    pdVar34 = pdVar24;\n    if (pdVar24 != (debug_type_compare_list *)0x0) goto LAB_0012b498;\n    top.next = (debug_type_compare_list *)0x0;\n    info->compare_list = &top;\nswitchD_0012b468_caseD_16:\n    pdVar12 = (t2->u).knamed;\n    pdVar13 = (t1->u).knamed;\n    iVar22 = strcmp(pdVar13->name->name,pdVar12->name->name);\n    uVar23 = 0;\n    if (iVar22 != 0) goto LAB_0012b4be;\n    pdVar25 = pdVar12->type;\n    pdVar30 = pdVar13->type;\n    goto LAB_0012b6fe;\n  }\n  if ((dVar2 == DEBUG_KIND_NAMED) && (dVar1 == DEBUG_KIND_TAGGED)) {\n    bVar21 = debug_type_samep(info,t1,((t2->u).kpointer)->pointer);\n    return bVar21;\n  }\n  lVar3._0_4_ = t2->kind;\n  lVar3._4_4_ = t2->size;\n  lVar4._0_4_ = t1->kind;\n  lVar4._4_4_ = t1->size;\n  if (lVar4 != lVar3) {\n    return 0;\n  }\n  if (dVar1 == DEBUG_KIND_INT) {\n    return (uint)((t1->u).kint == (t2->u).kint);\n  }\n  if (dVar1 < DEBUG_KIND_FLOAT) {\n    if (dVar1 == DEBUG_KIND_VOID) {\n      return 1;\n    }\n  }\n  else if (dVar1 < DEBUG_KIND_STRUCT) {\n    return 1;\n  }\n  pdVar24 = info->compare_list;\n  pdVar34 = pdVar24;\n  for (; pdVar24 != (debug_type_compare_list *)0x0; pdVar24 = pdVar24->next) {\nLAB_0012b498:\n    if ((t1 == pdVar24->t1) && (t2 == pdVar24->t2)) {\n      return 1;\n    }\n  }\n  info->compare_list = &top;\n  pdVar24 = pdVar34;\n  top.next = pdVar34;\n  switch(dVar1) {\n  case DEBUG_KIND_STRUCT:\n  case DEBUG_KIND_UNION:\n  case DEBUG_KIND_CLASS:\n  case DEBUG_KIND_UNION_CLASS:\n    pdVar8 = (t1->u).kclass;\n    pdVar9 = (t2->u).kclass;\n    if (pdVar8 == (debug_class_type *)0x0) {\n      uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);\n      break;\n    }\n    if (pdVar9 != (debug_class_type *)0x0) {\n      if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {\n        uVar23 = 1;\n        break;\n      }\n      ppdVar10 = pdVar8->fields;\n      ppdVar11 = pdVar9->fields;\n      if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar23 = 0;\n    break;\n  case DEBUG_KIND_ENUM:\n    pdVar12 = (t1->u).knamed;\n    pdVar13 = (t2->u).knamed;\n    if (pdVar12 == (debug_named_type *)0x0) {\n      uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);\n    }\n    else {\n      uVar23 = 0;\n      if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }\n    }\n    break;\n  case DEBUG_KIND_POINTER:\n  case DEBUG_KIND_REFERENCE:\n  case DEBUG_KIND_CONST:\n  case DEBUG_KIND_VOLATILE:\n    uVar23 = debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_FUNCTION:\n    uVar23 = 0;\n    if (((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs) break;\n    bVar21 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    if (bVar21 != 0) {\n      ppdVar29 = ((t1->u).kfunction)->arg_types;\n      ppdVar33 = ((t2->u).kfunction)->arg_types;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case DEBUG_KIND_RANGE:\n    pdVar27 = (debug_array_type *)(t2->u).krange;\n    pdVar26 = (debug_array_type *)(t1->u).krange;\n    uVar23 = 0;\n    if ((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_ARRAY:\n    pdVar27 = (t2->u).karray;\n    pdVar26 = (t1->u).karray;\n    uVar23 = 0;\n    if (((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||\n       (pdVar26->stringp != pdVar27->stringp)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_SET:\n    pdVar27 = (debug_array_type *)(t2->u).kset;\n    pdVar26 = (debug_array_type *)(t1->u).kset;\n    uVar23 = 0;\n    if (*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type) break;\nLAB_0012b729:\n    pdVar25 = pdVar27->element_type;\n    pdVar30 = pdVar26->element_type;\nLAB_0012b6fe:\n    bVar21 = debug_type_samep(info,pdVar30,pdVar25);\n    uVar23 = (uint)(bVar21 != 0);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_OFFSET:\n    uVar23 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    pdVar24 = top.next;\n    if (uVar23 == 0) break;\n    pdVar25 = ((t2->u).kpointer)->pointer;\n    pdVar30 = ((t1->u).kpointer)->pointer;\n    goto LAB_0012b6fe;\n  case DEBUG_KIND_METHOD:\n    uVar23 = 0;\n    if ((((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||\n       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0)) break;\n    bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer);\n    if (bVar21 != 0) {\n      ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;\n      ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar23 = 0;\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_NAMED:\n  case DEBUG_KIND_TAGGED:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\nLAB_0012b4be:\n  info->compare_list = pdVar24;\n  return uVar23;\nLAB_0012b92c:\n  if (*ppdVar29 == (debug_type_conflict)0x0) {\nLAB_0012b936:\n    if (*ppdVar33 == (debug_type_conflict)0x0) {\nLAB_0012b941:\n      uVar23 = 1;\n      pdVar24 = top.next;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}\n\n" (function_definition "bfd_boolean debug_type_samep(debug_handle *info,debug_type_s *t1,debug_type_s *t2)\n\n{\n  debug_type_kind dVar1;\n  debug_type_kind dVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  debug_class_type *pdVar8;\n  debug_class_type *pdVar9;\n  debug_field *ppdVar10;\n  debug_field *ppdVar11;\n  char *__s2;\n  char *__s1;\n  debug_named_type *pdVar12;\n  debug_named_type *pdVar13;\n  debug_baseclass *ppdVar14;\n  debug_baseclass *ppdVar15;\n  undefined8 *puVar16;\n  undefined8 *puVar17;\n  debug_method pdVar18;\n  debug_method pdVar19;\n  code *pcVar20;\n  bfd_boolean bVar21;\n  int iVar22;\n  uint uVar23;\n  debug_type_compare_list *pdVar24;\n  debug_type_s *pdVar25;\n  debug_type_s *t1_00;\n  debug_array_type *pdVar26;\n  debug_array_type *pdVar27;\n  debug_name *pdVar28;\n  debug_type_conflict *ppdVar29;\n  debug_type_conflict pdVar30;\n  long lVar31;\n  debug_method *ppdVar32;\n  debug_type_conflict *ppdVar33;\n  debug_name *__s2_00;\n  debug_name *__s1_00;\n  debug_type_compare_list *pdVar34;\n  debug_method *ppdVar35;\n  debug_type_conflict pdVar36;\n  debug_name *pdVar37;\n  debug_type_compare_list top;\n  \n  while (dVar1 = t1->kind, dVar1 == DEBUG_KIND_INDIRECT) {\n    t1 = *((t1->u).kindirect)->slot;\n    if (t1 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }\n  while (dVar2 = t2->kind, dVar2 == DEBUG_KIND_INDIRECT) {\n    t2 = *((t2->u).kindirect)->slot;\n    if (t2 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }\n  if (t1 == t2) {\n    return 1;\n  }\n  top.t1 = t1;\n  top.t2 = t2;\n  if (dVar1 == DEBUG_KIND_NAMED) {\n    if (dVar2 == DEBUG_KIND_TAGGED) {\n      bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2);\n      return bVar21;\n    }\n    lVar31._0_4_ = t2->kind;\n    lVar31._4_4_ = t2->size;\n    lVar5._0_4_ = t1->kind;\n    lVar5._4_4_ = t1->size;\n    if (lVar5 != lVar31) {\n      return 0;\n    }\n    pdVar24 = info->compare_list;\n    pdVar34 = pdVar24;\n    if (pdVar24 != (debug_type_compare_list *)0x0) goto LAB_0012b498;\n    top.next = (debug_type_compare_list *)0x0;\n    info->compare_list = &top;\nswitchD_0012b468_caseD_16:\n    pdVar12 = (t2->u).knamed;\n    pdVar13 = (t1->u).knamed;\n    iVar22 = strcmp(pdVar13->name->name,pdVar12->name->name);\n    uVar23 = 0;\n    if (iVar22 != 0) goto LAB_0012b4be;\n    pdVar25 = pdVar12->type;\n    pdVar30 = pdVar13->type;\n    goto LAB_0012b6fe;\n  }\n  if ((dVar2 == DEBUG_KIND_NAMED) && (dVar1 == DEBUG_KIND_TAGGED)) {\n    bVar21 = debug_type_samep(info,t1,((t2->u).kpointer)->pointer);\n    return bVar21;\n  }\n  lVar3._0_4_ = t2->kind;\n  lVar3._4_4_ = t2->size;\n  lVar4._0_4_ = t1->kind;\n  lVar4._4_4_ = t1->size;\n  if (lVar4 != lVar3) {\n    return 0;\n  }\n  if (dVar1 == DEBUG_KIND_INT) {\n    return (uint)((t1->u).kint == (t2->u).kint);\n  }\n  if (dVar1 < DEBUG_KIND_FLOAT) {\n    if (dVar1 == DEBUG_KIND_VOID) {\n      return 1;\n    }\n  }\n  else if (dVar1 < DEBUG_KIND_STRUCT) {\n    return 1;\n  }\n  pdVar24 = info->compare_list;\n  pdVar34 = pdVar24;\n  for (; pdVar24 != (debug_type_compare_list *)0x0; pdVar24 = pdVar24->next) {\nLAB_0012b498:\n    if ((t1 == pdVar24->t1) && (t2 == pdVar24->t2)) {\n      return 1;\n    }\n  }\n  info->compare_list = &top;\n  pdVar24 = pdVar34;\n  top.next = pdVar34;\n  switch(dVar1) {\n  case DEBUG_KIND_STRUCT:\n  case DEBUG_KIND_UNION:\n  case DEBUG_KIND_CLASS:\n  case DEBUG_KIND_UNION_CLASS:\n    pdVar8 = (t1->u).kclass;\n    pdVar9 = (t2->u).kclass;\n    if (pdVar8 == (debug_class_type *)0x0) {\n      uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);\n      break;\n    }\n    if (pdVar9 != (debug_class_type *)0x0) {\n      if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {\n        uVar23 = 1;\n        break;\n      }\n      ppdVar10 = pdVar8->fields;\n      ppdVar11 = pdVar9->fields;\n      if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar23 = 0;\n    break;\n  case DEBUG_KIND_ENUM:\n    pdVar12 = (t1->u).knamed;\n    pdVar13 = (t2->u).knamed;\n    if (pdVar12 == (debug_named_type *)0x0) {\n      uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);\n    }\n    else {\n      uVar23 = 0;\n      if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }\n    }\n    break;\n  case DEBUG_KIND_POINTER:\n  case DEBUG_KIND_REFERENCE:\n  case DEBUG_KIND_CONST:\n  case DEBUG_KIND_VOLATILE:\n    uVar23 = debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_FUNCTION:\n    uVar23 = 0;\n    if (((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs) break;\n    bVar21 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    if (bVar21 != 0) {\n      ppdVar29 = ((t1->u).kfunction)->arg_types;\n      ppdVar33 = ((t2->u).kfunction)->arg_types;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case DEBUG_KIND_RANGE:\n    pdVar27 = (debug_array_type *)(t2->u).krange;\n    pdVar26 = (debug_array_type *)(t1->u).krange;\n    uVar23 = 0;\n    if ((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_ARRAY:\n    pdVar27 = (t2->u).karray;\n    pdVar26 = (t1->u).karray;\n    uVar23 = 0;\n    if (((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||\n       (pdVar26->stringp != pdVar27->stringp)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_SET:\n    pdVar27 = (debug_array_type *)(t2->u).kset;\n    pdVar26 = (debug_array_type *)(t1->u).kset;\n    uVar23 = 0;\n    if (*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type) break;\nLAB_0012b729:\n    pdVar25 = pdVar27->element_type;\n    pdVar30 = pdVar26->element_type;\nLAB_0012b6fe:\n    bVar21 = debug_type_samep(info,pdVar30,pdVar25);\n    uVar23 = (uint)(bVar21 != 0);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_OFFSET:\n    uVar23 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    pdVar24 = top.next;\n    if (uVar23 == 0) break;\n    pdVar25 = ((t2->u).kpointer)->pointer;\n    pdVar30 = ((t1->u).kpointer)->pointer;\n    goto LAB_0012b6fe;\n  case DEBUG_KIND_METHOD:\n    uVar23 = 0;\n    if ((((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||\n       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0)) break;\n    bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer);\n    if (bVar21 != 0) {\n      ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;\n      ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar23 = 0;\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_NAMED:\n  case DEBUG_KIND_TAGGED:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\nLAB_0012b4be:\n  info->compare_list = pdVar24;\n  return uVar23;\nLAB_0012b92c:\n  if (*ppdVar29 == (debug_type_conflict)0x0) {\nLAB_0012b936:\n    if (*ppdVar33 == (debug_type_conflict)0x0) {\nLAB_0012b941:\n      uVar23 = 1;\n      pdVar24 = top.next;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}" type_identifier (function_declarator "debug_type_samep(debug_handle *info,debug_type_s *t1,debug_type_s *t2)" identifier (parameter_list "(debug_handle *info,debug_type_s *t1,debug_type_s *t2)" ( (parameter_declaration "debug_handle *info" type_identifier (pointer_declarator "*info" * identifier)) , (parameter_declaration "debug_type_s *t1" type_identifier (pointer_declarator "*t1" * identifier)) , (parameter_declaration "debug_type_s *t2" type_identifier (pointer_declarator "*t2" * identifier)) ))) (compound_statement "{\n  debug_type_kind dVar1;\n  debug_type_kind dVar2;\n  long lVar3;\n  long lVar4;\n  long lVar5;\n  long lVar6;\n  long lVar7;\n  debug_class_type *pdVar8;\n  debug_class_type *pdVar9;\n  debug_field *ppdVar10;\n  debug_field *ppdVar11;\n  char *__s2;\n  char *__s1;\n  debug_named_type *pdVar12;\n  debug_named_type *pdVar13;\n  debug_baseclass *ppdVar14;\n  debug_baseclass *ppdVar15;\n  undefined8 *puVar16;\n  undefined8 *puVar17;\n  debug_method pdVar18;\n  debug_method pdVar19;\n  code *pcVar20;\n  bfd_boolean bVar21;\n  int iVar22;\n  uint uVar23;\n  debug_type_compare_list *pdVar24;\n  debug_type_s *pdVar25;\n  debug_type_s *t1_00;\n  debug_array_type *pdVar26;\n  debug_array_type *pdVar27;\n  debug_name *pdVar28;\n  debug_type_conflict *ppdVar29;\n  debug_type_conflict pdVar30;\n  long lVar31;\n  debug_method *ppdVar32;\n  debug_type_conflict *ppdVar33;\n  debug_name *__s2_00;\n  debug_name *__s1_00;\n  debug_type_compare_list *pdVar34;\n  debug_method *ppdVar35;\n  debug_type_conflict pdVar36;\n  debug_name *pdVar37;\n  debug_type_compare_list top;\n  \n  while (dVar1 = t1->kind, dVar1 == DEBUG_KIND_INDIRECT) {\n    t1 = *((t1->u).kindirect)->slot;\n    if (t1 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }\n  while (dVar2 = t2->kind, dVar2 == DEBUG_KIND_INDIRECT) {\n    t2 = *((t2->u).kindirect)->slot;\n    if (t2 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }\n  if (t1 == t2) {\n    return 1;\n  }\n  top.t1 = t1;\n  top.t2 = t2;\n  if (dVar1 == DEBUG_KIND_NAMED) {\n    if (dVar2 == DEBUG_KIND_TAGGED) {\n      bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2);\n      return bVar21;\n    }\n    lVar31._0_4_ = t2->kind;\n    lVar31._4_4_ = t2->size;\n    lVar5._0_4_ = t1->kind;\n    lVar5._4_4_ = t1->size;\n    if (lVar5 != lVar31) {\n      return 0;\n    }\n    pdVar24 = info->compare_list;\n    pdVar34 = pdVar24;\n    if (pdVar24 != (debug_type_compare_list *)0x0) goto LAB_0012b498;\n    top.next = (debug_type_compare_list *)0x0;\n    info->compare_list = &top;\nswitchD_0012b468_caseD_16:\n    pdVar12 = (t2->u).knamed;\n    pdVar13 = (t1->u).knamed;\n    iVar22 = strcmp(pdVar13->name->name,pdVar12->name->name);\n    uVar23 = 0;\n    if (iVar22 != 0) goto LAB_0012b4be;\n    pdVar25 = pdVar12->type;\n    pdVar30 = pdVar13->type;\n    goto LAB_0012b6fe;\n  }\n  if ((dVar2 == DEBUG_KIND_NAMED) && (dVar1 == DEBUG_KIND_TAGGED)) {\n    bVar21 = debug_type_samep(info,t1,((t2->u).kpointer)->pointer);\n    return bVar21;\n  }\n  lVar3._0_4_ = t2->kind;\n  lVar3._4_4_ = t2->size;\n  lVar4._0_4_ = t1->kind;\n  lVar4._4_4_ = t1->size;\n  if (lVar4 != lVar3) {\n    return 0;\n  }\n  if (dVar1 == DEBUG_KIND_INT) {\n    return (uint)((t1->u).kint == (t2->u).kint);\n  }\n  if (dVar1 < DEBUG_KIND_FLOAT) {\n    if (dVar1 == DEBUG_KIND_VOID) {\n      return 1;\n    }\n  }\n  else if (dVar1 < DEBUG_KIND_STRUCT) {\n    return 1;\n  }\n  pdVar24 = info->compare_list;\n  pdVar34 = pdVar24;\n  for (; pdVar24 != (debug_type_compare_list *)0x0; pdVar24 = pdVar24->next) {\nLAB_0012b498:\n    if ((t1 == pdVar24->t1) && (t2 == pdVar24->t2)) {\n      return 1;\n    }\n  }\n  info->compare_list = &top;\n  pdVar24 = pdVar34;\n  top.next = pdVar34;\n  switch(dVar1) {\n  case DEBUG_KIND_STRUCT:\n  case DEBUG_KIND_UNION:\n  case DEBUG_KIND_CLASS:\n  case DEBUG_KIND_UNION_CLASS:\n    pdVar8 = (t1->u).kclass;\n    pdVar9 = (t2->u).kclass;\n    if (pdVar8 == (debug_class_type *)0x0) {\n      uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);\n      break;\n    }\n    if (pdVar9 != (debug_class_type *)0x0) {\n      if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {\n        uVar23 = 1;\n        break;\n      }\n      ppdVar10 = pdVar8->fields;\n      ppdVar11 = pdVar9->fields;\n      if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar23 = 0;\n    break;\n  case DEBUG_KIND_ENUM:\n    pdVar12 = (t1->u).knamed;\n    pdVar13 = (t2->u).knamed;\n    if (pdVar12 == (debug_named_type *)0x0) {\n      uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);\n    }\n    else {\n      uVar23 = 0;\n      if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }\n    }\n    break;\n  case DEBUG_KIND_POINTER:\n  case DEBUG_KIND_REFERENCE:\n  case DEBUG_KIND_CONST:\n  case DEBUG_KIND_VOLATILE:\n    uVar23 = debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_FUNCTION:\n    uVar23 = 0;\n    if (((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs) break;\n    bVar21 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    if (bVar21 != 0) {\n      ppdVar29 = ((t1->u).kfunction)->arg_types;\n      ppdVar33 = ((t2->u).kfunction)->arg_types;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case DEBUG_KIND_RANGE:\n    pdVar27 = (debug_array_type *)(t2->u).krange;\n    pdVar26 = (debug_array_type *)(t1->u).krange;\n    uVar23 = 0;\n    if ((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_ARRAY:\n    pdVar27 = (t2->u).karray;\n    pdVar26 = (t1->u).karray;\n    uVar23 = 0;\n    if (((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||\n       (pdVar26->stringp != pdVar27->stringp)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_SET:\n    pdVar27 = (debug_array_type *)(t2->u).kset;\n    pdVar26 = (debug_array_type *)(t1->u).kset;\n    uVar23 = 0;\n    if (*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type) break;\nLAB_0012b729:\n    pdVar25 = pdVar27->element_type;\n    pdVar30 = pdVar26->element_type;\nLAB_0012b6fe:\n    bVar21 = debug_type_samep(info,pdVar30,pdVar25);\n    uVar23 = (uint)(bVar21 != 0);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_OFFSET:\n    uVar23 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    pdVar24 = top.next;\n    if (uVar23 == 0) break;\n    pdVar25 = ((t2->u).kpointer)->pointer;\n    pdVar30 = ((t1->u).kpointer)->pointer;\n    goto LAB_0012b6fe;\n  case DEBUG_KIND_METHOD:\n    uVar23 = 0;\n    if ((((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||\n       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0)) break;\n    bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer);\n    if (bVar21 != 0) {\n      ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;\n      ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar23 = 0;\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_NAMED:\n  case DEBUG_KIND_TAGGED:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }\nLAB_0012b4be:\n  info->compare_list = pdVar24;\n  return uVar23;\nLAB_0012b92c:\n  if (*ppdVar29 == (debug_type_conflict)0x0) {\nLAB_0012b936:\n    if (*ppdVar33 == (debug_type_conflict)0x0) {\nLAB_0012b941:\n      uVar23 = 1;\n      pdVar24 = top.next;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}" { (declaration "debug_type_kind dVar1;" type_identifier identifier ;) (declaration "debug_type_kind dVar2;" type_identifier identifier ;) (declaration "long lVar3;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar4;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar5;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar6;" (sized_type_specifier "long" long) identifier ;) (declaration "long lVar7;" (sized_type_specifier "long" long) identifier ;) (declaration "debug_class_type *pdVar8;" type_identifier (pointer_declarator "*pdVar8" * identifier) ;) (declaration "debug_class_type *pdVar9;" type_identifier (pointer_declarator "*pdVar9" * identifier) ;) (declaration "debug_field *ppdVar10;" type_identifier (pointer_declarator "*ppdVar10" * identifier) ;) (declaration "debug_field *ppdVar11;" type_identifier (pointer_declarator "*ppdVar11" * identifier) ;) (declaration "char *__s2;" primitive_type (pointer_declarator "*__s2" * identifier) ;) (declaration "char *__s1;" primitive_type (pointer_declarator "*__s1" * identifier) ;) (declaration "debug_named_type *pdVar12;" type_identifier (pointer_declarator "*pdVar12" * identifier) ;) (declaration "debug_named_type *pdVar13;" type_identifier (pointer_declarator "*pdVar13" * identifier) ;) (declaration "debug_baseclass *ppdVar14;" type_identifier (pointer_declarator "*ppdVar14" * identifier) ;) (declaration "debug_baseclass *ppdVar15;" type_identifier (pointer_declarator "*ppdVar15" * identifier) ;) (declaration "undefined8 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "undefined8 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "debug_method pdVar18;" type_identifier identifier ;) (declaration "debug_method pdVar19;" type_identifier identifier ;) (declaration "code *pcVar20;" type_identifier (pointer_declarator "*pcVar20" * identifier) ;) (declaration "bfd_boolean bVar21;" type_identifier identifier ;) (declaration "int iVar22;" primitive_type identifier ;) (declaration "uint uVar23;" type_identifier identifier ;) (declaration "debug_type_compare_list *pdVar24;" type_identifier (pointer_declarator "*pdVar24" * identifier) ;) (declaration "debug_type_s *pdVar25;" type_identifier (pointer_declarator "*pdVar25" * identifier) ;) (declaration "debug_type_s *t1_00;" type_identifier (pointer_declarator "*t1_00" * identifier) ;) (declaration "debug_array_type *pdVar26;" type_identifier (pointer_declarator "*pdVar26" * identifier) ;) (declaration "debug_array_type *pdVar27;" type_identifier (pointer_declarator "*pdVar27" * identifier) ;) (declaration "debug_name *pdVar28;" type_identifier (pointer_declarator "*pdVar28" * identifier) ;) (declaration "debug_type_conflict *ppdVar29;" type_identifier (pointer_declarator "*ppdVar29" * identifier) ;) (declaration "debug_type_conflict pdVar30;" type_identifier identifier ;) (declaration "long lVar31;" (sized_type_specifier "long" long) identifier ;) (declaration "debug_method *ppdVar32;" type_identifier (pointer_declarator "*ppdVar32" * identifier) ;) (declaration "debug_type_conflict *ppdVar33;" type_identifier (pointer_declarator "*ppdVar33" * identifier) ;) (declaration "debug_name *__s2_00;" type_identifier (pointer_declarator "*__s2_00" * identifier) ;) (declaration "debug_name *__s1_00;" type_identifier (pointer_declarator "*__s1_00" * identifier) ;) (declaration "debug_type_compare_list *pdVar34;" type_identifier (pointer_declarator "*pdVar34" * identifier) ;) (declaration "debug_method *ppdVar35;" type_identifier (pointer_declarator "*ppdVar35" * identifier) ;) (declaration "debug_type_conflict pdVar36;" type_identifier identifier ;) (declaration "debug_name *pdVar37;" type_identifier (pointer_declarator "*pdVar37" * identifier) ;) (declaration "debug_type_compare_list top;" type_identifier identifier ;) (while_statement "while (dVar1 = t1->kind, dVar1 == DEBUG_KIND_INDIRECT) {\n    t1 = *((t1->u).kindirect)->slot;\n    if (t1 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }" while (parenthesized_expression "(dVar1 = t1->kind, dVar1 == DEBUG_KIND_INDIRECT)" ( (comma_expression "dVar1 = t1->kind, dVar1 == DEBUG_KIND_INDIRECT" (assignment_expression "dVar1 = t1->kind" identifier = (field_expression "t1->kind" identifier -> field_identifier)) , (binary_expression "dVar1 == DEBUG_KIND_INDIRECT" identifier == identifier)) )) (compound_statement "{\n    t1 = *((t1->u).kindirect)->slot;\n    if (t1 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }" { (expression_statement "t1 = *((t1->u).kindirect)->slot;" (assignment_expression "t1 = *((t1->u).kindirect)->slot" identifier = (pointer_expression "*((t1->u).kindirect)->slot" * (field_expression "((t1->u).kindirect)->slot" (parenthesized_expression "((t1->u).kindirect)" ( (field_expression "(t1->u).kindirect" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier))) ;) (if_statement "if (t1 == (debug_type_conflict)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(t1 == (debug_type_conflict)0x0)" ( (binary_expression "t1 == (debug_type_conflict)0x0" identifier == (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (while_statement "while (dVar2 = t2->kind, dVar2 == DEBUG_KIND_INDIRECT) {\n    t2 = *((t2->u).kindirect)->slot;\n    if (t2 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }" while (parenthesized_expression "(dVar2 = t2->kind, dVar2 == DEBUG_KIND_INDIRECT)" ( (comma_expression "dVar2 = t2->kind, dVar2 == DEBUG_KIND_INDIRECT" (assignment_expression "dVar2 = t2->kind" identifier = (field_expression "t2->kind" identifier -> field_identifier)) , (binary_expression "dVar2 == DEBUG_KIND_INDIRECT" identifier == identifier)) )) (compound_statement "{\n    t2 = *((t2->u).kindirect)->slot;\n    if (t2 == (debug_type_conflict)0x0) {\n      return 0;\n    }\n  }" { (expression_statement "t2 = *((t2->u).kindirect)->slot;" (assignment_expression "t2 = *((t2->u).kindirect)->slot" identifier = (pointer_expression "*((t2->u).kindirect)->slot" * (field_expression "((t2->u).kindirect)->slot" (parenthesized_expression "((t2->u).kindirect)" ( (field_expression "(t2->u).kindirect" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier))) ;) (if_statement "if (t2 == (debug_type_conflict)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(t2 == (debug_type_conflict)0x0)" ( (binary_expression "t2 == (debug_type_conflict)0x0" identifier == (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (t1 == t2) {\n    return 1;\n  }" if (parenthesized_expression "(t1 == t2)" ( (binary_expression "t1 == t2" identifier == identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "top.t1 = t1;" (assignment_expression "top.t1 = t1" (field_expression "top.t1" identifier . field_identifier) = identifier) ;) (expression_statement "top.t2 = t2;" (assignment_expression "top.t2 = t2" (field_expression "top.t2" identifier . field_identifier) = identifier) ;) (if_statement "if (dVar1 == DEBUG_KIND_NAMED) {\n    if (dVar2 == DEBUG_KIND_TAGGED) {\n      bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2);\n      return bVar21;\n    }\n    lVar31._0_4_ = t2->kind;\n    lVar31._4_4_ = t2->size;\n    lVar5._0_4_ = t1->kind;\n    lVar5._4_4_ = t1->size;\n    if (lVar5 != lVar31) {\n      return 0;\n    }\n    pdVar24 = info->compare_list;\n    pdVar34 = pdVar24;\n    if (pdVar24 != (debug_type_compare_list *)0x0) goto LAB_0012b498;\n    top.next = (debug_type_compare_list *)0x0;\n    info->compare_list = &top;\nswitchD_0012b468_caseD_16:\n    pdVar12 = (t2->u).knamed;\n    pdVar13 = (t1->u).knamed;\n    iVar22 = strcmp(pdVar13->name->name,pdVar12->name->name);\n    uVar23 = 0;\n    if (iVar22 != 0) goto LAB_0012b4be;\n    pdVar25 = pdVar12->type;\n    pdVar30 = pdVar13->type;\n    goto LAB_0012b6fe;\n  }" if (parenthesized_expression "(dVar1 == DEBUG_KIND_NAMED)" ( (binary_expression "dVar1 == DEBUG_KIND_NAMED" identifier == identifier) )) (compound_statement "{\n    if (dVar2 == DEBUG_KIND_TAGGED) {\n      bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2);\n      return bVar21;\n    }\n    lVar31._0_4_ = t2->kind;\n    lVar31._4_4_ = t2->size;\n    lVar5._0_4_ = t1->kind;\n    lVar5._4_4_ = t1->size;\n    if (lVar5 != lVar31) {\n      return 0;\n    }\n    pdVar24 = info->compare_list;\n    pdVar34 = pdVar24;\n    if (pdVar24 != (debug_type_compare_list *)0x0) goto LAB_0012b498;\n    top.next = (debug_type_compare_list *)0x0;\n    info->compare_list = &top;\nswitchD_0012b468_caseD_16:\n    pdVar12 = (t2->u).knamed;\n    pdVar13 = (t1->u).knamed;\n    iVar22 = strcmp(pdVar13->name->name,pdVar12->name->name);\n    uVar23 = 0;\n    if (iVar22 != 0) goto LAB_0012b4be;\n    pdVar25 = pdVar12->type;\n    pdVar30 = pdVar13->type;\n    goto LAB_0012b6fe;\n  }" { (if_statement "if (dVar2 == DEBUG_KIND_TAGGED) {\n      bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2);\n      return bVar21;\n    }" if (parenthesized_expression "(dVar2 == DEBUG_KIND_TAGGED)" ( (binary_expression "dVar2 == DEBUG_KIND_TAGGED" identifier == identifier) )) (compound_statement "{\n      bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2);\n      return bVar21;\n    }" { (expression_statement "bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2);" (assignment_expression "bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,t2)" identifier = (call_expression "debug_type_samep(info,((t1->u).kpointer)->pointer,t2)" identifier (argument_list "(info,((t1->u).kpointer)->pointer,t2)" ( identifier , (field_expression "((t1->u).kpointer)->pointer" (parenthesized_expression "((t1->u).kpointer)" ( (field_expression "(t1->u).kpointer" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) , identifier )))) ;) (return_statement "return bVar21;" return identifier ;) })) (expression_statement "lVar31._0_4_ = t2->kind;" (assignment_expression "lVar31._0_4_ = t2->kind" (field_expression "lVar31._0_4_" identifier . field_identifier) = (field_expression "t2->kind" identifier -> field_identifier)) ;) (expression_statement "lVar31._4_4_ = t2->size;" (assignment_expression "lVar31._4_4_ = t2->size" (field_expression "lVar31._4_4_" identifier . field_identifier) = (field_expression "t2->size" identifier -> field_identifier)) ;) (expression_statement "lVar5._0_4_ = t1->kind;" (assignment_expression "lVar5._0_4_ = t1->kind" (field_expression "lVar5._0_4_" identifier . field_identifier) = (field_expression "t1->kind" identifier -> field_identifier)) ;) (expression_statement "lVar5._4_4_ = t1->size;" (assignment_expression "lVar5._4_4_ = t1->size" (field_expression "lVar5._4_4_" identifier . field_identifier) = (field_expression "t1->size" identifier -> field_identifier)) ;) (if_statement "if (lVar5 != lVar31) {\n      return 0;\n    }" if (parenthesized_expression "(lVar5 != lVar31)" ( (binary_expression "lVar5 != lVar31" identifier != identifier) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "pdVar24 = info->compare_list;" (assignment_expression "pdVar24 = info->compare_list" identifier = (field_expression "info->compare_list" identifier -> field_identifier)) ;) (expression_statement "pdVar34 = pdVar24;" (assignment_expression "pdVar34 = pdVar24" identifier = identifier) ;) (if_statement "if (pdVar24 != (debug_type_compare_list *)0x0) goto LAB_0012b498;" if (parenthesized_expression "(pdVar24 != (debug_type_compare_list *)0x0)" ( (binary_expression "pdVar24 != (debug_type_compare_list *)0x0" identifier != (cast_expression "(debug_type_compare_list *)0x0" ( (type_descriptor "debug_type_compare_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b498;" goto statement_identifier ;)) (expression_statement "top.next = (debug_type_compare_list *)0x0;" (assignment_expression "top.next = (debug_type_compare_list *)0x0" (field_expression "top.next" identifier . field_identifier) = (cast_expression "(debug_type_compare_list *)0x0" ( (type_descriptor "debug_type_compare_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ;) (expression_statement "info->compare_list = &top;" (assignment_expression "info->compare_list = &top" (field_expression "info->compare_list" identifier -> field_identifier) = (pointer_expression "&top" & identifier)) ;) (labeled_statement "switchD_0012b468_caseD_16:\n    pdVar12 = (t2->u).knamed;" statement_identifier : (expression_statement "pdVar12 = (t2->u).knamed;" (assignment_expression "pdVar12 = (t2->u).knamed" identifier = (field_expression "(t2->u).knamed" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier)) ;)) (expression_statement "pdVar13 = (t1->u).knamed;" (assignment_expression "pdVar13 = (t1->u).knamed" identifier = (field_expression "(t1->u).knamed" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "iVar22 = strcmp(pdVar13->name->name,pdVar12->name->name);" (assignment_expression "iVar22 = strcmp(pdVar13->name->name,pdVar12->name->name)" identifier = (call_expression "strcmp(pdVar13->name->name,pdVar12->name->name)" identifier (argument_list "(pdVar13->name->name,pdVar12->name->name)" ( (field_expression "pdVar13->name->name" (field_expression "pdVar13->name" identifier -> field_identifier) -> field_identifier) , (field_expression "pdVar12->name->name" (field_expression "pdVar12->name" identifier -> field_identifier) -> field_identifier) )))) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if (iVar22 != 0) goto LAB_0012b4be;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b4be;" goto statement_identifier ;)) (expression_statement "pdVar25 = pdVar12->type;" (assignment_expression "pdVar25 = pdVar12->type" identifier = (field_expression "pdVar12->type" identifier -> field_identifier)) ;) (expression_statement "pdVar30 = pdVar13->type;" (assignment_expression "pdVar30 = pdVar13->type" identifier = (field_expression "pdVar13->type" identifier -> field_identifier)) ;) (goto_statement "goto LAB_0012b6fe;" goto statement_identifier ;) })) (if_statement "if ((dVar2 == DEBUG_KIND_NAMED) && (dVar1 == DEBUG_KIND_TAGGED)) {\n    bVar21 = debug_type_samep(info,t1,((t2->u).kpointer)->pointer);\n    return bVar21;\n  }" if (parenthesized_expression "((dVar2 == DEBUG_KIND_NAMED) && (dVar1 == DEBUG_KIND_TAGGED))" ( (binary_expression "(dVar2 == DEBUG_KIND_NAMED) && (dVar1 == DEBUG_KIND_TAGGED)" (parenthesized_expression "(dVar2 == DEBUG_KIND_NAMED)" ( (binary_expression "dVar2 == DEBUG_KIND_NAMED" identifier == identifier) )) && (parenthesized_expression "(dVar1 == DEBUG_KIND_TAGGED)" ( (binary_expression "dVar1 == DEBUG_KIND_TAGGED" identifier == identifier) ))) )) (compound_statement "{\n    bVar21 = debug_type_samep(info,t1,((t2->u).kpointer)->pointer);\n    return bVar21;\n  }" { (expression_statement "bVar21 = debug_type_samep(info,t1,((t2->u).kpointer)->pointer);" (assignment_expression "bVar21 = debug_type_samep(info,t1,((t2->u).kpointer)->pointer)" identifier = (call_expression "debug_type_samep(info,t1,((t2->u).kpointer)->pointer)" identifier (argument_list "(info,t1,((t2->u).kpointer)->pointer)" ( identifier , identifier , (field_expression "((t2->u).kpointer)->pointer" (parenthesized_expression "((t2->u).kpointer)" ( (field_expression "(t2->u).kpointer" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )))) ;) (return_statement "return bVar21;" return identifier ;) })) (expression_statement "lVar3._0_4_ = t2->kind;" (assignment_expression "lVar3._0_4_ = t2->kind" (field_expression "lVar3._0_4_" identifier . field_identifier) = (field_expression "t2->kind" identifier -> field_identifier)) ;) (expression_statement "lVar3._4_4_ = t2->size;" (assignment_expression "lVar3._4_4_ = t2->size" (field_expression "lVar3._4_4_" identifier . field_identifier) = (field_expression "t2->size" identifier -> field_identifier)) ;) (expression_statement "lVar4._0_4_ = t1->kind;" (assignment_expression "lVar4._0_4_ = t1->kind" (field_expression "lVar4._0_4_" identifier . field_identifier) = (field_expression "t1->kind" identifier -> field_identifier)) ;) (expression_statement "lVar4._4_4_ = t1->size;" (assignment_expression "lVar4._4_4_ = t1->size" (field_expression "lVar4._4_4_" identifier . field_identifier) = (field_expression "t1->size" identifier -> field_identifier)) ;) (if_statement "if (lVar4 != lVar3) {\n    return 0;\n  }" if (parenthesized_expression "(lVar4 != lVar3)" ( (binary_expression "lVar4 != lVar3" identifier != identifier) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (dVar1 == DEBUG_KIND_INT) {\n    return (uint)((t1->u).kint == (t2->u).kint);\n  }" if (parenthesized_expression "(dVar1 == DEBUG_KIND_INT)" ( (binary_expression "dVar1 == DEBUG_KIND_INT" identifier == identifier) )) (compound_statement "{\n    return (uint)((t1->u).kint == (t2->u).kint);\n  }" { (return_statement "return (uint)((t1->u).kint == (t2->u).kint);" return (call_expression "(uint)((t1->u).kint == (t2->u).kint)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "((t1->u).kint == (t2->u).kint)" ( (binary_expression "(t1->u).kint == (t2->u).kint" (field_expression "(t1->u).kint" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) == (field_expression "(t2->u).kint" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier)) ))) ;) })) (if_statement "if (dVar1 < DEBUG_KIND_FLOAT) {\n    if (dVar1 == DEBUG_KIND_VOID) {\n      return 1;\n    }\n  }\n  else if (dVar1 < DEBUG_KIND_STRUCT) {\n    return 1;\n  }" if (parenthesized_expression "(dVar1 < DEBUG_KIND_FLOAT)" ( (binary_expression "dVar1 < DEBUG_KIND_FLOAT" identifier < identifier) )) (compound_statement "{\n    if (dVar1 == DEBUG_KIND_VOID) {\n      return 1;\n    }\n  }" { (if_statement "if (dVar1 == DEBUG_KIND_VOID) {\n      return 1;\n    }" if (parenthesized_expression "(dVar1 == DEBUG_KIND_VOID)" ( (binary_expression "dVar1 == DEBUG_KIND_VOID" identifier == identifier) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (dVar1 < DEBUG_KIND_STRUCT) {\n    return 1;\n  }" else (if_statement "if (dVar1 < DEBUG_KIND_STRUCT) {\n    return 1;\n  }" if (parenthesized_expression "(dVar1 < DEBUG_KIND_STRUCT)" ( (binary_expression "dVar1 < DEBUG_KIND_STRUCT" identifier < identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })))) (expression_statement "pdVar24 = info->compare_list;" (assignment_expression "pdVar24 = info->compare_list" identifier = (field_expression "info->compare_list" identifier -> field_identifier)) ;) (expression_statement "pdVar34 = pdVar24;" (assignment_expression "pdVar34 = pdVar24" identifier = identifier) ;) (for_statement "for (; pdVar24 != (debug_type_compare_list *)0x0; pdVar24 = pdVar24->next) {\nLAB_0012b498:\n    if ((t1 == pdVar24->t1) && (t2 == pdVar24->t2)) {\n      return 1;\n    }\n  }" for ( ; (binary_expression "pdVar24 != (debug_type_compare_list *)0x0" identifier != (cast_expression "(debug_type_compare_list *)0x0" ( (type_descriptor "debug_type_compare_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "pdVar24 = pdVar24->next" identifier = (field_expression "pdVar24->next" identifier -> field_identifier)) ) (compound_statement "{\nLAB_0012b498:\n    if ((t1 == pdVar24->t1) && (t2 == pdVar24->t2)) {\n      return 1;\n    }\n  }" { (labeled_statement "LAB_0012b498:\n    if ((t1 == pdVar24->t1) && (t2 == pdVar24->t2)) {\n      return 1;\n    }" statement_identifier : (if_statement "if ((t1 == pdVar24->t1) && (t2 == pdVar24->t2)) {\n      return 1;\n    }" if (parenthesized_expression "((t1 == pdVar24->t1) && (t2 == pdVar24->t2))" ( (binary_expression "(t1 == pdVar24->t1) && (t2 == pdVar24->t2)" (parenthesized_expression "(t1 == pdVar24->t1)" ( (binary_expression "t1 == pdVar24->t1" identifier == (field_expression "pdVar24->t1" identifier -> field_identifier)) )) && (parenthesized_expression "(t2 == pdVar24->t2)" ( (binary_expression "t2 == pdVar24->t2" identifier == (field_expression "pdVar24->t2" identifier -> field_identifier)) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) }))) })) (expression_statement "info->compare_list = &top;" (assignment_expression "info->compare_list = &top" (field_expression "info->compare_list" identifier -> field_identifier) = (pointer_expression "&top" & identifier)) ;) (expression_statement "pdVar24 = pdVar34;" (assignment_expression "pdVar24 = pdVar34" identifier = identifier) ;) (expression_statement "top.next = pdVar34;" (assignment_expression "top.next = pdVar34" (field_expression "top.next" identifier . field_identifier) = identifier) ;) (switch_statement "switch(dVar1) {\n  case DEBUG_KIND_STRUCT:\n  case DEBUG_KIND_UNION:\n  case DEBUG_KIND_CLASS:\n  case DEBUG_KIND_UNION_CLASS:\n    pdVar8 = (t1->u).kclass;\n    pdVar9 = (t2->u).kclass;\n    if (pdVar8 == (debug_class_type *)0x0) {\n      uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);\n      break;\n    }\n    if (pdVar9 != (debug_class_type *)0x0) {\n      if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {\n        uVar23 = 1;\n        break;\n      }\n      ppdVar10 = pdVar8->fields;\n      ppdVar11 = pdVar9->fields;\n      if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar23 = 0;\n    break;\n  case DEBUG_KIND_ENUM:\n    pdVar12 = (t1->u).knamed;\n    pdVar13 = (t2->u).knamed;\n    if (pdVar12 == (debug_named_type *)0x0) {\n      uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);\n    }\n    else {\n      uVar23 = 0;\n      if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }\n    }\n    break;\n  case DEBUG_KIND_POINTER:\n  case DEBUG_KIND_REFERENCE:\n  case DEBUG_KIND_CONST:\n  case DEBUG_KIND_VOLATILE:\n    uVar23 = debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_FUNCTION:\n    uVar23 = 0;\n    if (((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs) break;\n    bVar21 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    if (bVar21 != 0) {\n      ppdVar29 = ((t1->u).kfunction)->arg_types;\n      ppdVar33 = ((t2->u).kfunction)->arg_types;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case DEBUG_KIND_RANGE:\n    pdVar27 = (debug_array_type *)(t2->u).krange;\n    pdVar26 = (debug_array_type *)(t1->u).krange;\n    uVar23 = 0;\n    if ((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_ARRAY:\n    pdVar27 = (t2->u).karray;\n    pdVar26 = (t1->u).karray;\n    uVar23 = 0;\n    if (((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||\n       (pdVar26->stringp != pdVar27->stringp)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_SET:\n    pdVar27 = (debug_array_type *)(t2->u).kset;\n    pdVar26 = (debug_array_type *)(t1->u).kset;\n    uVar23 = 0;\n    if (*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type) break;\nLAB_0012b729:\n    pdVar25 = pdVar27->element_type;\n    pdVar30 = pdVar26->element_type;\nLAB_0012b6fe:\n    bVar21 = debug_type_samep(info,pdVar30,pdVar25);\n    uVar23 = (uint)(bVar21 != 0);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_OFFSET:\n    uVar23 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    pdVar24 = top.next;\n    if (uVar23 == 0) break;\n    pdVar25 = ((t2->u).kpointer)->pointer;\n    pdVar30 = ((t1->u).kpointer)->pointer;\n    goto LAB_0012b6fe;\n  case DEBUG_KIND_METHOD:\n    uVar23 = 0;\n    if ((((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||\n       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0)) break;\n    bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer);\n    if (bVar21 != 0) {\n      ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;\n      ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar23 = 0;\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_NAMED:\n  case DEBUG_KIND_TAGGED:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" switch (parenthesized_expression "(dVar1)" ( identifier )) (compound_statement "{\n  case DEBUG_KIND_STRUCT:\n  case DEBUG_KIND_UNION:\n  case DEBUG_KIND_CLASS:\n  case DEBUG_KIND_UNION_CLASS:\n    pdVar8 = (t1->u).kclass;\n    pdVar9 = (t2->u).kclass;\n    if (pdVar8 == (debug_class_type *)0x0) {\n      uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);\n      break;\n    }\n    if (pdVar9 != (debug_class_type *)0x0) {\n      if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {\n        uVar23 = 1;\n        break;\n      }\n      ppdVar10 = pdVar8->fields;\n      ppdVar11 = pdVar9->fields;\n      if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar23 = 0;\n    break;\n  case DEBUG_KIND_ENUM:\n    pdVar12 = (t1->u).knamed;\n    pdVar13 = (t2->u).knamed;\n    if (pdVar12 == (debug_named_type *)0x0) {\n      uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);\n    }\n    else {\n      uVar23 = 0;\n      if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }\n    }\n    break;\n  case DEBUG_KIND_POINTER:\n  case DEBUG_KIND_REFERENCE:\n  case DEBUG_KIND_CONST:\n  case DEBUG_KIND_VOLATILE:\n    uVar23 = debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_FUNCTION:\n    uVar23 = 0;\n    if (((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs) break;\n    bVar21 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    if (bVar21 != 0) {\n      ppdVar29 = ((t1->u).kfunction)->arg_types;\n      ppdVar33 = ((t2->u).kfunction)->arg_types;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case DEBUG_KIND_RANGE:\n    pdVar27 = (debug_array_type *)(t2->u).krange;\n    pdVar26 = (debug_array_type *)(t1->u).krange;\n    uVar23 = 0;\n    if ((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_ARRAY:\n    pdVar27 = (t2->u).karray;\n    pdVar26 = (t1->u).karray;\n    uVar23 = 0;\n    if (((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||\n       (pdVar26->stringp != pdVar27->stringp)) break;\n    goto LAB_0012b729;\n  case DEBUG_KIND_SET:\n    pdVar27 = (debug_array_type *)(t2->u).kset;\n    pdVar26 = (debug_array_type *)(t1->u).kset;\n    uVar23 = 0;\n    if (*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type) break;\nLAB_0012b729:\n    pdVar25 = pdVar27->element_type;\n    pdVar30 = pdVar26->element_type;\nLAB_0012b6fe:\n    bVar21 = debug_type_samep(info,pdVar30,pdVar25);\n    uVar23 = (uint)(bVar21 != 0);\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_OFFSET:\n    uVar23 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    pdVar24 = top.next;\n    if (uVar23 == 0) break;\n    pdVar25 = ((t2->u).kpointer)->pointer;\n    pdVar30 = ((t1->u).kpointer)->pointer;\n    goto LAB_0012b6fe;\n  case DEBUG_KIND_METHOD:\n    uVar23 = 0;\n    if ((((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||\n       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0)) break;\n    bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer);\n    if (bVar21 != 0) {\n      ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;\n      ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar23 = 0;\n    pdVar24 = top.next;\n    break;\n  case DEBUG_KIND_NAMED:\n  case DEBUG_KIND_TAGGED:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    /* WARNING: Subroutine does not return */\n    abort();\n  }" { (case_statement "case DEBUG_KIND_STRUCT:" case identifier :) (case_statement "case DEBUG_KIND_UNION:" case identifier :) (case_statement "case DEBUG_KIND_CLASS:" case identifier :) (case_statement "case DEBUG_KIND_UNION_CLASS:\n    pdVar8 = (t1->u).kclass;\n    pdVar9 = (t2->u).kclass;\n    if (pdVar8 == (debug_class_type *)0x0) {\n      uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);\n      break;\n    }\n    if (pdVar9 != (debug_class_type *)0x0) {\n      if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {\n        uVar23 = 1;\n        break;\n      }\n      ppdVar10 = pdVar8->fields;\n      ppdVar11 = pdVar9->fields;\n      if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar23 = 0;\n    break;" case identifier : (expression_statement "pdVar8 = (t1->u).kclass;" (assignment_expression "pdVar8 = (t1->u).kclass" identifier = (field_expression "(t1->u).kclass" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pdVar9 = (t2->u).kclass;" (assignment_expression "pdVar9 = (t2->u).kclass" identifier = (field_expression "(t2->u).kclass" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pdVar8 == (debug_class_type *)0x0) {\n      uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);\n      break;\n    }" if (parenthesized_expression "(pdVar8 == (debug_class_type *)0x0)" ( (binary_expression "pdVar8 == (debug_class_type *)0x0" identifier == (cast_expression "(debug_class_type *)0x0" ( (type_descriptor "debug_class_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);\n      break;\n    }" { (expression_statement "uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0);" (assignment_expression "uVar23 = (uint)(pdVar9 == (debug_class_type *)0x0)" identifier = (call_expression "(uint)(pdVar9 == (debug_class_type *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pdVar9 == (debug_class_type *)0x0)" ( (binary_expression "pdVar9 == (debug_class_type *)0x0" identifier == (cast_expression "(debug_class_type *)0x0" ( (type_descriptor "debug_class_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) (break_statement "break;" break ;) })) (if_statement "if (pdVar9 != (debug_class_type *)0x0) {\n      if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {\n        uVar23 = 1;\n        break;\n      }\n      ppdVar10 = pdVar8->fields;\n      ppdVar11 = pdVar9->fields;\n      if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }" if (parenthesized_expression "(pdVar9 != (debug_class_type *)0x0)" ( (binary_expression "pdVar9 != (debug_class_type *)0x0" identifier != (cast_expression "(debug_class_type *)0x0" ( (type_descriptor "debug_class_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {\n        uVar23 = 1;\n        break;\n      }\n      ppdVar10 = pdVar8->fields;\n      ppdVar11 = pdVar9->fields;\n      if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }" { (if_statement "if ((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)) {\n        uVar23 = 1;\n        break;\n      }" if (parenthesized_expression "((info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id))" ( (binary_expression "(info->base_id < pdVar8->id) && (pdVar8->id == pdVar9->id)" (parenthesized_expression "(info->base_id < pdVar8->id)" ( (binary_expression "info->base_id < pdVar8->id" (field_expression "info->base_id" identifier -> field_identifier) < (field_expression "pdVar8->id" identifier -> field_identifier)) )) && (parenthesized_expression "(pdVar8->id == pdVar9->id)" ( (binary_expression "pdVar8->id == pdVar9->id" (field_expression "pdVar8->id" identifier -> field_identifier) == (field_expression "pdVar9->id" identifier -> field_identifier)) ))) )) (compound_statement "{\n        uVar23 = 1;\n        break;\n      }" { (expression_statement "uVar23 = 1;" (assignment_expression "uVar23 = 1" identifier = number_literal) ;) (break_statement "break;" break ;) })) (expression_statement "ppdVar10 = pdVar8->fields;" (assignment_expression "ppdVar10 = pdVar8->fields" identifier = (field_expression "pdVar8->fields" identifier -> field_identifier)) ;) (expression_statement "ppdVar11 = pdVar9->fields;" (assignment_expression "ppdVar11 = pdVar9->fields" identifier = (field_expression "pdVar9->fields" identifier -> field_identifier)) ;) (if_statement "if ((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))) {\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }" if (parenthesized_expression "((((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0)))))" ( (binary_expression "(((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))) &&\n         (((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))" (parenthesized_expression "(((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0)))" ( (binary_expression "((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)) &&\n          ((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))" (parenthesized_expression "((ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0))" ( (binary_expression "(ppdVar10 == (debug_field *)0x0) == (ppdVar11 == (debug_field *)0x0)" (parenthesized_expression "(ppdVar10 == (debug_field *)0x0)" ( (binary_expression "ppdVar10 == (debug_field *)0x0" identifier == (cast_expression "(debug_field *)0x0" ( (type_descriptor "debug_field *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) == (parenthesized_expression "(ppdVar11 == (debug_field *)0x0)" ( (binary_expression "ppdVar11 == (debug_field *)0x0" identifier == (cast_expression "(debug_field *)0x0" ( (type_descriptor "debug_field *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) && (parenthesized_expression "((pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0))" ( (binary_expression "(pdVar8->baseclasses == (debug_baseclass *)0x0) ==\n           (pdVar9->baseclasses == (debug_baseclass *)0x0)" (parenthesized_expression "(pdVar8->baseclasses == (debug_baseclass *)0x0)" ( (binary_expression "pdVar8->baseclasses == (debug_baseclass *)0x0" (field_expression "pdVar8->baseclasses" identifier -> field_identifier) == (cast_expression "(debug_baseclass *)0x0" ( (type_descriptor "debug_baseclass *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) == (parenthesized_expression "(pdVar9->baseclasses == (debug_baseclass *)0x0)" ( (binary_expression "pdVar9->baseclasses == (debug_baseclass *)0x0" (field_expression "pdVar9->baseclasses" identifier -> field_identifier) == (cast_expression "(debug_baseclass *)0x0" ( (type_descriptor "debug_baseclass *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) ))) )) && (parenthesized_expression "(((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))))" ( (parenthesized_expression "((pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0)))" ( (binary_expression "(pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0) &&\n          ((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))" (binary_expression "(pdVar8->methods == (debug_method *)0x0) == (pdVar9->methods == (debug_method *)0x0)" (parenthesized_expression "(pdVar8->methods == (debug_method *)0x0)" ( (binary_expression "pdVar8->methods == (debug_method *)0x0" (field_expression "pdVar8->methods" identifier -> field_identifier) == (cast_expression "(debug_method *)0x0" ( (type_descriptor "debug_method *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) == (parenthesized_expression "(pdVar9->methods == (debug_method *)0x0)" ( (binary_expression "pdVar9->methods == (debug_method *)0x0" (field_expression "pdVar9->methods" identifier -> field_identifier) == (cast_expression "(debug_method *)0x0" ( (type_descriptor "debug_method *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) && (parenthesized_expression "((pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0))" ( (binary_expression "(pdVar8->vptrbase == (debug_type_conflict)0x0) ==\n           (pdVar9->vptrbase == (debug_type_conflict)0x0)" (parenthesized_expression "(pdVar8->vptrbase == (debug_type_conflict)0x0)" ( (binary_expression "pdVar8->vptrbase == (debug_type_conflict)0x0" (field_expression "pdVar8->vptrbase" identifier -> field_identifier) == (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) == (parenthesized_expression "(pdVar9->vptrbase == (debug_type_conflict)0x0)" ( (binary_expression "pdVar9->vptrbase == (debug_type_conflict)0x0" (field_expression "pdVar9->vptrbase" identifier -> field_identifier) == (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) ))) ))) )) ))) )) (compound_statement "{\n        lVar31 = 0;\n        if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;\n        ppdVar14 = pdVar8->baseclasses;\n        if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;\n        if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }\n        goto LAB_0012b941;\n      }" { (expression_statement "lVar31 = 0;" (assignment_expression "lVar31 = 0" identifier = number_literal) ;) (if_statement "if (ppdVar10 != (debug_field *)0x0) {\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }" if (parenthesized_expression "(ppdVar10 != (debug_field *)0x0)" ( (binary_expression "ppdVar10 != (debug_field *)0x0" identifier != (cast_expression "(debug_field *)0x0" ( (type_descriptor "debug_field *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }" { (do_statement "do {\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);" do (compound_statement "{\n            puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            __s2 = (char *)*puVar17;\n            __s1 = (char *)*puVar16;\n            if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }\n            iVar22 = strcmp(__s1,__s2);\n            if (iVar22 != 0) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);\n            t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);\n            uVar23 = debug_type_samep(info,t1_00,pdVar25);\n            pdVar24 = top.next;\n          }" { (expression_statement "puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31);" (assignment_expression "puVar16 = *(undefined8 **)((long)ppdVar10 + lVar31)" identifier = (pointer_expression "*(undefined8 **)((long)ppdVar10 + lVar31)" * (cast_expression "(undefined8 **)((long)ppdVar10 + lVar31)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppdVar10 + lVar31)" ( (binary_expression "(long)ppdVar10 + lVar31" (cast_expression "(long)ppdVar10" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) ;) (expression_statement "puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31);" (assignment_expression "puVar17 = *(undefined8 **)((long)ppdVar11 + lVar31)" identifier = (pointer_expression "*(undefined8 **)((long)ppdVar11 + lVar31)" * (cast_expression "(undefined8 **)((long)ppdVar11 + lVar31)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppdVar11 + lVar31)" ( (binary_expression "(long)ppdVar11 + lVar31" (cast_expression "(long)ppdVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) ;) (if_statement "if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }" if (parenthesized_expression "(puVar16 == (undefined8 *)0x0)" ( (binary_expression "puVar16 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }" { (if_statement "if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" ( (binary_expression "puVar17 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (goto_statement "goto LAB_0012b971;" goto statement_identifier ;) })) (if_statement "if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar17 == (undefined8 *)0x0)" ( (binary_expression "puVar17 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "__s2 = (char *)*puVar17;" (assignment_expression "__s2 = (char *)*puVar17" identifier = (cast_expression "(char *)*puVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "__s1 = (char *)*puVar16;" (assignment_expression "__s1 = (char *)*puVar16" identifier = (cast_expression "(char *)*puVar16" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier))) ;) (if_statement "if ((*__s1 != *__s2) || (puVar16[2] != puVar17[2])) goto LAB_0012b7fc;" if (parenthesized_expression "((*__s1 != *__s2) || (puVar16[2] != puVar17[2]))" ( (binary_expression "(*__s1 != *__s2) || (puVar16[2] != puVar17[2])" (parenthesized_expression "(*__s1 != *__s2)" ( (binary_expression "*__s1 != *__s2" (pointer_expression "*__s1" * identifier) != (pointer_expression "*__s2" * identifier)) )) || (parenthesized_expression "(puVar16[2] != puVar17[2])" ( (binary_expression "puVar16[2] != puVar17[2]" (subscript_expression "puVar16[2]" identifier [ number_literal ]) != (subscript_expression "puVar17[2]" identifier [ number_literal ])) ))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (if_statement "if (*(int *)((long)puVar16 + 0x14) == 0) {\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }" if (parenthesized_expression "(*(int *)((long)puVar16 + 0x14) == 0)" ( (binary_expression "*(int *)((long)puVar16 + 0x14) == 0" (pointer_expression "*(int *)((long)puVar16 + 0x14)" * (cast_expression "(int *)((long)puVar16 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar16 + 0x14)" ( (binary_expression "(long)puVar16 + 0x14" (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n              if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }" { (if_statement "if ((char *)puVar16[3] != (char *)puVar17[3]) goto LAB_0012b7fc;" if (parenthesized_expression "((char *)puVar16[3] != (char *)puVar17[3])" ( (binary_expression "(char *)puVar16[3] != (char *)puVar17[3]" (cast_expression "(char *)puVar16[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[3]" identifier [ number_literal ])) != (cast_expression "(char *)puVar17[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) }) (else_clause "else {\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }" else (compound_statement "{\n              iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);\n              if (iVar22 != 0) goto LAB_0012b7fc;\n            }" { (expression_statement "iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3]);" (assignment_expression "iVar22 = strcmp((char *)puVar16[3],(char *)puVar17[3])" identifier = (call_expression "strcmp((char *)puVar16[3],(char *)puVar17[3])" identifier (argument_list "((char *)puVar16[3],(char *)puVar17[3])" ( (cast_expression "(char *)puVar16[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar16[3]" identifier [ number_literal ])) , (cast_expression "(char *)puVar17[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[3]" identifier [ number_literal ])) )))) ;) (if_statement "if (iVar22 != 0) goto LAB_0012b7fc;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) }))) (expression_statement "iVar22 = strcmp(__s1,__s2);" (assignment_expression "iVar22 = strcmp(__s1,__s2)" identifier = (call_expression "strcmp(__s1,__s2)" identifier (argument_list "(__s1,__s2)" ( identifier , identifier )))) ;) (if_statement "if (iVar22 != 0) goto LAB_0012b7fc;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "lVar31 = lVar31 + 8;" (assignment_expression "lVar31 = lVar31 + 8" identifier = (binary_expression "lVar31 + 8" identifier + number_literal)) ;) (expression_statement "pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0);" (assignment_expression "pdVar25 = debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0)" identifier = (call_expression "debug_get_real_type(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0)" identifier (argument_list "(info,(debug_type_conflict)puVar17[1],\n                                          (debug_type_real_list *)0x0)" ( identifier , (cast_expression "(debug_type_conflict)puVar17[1]" ( (type_descriptor "debug_type_conflict" type_identifier) ) (subscript_expression "puVar17[1]" identifier [ number_literal ])) , (cast_expression "(debug_type_real_list *)0x0" ( (type_descriptor "debug_type_real_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0);" (assignment_expression "t1_00 = debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0)" identifier = (call_expression "debug_get_real_type(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0)" identifier (argument_list "(info,(debug_type_conflict)puVar16[1],\n                                        (debug_type_real_list *)0x0)" ( identifier , (cast_expression "(debug_type_conflict)puVar16[1]" ( (type_descriptor "debug_type_conflict" type_identifier) ) (subscript_expression "puVar16[1]" identifier [ number_literal ])) , (cast_expression "(debug_type_real_list *)0x0" ( (type_descriptor "debug_type_real_list *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal) )))) ;) (expression_statement "uVar23 = debug_type_samep(info,t1_00,pdVar25);" (assignment_expression "uVar23 = debug_type_samep(info,t1_00,pdVar25)" identifier = (call_expression "debug_type_samep(info,t1_00,pdVar25)" identifier (argument_list "(info,t1_00,pdVar25)" ( identifier , identifier , identifier )))) ;) (expression_statement "pdVar24 = top.next;" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) ;) }) while (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) ;) (break_statement "break;" break ;) })) (labeled_statement "LAB_0012b971:\n        if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;" statement_identifier : (if_statement "if ((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)) break;" if (parenthesized_expression "((pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0))" ( (binary_expression "(pdVar8->vptrbase != (debug_type_s *)0x0) &&\n           (uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)" (parenthesized_expression "(pdVar8->vptrbase != (debug_type_s *)0x0)" ( (binary_expression "pdVar8->vptrbase != (debug_type_s *)0x0" (field_expression "pdVar8->vptrbase" identifier -> field_identifier) != (cast_expression "(debug_type_s *)0x0" ( (type_descriptor "debug_type_s *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0)" ( (comma_expression "uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase), pdVar24 = top.next,\n           uVar23 == 0" (assignment_expression "uVar23 = debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase)" identifier = (call_expression "debug_type_samep(info,pdVar8->vptrbase,pdVar9->vptrbase)" identifier (argument_list "(info,pdVar8->vptrbase,pdVar9->vptrbase)" ( identifier , (field_expression "pdVar8->vptrbase" identifier -> field_identifier) , (field_expression "pdVar9->vptrbase" identifier -> field_identifier) )))) , (comma_expression "pdVar24 = top.next,\n           uVar23 == 0" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) , (binary_expression "uVar23 == 0" identifier == number_literal))) ))) )) (break_statement "break;" break ;))) (expression_statement "ppdVar14 = pdVar8->baseclasses;" (assignment_expression "ppdVar14 = pdVar8->baseclasses" identifier = (field_expression "pdVar8->baseclasses" identifier -> field_identifier)) ;) (if_statement "if (ppdVar14 != (debug_baseclass *)0x0) {\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }" if (parenthesized_expression "(ppdVar14 != (debug_baseclass *)0x0)" ( (binary_expression "ppdVar14 != (debug_baseclass *)0x0" identifier != (cast_expression "(debug_baseclass *)0x0" ( (type_descriptor "debug_baseclass *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          ppdVar15 = pdVar9->baseclasses;\n          lVar31 = 0;\n          do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);\n          break;\n        }" { (expression_statement "ppdVar15 = pdVar9->baseclasses;" (assignment_expression "ppdVar15 = pdVar9->baseclasses" identifier = (field_expression "pdVar9->baseclasses" identifier -> field_identifier)) ;) (expression_statement "lVar31 = 0;" (assignment_expression "lVar31 = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          } while (uVar23 != 0);" do (compound_statement "{\n            puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);\n            puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);\n            if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar31 = lVar31 + 8;\n            uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);\n            pdVar24 = top.next;\n          }" { (expression_statement "puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31);" (assignment_expression "puVar16 = *(undefined8 **)((long)ppdVar14 + lVar31)" identifier = (pointer_expression "*(undefined8 **)((long)ppdVar14 + lVar31)" * (cast_expression "(undefined8 **)((long)ppdVar14 + lVar31)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppdVar14 + lVar31)" ( (binary_expression "(long)ppdVar14 + lVar31" (cast_expression "(long)ppdVar14" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) ;) (expression_statement "puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31);" (assignment_expression "puVar17 = *(undefined8 **)((long)ppdVar15 + lVar31)" identifier = (pointer_expression "*(undefined8 **)((long)ppdVar15 + lVar31)" * (cast_expression "(undefined8 **)((long)ppdVar15 + lVar31)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "((long)ppdVar15 + lVar31)" ( (binary_expression "(long)ppdVar15 + lVar31" (cast_expression "(long)ppdVar15" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))))) ;) (if_statement "if (puVar16 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }" if (parenthesized_expression "(puVar16 == (undefined8 *)0x0)" ( (binary_expression "puVar16 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }" { (if_statement "if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" ( (binary_expression "puVar17 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (goto_statement "goto LAB_0012b9f3;" goto statement_identifier ;) })) (if_statement "if (((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;" if (parenthesized_expression "(((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2)))" ( (binary_expression "((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])) ||\n               (*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))" (parenthesized_expression "((puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1]))" ( (binary_expression "(puVar17 == (undefined8 *)0x0) || (puVar16[1] != puVar17[1])" (parenthesized_expression "(puVar17 == (undefined8 *)0x0)" ( (binary_expression "puVar17 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar16[1] != puVar17[1])" ( (binary_expression "puVar16[1] != puVar17[1]" (subscript_expression "puVar16[1]" identifier [ number_literal ]) != (subscript_expression "puVar17[1]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "(*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2))" ( (binary_expression "*(int *)(puVar16 + 2) != *(int *)(puVar17 + 2)" (pointer_expression "*(int *)(puVar16 + 2)" * (cast_expression "(int *)(puVar16 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar16 + 2)" ( (binary_expression "puVar16 + 2" identifier + number_literal) )))) != (pointer_expression "*(int *)(puVar17 + 2)" * (cast_expression "(int *)(puVar17 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) ))))) ))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "lVar31 = lVar31 + 8;" (assignment_expression "lVar31 = lVar31 + 8" identifier = (binary_expression "lVar31 + 8" identifier + number_literal)) ;) (expression_statement "uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17);" (assignment_expression "uVar23 = debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17)" identifier = (call_expression "debug_type_samep(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17)" identifier (argument_list "(info,(debug_type_s *)*puVar16,(debug_type_s *)*puVar17)" ( identifier , (cast_expression "(debug_type_s *)*puVar16" ( (type_descriptor "debug_type_s *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar16" * identifier)) , (cast_expression "(debug_type_s *)*puVar17" ( (type_descriptor "debug_type_s *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier)) )))) ;) (expression_statement "pdVar24 = top.next;" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) ;) }) while (parenthesized_expression "(uVar23 != 0)" ( (binary_expression "uVar23 != 0" identifier != number_literal) )) ;) (break_statement "break;" break ;) })) (labeled_statement "LAB_0012b9f3:\n        ppdVar32 = pdVar8->methods;" statement_identifier : (expression_statement "ppdVar32 = pdVar8->methods;" (assignment_expression "ppdVar32 = pdVar8->methods" identifier = (field_expression "pdVar8->methods" identifier -> field_identifier)) ;)) (if_statement "if (ppdVar32 != (debug_method *)0x0) {\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }" if (parenthesized_expression "(ppdVar32 != (debug_method *)0x0)" ( (binary_expression "ppdVar32 != (debug_method *)0x0" identifier != (cast_expression "(debug_method *)0x0" ( (type_descriptor "debug_method *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          ppdVar35 = pdVar9->methods;\n          while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }\n          uVar23 = (uint)(pdVar19 == (debug_method)0x0);\n          pdVar24 = top.next;\n          break;\n        }" { (expression_statement "ppdVar35 = pdVar9->methods;" (assignment_expression "ppdVar35 = pdVar9->methods" identifier = (field_expression "pdVar9->methods" identifier -> field_identifier)) ;) (while_statement "while( true ) {\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            pdVar18 = *ppdVar32;\n            pdVar19 = *ppdVar35;\n            if (pdVar18 == (debug_method)0x0) break;\n            if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;\n            if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;\n            if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }\n            ppdVar32 = ppdVar32 + 1;\n            ppdVar35 = ppdVar35 + 1;\n          }" { (expression_statement "pdVar18 = *ppdVar32;" (assignment_expression "pdVar18 = *ppdVar32" identifier = (pointer_expression "*ppdVar32" * identifier)) ;) (expression_statement "pdVar19 = *ppdVar35;" (assignment_expression "pdVar19 = *ppdVar35" identifier = (pointer_expression "*ppdVar35" * identifier)) ;) (if_statement "if (pdVar18 == (debug_method)0x0) break;" if (parenthesized_expression "(pdVar18 == (debug_method)0x0)" ( (binary_expression "pdVar18 == (debug_method)0x0" identifier == (cast_expression "(debug_method)0x0" ( (type_descriptor "debug_method" type_identifier) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (pdVar19 == (debug_method)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(pdVar19 == (debug_method)0x0)" ( (binary_expression "pdVar19 == (debug_method)0x0" identifier == (cast_expression "(debug_method)0x0" ( (type_descriptor "debug_method" type_identifier) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (if_statement "if (((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))) goto LAB_0012b7fc;" if (parenthesized_expression "(((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0)))" ( (binary_expression "((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)) ||\n               ((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))" (parenthesized_expression "((*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0))" ( (binary_expression "(*pdVar18->name != *pdVar19->name) ||\n                (iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)" (parenthesized_expression "(*pdVar18->name != *pdVar19->name)" ( (binary_expression "*pdVar18->name != *pdVar19->name" (pointer_expression "*pdVar18->name" * (field_expression "pdVar18->name" identifier -> field_identifier)) != (pointer_expression "*pdVar19->name" * (field_expression "pdVar19->name" identifier -> field_identifier))) )) || (parenthesized_expression "(iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0)" ( (comma_expression "iVar22 = strcmp(pdVar18->name,pdVar19->name), iVar22 != 0" (assignment_expression "iVar22 = strcmp(pdVar18->name,pdVar19->name)" identifier = (call_expression "strcmp(pdVar18->name,pdVar19->name)" identifier (argument_list "(pdVar18->name,pdVar19->name)" ( (field_expression "pdVar18->name" identifier -> field_identifier) , (field_expression "pdVar19->name" identifier -> field_identifier) )))) , (binary_expression "iVar22 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "((pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0))" ( (binary_expression "(pdVar18->variants == (debug_method_variant_s **)0x0) !=\n                (pdVar19->variants == (debug_method_variant_s **)0x0)" (parenthesized_expression "(pdVar18->variants == (debug_method_variant_s **)0x0)" ( (binary_expression "pdVar18->variants == (debug_method_variant_s **)0x0" (field_expression "pdVar18->variants" identifier -> field_identifier) == (cast_expression "(debug_method_variant_s **)0x0" ( (type_descriptor "debug_method_variant_s **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) != (parenthesized_expression "(pdVar19->variants == (debug_method_variant_s **)0x0)" ( (binary_expression "pdVar19->variants == (debug_method_variant_s **)0x0" (field_expression "pdVar19->variants" identifier -> field_identifier) == (cast_expression "(debug_method_variant_s **)0x0" ( (type_descriptor "debug_method_variant_s **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) ))) ))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (if_statement "if (pdVar18->variants == (debug_method_variant_s **)0x0) {\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }" if (parenthesized_expression "(pdVar18->variants == (debug_method_variant_s **)0x0)" ( (binary_expression "pdVar18->variants == (debug_method_variant_s **)0x0" (field_expression "pdVar18->variants" identifier -> field_identifier) == (cast_expression "(debug_method_variant_s **)0x0" ( (type_descriptor "debug_method_variant_s **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) number_literal)) )) (compound_statement "{\n                    /* WARNING: Does not return */\n              pcVar20 = (code *)invalidInstructionException();\n              (*pcVar20)();\n            }" { comment (expression_statement "pcVar20 = (code *)invalidInstructionException();" (assignment_expression "pcVar20 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar20)();" (call_expression "(*pcVar20)()" (parenthesized_expression "(*pcVar20)" ( (pointer_expression "*pcVar20" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "ppdVar32 = ppdVar32 + 1;" (assignment_expression "ppdVar32 = ppdVar32 + 1" identifier = (binary_expression "ppdVar32 + 1" identifier + number_literal)) ;) (expression_statement "ppdVar35 = ppdVar35 + 1;" (assignment_expression "ppdVar35 = ppdVar35 + 1" identifier = (binary_expression "ppdVar35 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar23 = (uint)(pdVar19 == (debug_method)0x0);" (assignment_expression "uVar23 = (uint)(pdVar19 == (debug_method)0x0)" identifier = (call_expression "(uint)(pdVar19 == (debug_method)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pdVar19 == (debug_method)0x0)" ( (binary_expression "pdVar19 == (debug_method)0x0" identifier == (cast_expression "(debug_method)0x0" ( (type_descriptor "debug_method" type_identifier) ) number_literal)) )))) ;) (expression_statement "pdVar24 = top.next;" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_0012b941;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0012b55d:\n    uVar23 = 0;" statement_identifier : (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;)) (break_statement "break;" break ;)) (case_statement "case DEBUG_KIND_ENUM:\n    pdVar12 = (t1->u).knamed;\n    pdVar13 = (t2->u).knamed;\n    if (pdVar12 == (debug_named_type *)0x0) {\n      uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);\n    }\n    else {\n      uVar23 = 0;\n      if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }\n    }\n    break;" case identifier : (expression_statement "pdVar12 = (t1->u).knamed;" (assignment_expression "pdVar12 = (t1->u).knamed" identifier = (field_expression "(t1->u).knamed" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pdVar13 = (t2->u).knamed;" (assignment_expression "pdVar13 = (t2->u).knamed" identifier = (field_expression "(t2->u).knamed" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier)) ;) (if_statement "if (pdVar12 == (debug_named_type *)0x0) {\n      uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);\n    }\n    else {\n      uVar23 = 0;\n      if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }\n    }" if (parenthesized_expression "(pdVar12 == (debug_named_type *)0x0)" ( (binary_expression "pdVar12 == (debug_named_type *)0x0" identifier == (cast_expression "(debug_named_type *)0x0" ( (type_descriptor "debug_named_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);\n    }" { (expression_statement "uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0);" (assignment_expression "uVar23 = (uint)(pdVar13 == (debug_named_type *)0x0)" identifier = (call_expression "(uint)(pdVar13 == (debug_named_type *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pdVar13 == (debug_named_type *)0x0)" ( (binary_expression "pdVar13 == (debug_named_type *)0x0" identifier == (cast_expression "(debug_named_type *)0x0" ( (type_descriptor "debug_named_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) }) (else_clause "else {\n      uVar23 = 0;\n      if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }\n    }" else (compound_statement "{\n      uVar23 = 0;\n      if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }\n    }" { (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if (pdVar13 != (debug_named_type *)0x0) {\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }" if (parenthesized_expression "(pdVar13 != (debug_named_type *)0x0)" ( (binary_expression "pdVar13 != (debug_named_type *)0x0" identifier != (cast_expression "(debug_named_type *)0x0" ( (type_descriptor "debug_named_type *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        pdVar37 = pdVar12->name;\n        pdVar28 = pdVar13->name;\n        pdVar30 = pdVar12->type;\n        pdVar36 = pdVar13->type;\n        __s1_00 = pdVar37->next;\n        __s2_00 = pdVar28->next;\n        if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }\n      }" { (expression_statement "pdVar37 = pdVar12->name;" (assignment_expression "pdVar37 = pdVar12->name" identifier = (field_expression "pdVar12->name" identifier -> field_identifier)) ;) (expression_statement "pdVar28 = pdVar13->name;" (assignment_expression "pdVar28 = pdVar13->name" identifier = (field_expression "pdVar13->name" identifier -> field_identifier)) ;) (expression_statement "pdVar30 = pdVar12->type;" (assignment_expression "pdVar30 = pdVar12->type" identifier = (field_expression "pdVar12->type" identifier -> field_identifier)) ;) (expression_statement "pdVar36 = pdVar13->type;" (assignment_expression "pdVar36 = pdVar13->type" identifier = (field_expression "pdVar13->type" identifier -> field_identifier)) ;) (expression_statement "__s1_00 = pdVar37->next;" (assignment_expression "__s1_00 = pdVar37->next" identifier = (field_expression "pdVar37->next" identifier -> field_identifier)) ;) (expression_statement "__s2_00 = pdVar28->next;" (assignment_expression "__s2_00 = pdVar28->next" identifier = (field_expression "pdVar28->next" identifier -> field_identifier)) ;) (if_statement "if (__s1_00 == (debug_name *)0x0) {\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }\n        else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }" if (parenthesized_expression "(__s1_00 == (debug_name *)0x0)" ( (binary_expression "__s1_00 == (debug_name *)0x0" identifier == (cast_expression "(debug_name *)0x0" ( (type_descriptor "debug_name *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);\n        }" { (labeled_statement "LAB_0012b950:\n          uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);" statement_identifier : (expression_statement "uVar23 = (uint)(pdVar28->next == (debug_name *)0x0);" (assignment_expression "uVar23 = (uint)(pdVar28->next == (debug_name *)0x0)" identifier = (call_expression "(uint)(pdVar28->next == (debug_name *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(pdVar28->next == (debug_name *)0x0)" ( (binary_expression "pdVar28->next == (debug_name *)0x0" (field_expression "pdVar28->next" identifier -> field_identifier) == (cast_expression "(debug_name *)0x0" ( (type_descriptor "debug_name *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;)) }) (else_clause "else if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }" else (if_statement "if (((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)) {\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }" if (parenthesized_expression "(((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6))" ( (binary_expression "((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)) &&\n                (lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)" (parenthesized_expression "((__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next))" ( (binary_expression "(__s2_00 != (debug_name *)0x0) &&\n                 (*(char *)&__s2_00->next == *(char *)&__s1_00->next)" (parenthesized_expression "(__s2_00 != (debug_name *)0x0)" ( (binary_expression "__s2_00 != (debug_name *)0x0" identifier != (cast_expression "(debug_name *)0x0" ( (type_descriptor "debug_name *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(char *)&__s2_00->next == *(char *)&__s1_00->next)" ( (binary_expression "*(char *)&__s2_00->next == *(char *)&__s1_00->next" (pointer_expression "*(char *)&__s2_00->next" * (cast_expression "(char *)&__s2_00->next" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__s2_00->next" & (field_expression "__s2_00->next" identifier -> field_identifier)))) == (pointer_expression "*(char *)&__s1_00->next" * (cast_expression "(char *)&__s1_00->next" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__s1_00->next" & (field_expression "__s1_00->next" identifier -> field_identifier))))) ))) )) && (parenthesized_expression "(lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6)" ( (comma_expression "lVar6._0_4_ = pdVar30->kind, lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6" (assignment_expression "lVar6._0_4_ = pdVar30->kind" (field_expression "lVar6._0_4_" identifier . field_identifier) = (field_expression "pdVar30->kind" identifier -> field_identifier)) , (comma_expression "lVar6._4_4_ = pdVar30->size,\n                lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6" (assignment_expression "lVar6._4_4_ = pdVar30->size" (field_expression "lVar6._4_4_" identifier . field_identifier) = (field_expression "pdVar30->size" identifier -> field_identifier)) , (comma_expression "lVar7._0_4_ = pdVar36->kind, lVar7._4_4_ = pdVar36->size, lVar7 == lVar6" (assignment_expression "lVar7._0_4_ = pdVar36->kind" (field_expression "lVar7._0_4_" identifier . field_identifier) = (field_expression "pdVar36->kind" identifier -> field_identifier)) , (comma_expression "lVar7._4_4_ = pdVar36->size, lVar7 == lVar6" (assignment_expression "lVar7._4_4_ = pdVar36->size" (field_expression "lVar7._4_4_" identifier . field_identifier) = (field_expression "pdVar36->size" identifier -> field_identifier)) , (binary_expression "lVar7 == lVar6" identifier == identifier))))) ))) )) (compound_statement "{\n          do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));\n        }" { (do_statement "do {\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          } while (((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36));" do (compound_statement "{\n            iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);\n            if (iVar22 != 0) goto LAB_0012b55d;\n            pdVar37 = (debug_name *)&pdVar37->name;\n            __s1_00 = *(debug_name **)pdVar37;\n            pdVar28 = (debug_name *)&pdVar28->name;\n            pdVar30 = (debug_type_conflict)&pdVar30->pointer;\n            pdVar36 = (debug_type_conflict)&pdVar36->pointer;\n            __s2_00 = *(debug_name **)pdVar28;\n            if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;\n            uVar23 = 0;\n          }" { (expression_statement "iVar22 = strcmp((char *)__s1_00,(char *)__s2_00);" (assignment_expression "iVar22 = strcmp((char *)__s1_00,(char *)__s2_00)" identifier = (call_expression "strcmp((char *)__s1_00,(char *)__s2_00)" identifier (argument_list "((char *)__s1_00,(char *)__s2_00)" ( (cast_expression "(char *)__s1_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) , (cast_expression "(char *)__s2_00" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) identifier) )))) ;) (if_statement "if (iVar22 != 0) goto LAB_0012b55d;" if (parenthesized_expression "(iVar22 != 0)" ( (binary_expression "iVar22 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b55d;" goto statement_identifier ;)) (expression_statement "pdVar37 = (debug_name *)&pdVar37->name;" (assignment_expression "pdVar37 = (debug_name *)&pdVar37->name" identifier = (cast_expression "(debug_name *)&pdVar37->name" ( (type_descriptor "debug_name *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar37->name" & (field_expression "pdVar37->name" identifier -> field_identifier)))) ;) (expression_statement "__s1_00 = *(debug_name **)pdVar37;" (assignment_expression "__s1_00 = *(debug_name **)pdVar37" identifier = (pointer_expression "*(debug_name **)pdVar37" * (cast_expression "(debug_name **)pdVar37" ( (type_descriptor "debug_name **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (expression_statement "pdVar28 = (debug_name *)&pdVar28->name;" (assignment_expression "pdVar28 = (debug_name *)&pdVar28->name" identifier = (cast_expression "(debug_name *)&pdVar28->name" ( (type_descriptor "debug_name *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar28->name" & (field_expression "pdVar28->name" identifier -> field_identifier)))) ;) (expression_statement "pdVar30 = (debug_type_conflict)&pdVar30->pointer;" (assignment_expression "pdVar30 = (debug_type_conflict)&pdVar30->pointer" identifier = (binary_expression "(debug_type_conflict)&pdVar30->pointer" (parenthesized_expression "(debug_type_conflict)" ( identifier )) & (field_expression "pdVar30->pointer" identifier -> field_identifier))) ;) (expression_statement "pdVar36 = (debug_type_conflict)&pdVar36->pointer;" (assignment_expression "pdVar36 = (debug_type_conflict)&pdVar36->pointer" identifier = (binary_expression "(debug_type_conflict)&pdVar36->pointer" (parenthesized_expression "(debug_type_conflict)" ( identifier )) & (field_expression "pdVar36->pointer" identifier -> field_identifier))) ;) (expression_statement "__s2_00 = *(debug_name **)pdVar28;" (assignment_expression "__s2_00 = *(debug_name **)pdVar28" identifier = (pointer_expression "*(debug_name **)pdVar28" * (cast_expression "(debug_name **)pdVar28" ( (type_descriptor "debug_name **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) identifier))) ;) (if_statement "if (__s1_00 == (debug_name *)0x0) goto LAB_0012b950;" if (parenthesized_expression "(__s1_00 == (debug_name *)0x0)" ( (binary_expression "__s1_00 == (debug_name *)0x0" identifier == (cast_expression "(debug_name *)0x0" ( (type_descriptor "debug_name *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b950;" goto statement_identifier ;)) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36))" ( (binary_expression "((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)) &&\n                  (*(debug_type *)pdVar30 == *(debug_type *)pdVar36)" (parenthesized_expression "((__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next))" ( (binary_expression "(__s2_00 != (debug_name *)0x0) &&\n                   (*(char *)&__s1_00->next == *(char *)&__s2_00->next)" (parenthesized_expression "(__s2_00 != (debug_name *)0x0)" ( (binary_expression "__s2_00 != (debug_name *)0x0" identifier != (cast_expression "(debug_name *)0x0" ( (type_descriptor "debug_name *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*(char *)&__s1_00->next == *(char *)&__s2_00->next)" ( (binary_expression "*(char *)&__s1_00->next == *(char *)&__s2_00->next" (pointer_expression "*(char *)&__s1_00->next" * (cast_expression "(char *)&__s1_00->next" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__s1_00->next" & (field_expression "__s1_00->next" identifier -> field_identifier)))) == (pointer_expression "*(char *)&__s2_00->next" * (cast_expression "(char *)&__s2_00->next" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&__s2_00->next" & (field_expression "__s2_00->next" identifier -> field_identifier))))) ))) )) && (parenthesized_expression "(*(debug_type *)pdVar30 == *(debug_type *)pdVar36)" ( (binary_expression "*(debug_type *)pdVar30 == *(debug_type *)pdVar36" (pointer_expression "*(debug_type *)pdVar30" * (cast_expression "(debug_type *)pdVar30" ( (type_descriptor "debug_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier)) == (pointer_expression "*(debug_type *)pdVar36" * (cast_expression "(debug_type *)pdVar36" ( (type_descriptor "debug_type *" type_identifier (abstract_pointer_declarator "*" *)) ) identifier))) ))) )) ;) })))) })) }))) (break_statement "break;" break ;)) (case_statement "case DEBUG_KIND_POINTER:" case identifier :) (case_statement "case DEBUG_KIND_REFERENCE:" case identifier :) (case_statement "case DEBUG_KIND_CONST:" case identifier :) (case_statement "case DEBUG_KIND_VOLATILE:\n    uVar23 = debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer);\n    pdVar24 = top.next;\n    break;" case identifier : (expression_statement "uVar23 = debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer);" (assignment_expression "uVar23 = debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer)" identifier = (call_expression "debug_type_samep(info,(t1->u).kpointer,(t2->u).kpointer)" identifier (argument_list "(info,(t1->u).kpointer,(t2->u).kpointer)" ( identifier , (field_expression "(t1->u).kpointer" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) , (field_expression "(t2->u).kpointer" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )))) ;) (expression_statement "pdVar24 = top.next;" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) ;) (break_statement "break;" break ;)) (case_statement "case DEBUG_KIND_FUNCTION:\n    uVar23 = 0;\n    if (((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs) break;\n    bVar21 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    if (bVar21 != 0) {\n      ppdVar29 = ((t1->u).kfunction)->arg_types;\n      ppdVar33 = ((t2->u).kfunction)->arg_types;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;" case identifier : (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if (((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs) break;" if (parenthesized_expression "(((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs)" ( (binary_expression "((t1->u).kfunction)->varargs != ((t2->u).kfunction)->varargs" (field_expression "((t1->u).kfunction)->varargs" (parenthesized_expression "((t1->u).kfunction)" ( (field_expression "(t1->u).kfunction" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) != (field_expression "((t2->u).kfunction)->varargs" (parenthesized_expression "((t2->u).kfunction)" ( (field_expression "(t2->u).kfunction" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) )) (break_statement "break;" break ;)) (expression_statement "bVar21 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );" (assignment_expression "bVar21 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             )" identifier = (call_expression "debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             )" identifier (argument_list "(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             )" ( identifier , (field_expression "((t1->u).kfunction)->return_type" (parenthesized_expression "((t1->u).kfunction)" ( (field_expression "(t1->u).kfunction" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) , (field_expression "((t2->u).kfunction)->return_type" (parenthesized_expression "((t2->u).kfunction)" ( (field_expression "(t2->u).kfunction" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )))) ;) (if_statement "if (bVar21 != 0) {\n      ppdVar29 = ((t1->u).kfunction)->arg_types;\n      ppdVar33 = ((t2->u).kfunction)->arg_types;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" if (parenthesized_expression "(bVar21 != 0)" ( (binary_expression "bVar21 != 0" identifier != number_literal) )) (compound_statement "{\n      ppdVar29 = ((t1->u).kfunction)->arg_types;\n      ppdVar33 = ((t2->u).kfunction)->arg_types;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" { (expression_statement "ppdVar29 = ((t1->u).kfunction)->arg_types;" (assignment_expression "ppdVar29 = ((t1->u).kfunction)->arg_types" identifier = (field_expression "((t1->u).kfunction)->arg_types" (parenthesized_expression "((t1->u).kfunction)" ( (field_expression "(t1->u).kfunction" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (expression_statement "ppdVar33 = ((t2->u).kfunction)->arg_types;" (assignment_expression "ppdVar33 = ((t2->u).kfunction)->arg_types" identifier = (field_expression "((t2->u).kfunction)->arg_types" (parenthesized_expression "((t2->u).kfunction)" ( (field_expression "(t2->u).kfunction" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (if_statement "if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }" if (parenthesized_expression "((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0))" ( (binary_expression "(ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)" (parenthesized_expression "(ppdVar29 == (debug_type_conflict *)0x0)" ( (binary_expression "ppdVar29 == (debug_type_conflict *)0x0" identifier == (cast_expression "(debug_type_conflict *)0x0" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) == (parenthesized_expression "(ppdVar33 == (debug_type_conflict *)0x0)" ( (binary_expression "ppdVar33 == (debug_type_conflict *)0x0" identifier == (cast_expression "(debug_type_conflict *)0x0" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }" { (if_statement "if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;" if (parenthesized_expression "(ppdVar29 == (debug_type_conflict *)0x0)" ( (binary_expression "ppdVar29 == (debug_type_conflict *)0x0" identifier == (cast_expression "(debug_type_conflict *)0x0" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b941;" goto statement_identifier ;)) (while_statement "while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }" { (if_statement "if (*ppdVar29 == (debug_type_s *)0x0) break;" if (parenthesized_expression "(*ppdVar29 == (debug_type_s *)0x0)" ( (binary_expression "*ppdVar29 == (debug_type_s *)0x0" (pointer_expression "*ppdVar29" * identifier) == (cast_expression "(debug_type_s *)0x0" ( (type_descriptor "debug_type_s *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(*ppdVar33 == (debug_type_s *)0x0)" ( (binary_expression "*ppdVar33 == (debug_type_s *)0x0" (pointer_expression "*ppdVar33" * identifier) == (cast_expression "(debug_type_s *)0x0" ( (type_descriptor "debug_type_s *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);" (assignment_expression "bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33)" identifier = (call_expression "debug_type_samep(info,*ppdVar29,*ppdVar33)" identifier (argument_list "(info,*ppdVar29,*ppdVar33)" ( identifier , (pointer_expression "*ppdVar29" * identifier) , (pointer_expression "*ppdVar33" * identifier) )))) ;) (if_statement "if (bVar21 == 0) goto LAB_0012b92c;" if (parenthesized_expression "(bVar21 == 0)" ( (binary_expression "bVar21 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012b92c;" goto statement_identifier ;)) (expression_statement "ppdVar29 = ppdVar29 + 1;" (assignment_expression "ppdVar29 = ppdVar29 + 1" identifier = (binary_expression "ppdVar29 + 1" identifier + number_literal)) ;) (expression_statement "ppdVar33 = ppdVar33 + 1;" (assignment_expression "ppdVar33 = ppdVar33 + 1" identifier = (binary_expression "ppdVar33 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_0012b936;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (case_statement "case DEBUG_KIND_RANGE:\n    pdVar27 = (debug_array_type *)(t2->u).krange;\n    pdVar26 = (debug_array_type *)(t1->u).krange;\n    uVar23 = 0;\n    if ((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)) break;\n    goto LAB_0012b729;" case identifier : (expression_statement "pdVar27 = (debug_array_type *)(t2->u).krange;" (assignment_expression "pdVar27 = (debug_array_type *)(t2->u).krange" identifier = (cast_expression "(debug_array_type *)(t2->u).krange" ( (type_descriptor "debug_array_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(t2->u).krange" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pdVar26 = (debug_array_type *)(t1->u).krange;" (assignment_expression "pdVar26 = (debug_array_type *)(t1->u).krange" identifier = (cast_expression "(debug_array_type *)(t1->u).krange" ( (type_descriptor "debug_array_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(t1->u).krange" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if ((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)) break;" if (parenthesized_expression "((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower))" ( (binary_expression "(pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)" (parenthesized_expression "(pdVar26->range_type != pdVar27->range_type)" ( (binary_expression "pdVar26->range_type != pdVar27->range_type" (field_expression "pdVar26->range_type" identifier -> field_identifier) != (field_expression "pdVar27->range_type" identifier -> field_identifier)) )) || (parenthesized_expression "(pdVar26->lower != pdVar27->lower)" ( (binary_expression "pdVar26->lower != pdVar27->lower" (field_expression "pdVar26->lower" identifier -> field_identifier) != (field_expression "pdVar27->lower" identifier -> field_identifier)) ))) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0012b729;" goto statement_identifier ;)) (case_statement "case DEBUG_KIND_ARRAY:\n    pdVar27 = (t2->u).karray;\n    pdVar26 = (t1->u).karray;\n    uVar23 = 0;\n    if (((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||\n       (pdVar26->stringp != pdVar27->stringp)) break;\n    goto LAB_0012b729;" case identifier : (expression_statement "pdVar27 = (t2->u).karray;" (assignment_expression "pdVar27 = (t2->u).karray" identifier = (field_expression "(t2->u).karray" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "pdVar26 = (t1->u).karray;" (assignment_expression "pdVar26 = (t1->u).karray" identifier = (field_expression "(t1->u).karray" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier)) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if (((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||\n       (pdVar26->stringp != pdVar27->stringp)) break;" if (parenthesized_expression "(((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||\n       (pdVar26->stringp != pdVar27->stringp))" ( (binary_expression "((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||\n       (pdVar26->stringp != pdVar27->stringp)" (parenthesized_expression "((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper))" ( (binary_expression "(pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)" (parenthesized_expression "(pdVar26->lower != pdVar27->lower)" ( (binary_expression "pdVar26->lower != pdVar27->lower" (field_expression "pdVar26->lower" identifier -> field_identifier) != (field_expression "pdVar27->lower" identifier -> field_identifier)) )) || (parenthesized_expression "(pdVar26->upper != pdVar27->upper)" ( (binary_expression "pdVar26->upper != pdVar27->upper" (field_expression "pdVar26->upper" identifier -> field_identifier) != (field_expression "pdVar27->upper" identifier -> field_identifier)) ))) )) || (parenthesized_expression "(pdVar26->stringp != pdVar27->stringp)" ( (binary_expression "pdVar26->stringp != pdVar27->stringp" (field_expression "pdVar26->stringp" identifier -> field_identifier) != (field_expression "pdVar27->stringp" identifier -> field_identifier)) ))) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0012b729;" goto statement_identifier ;)) (case_statement "case DEBUG_KIND_SET:\n    pdVar27 = (debug_array_type *)(t2->u).kset;\n    pdVar26 = (debug_array_type *)(t1->u).kset;\n    uVar23 = 0;\n    if (*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type) break;\nLAB_0012b729:\n    pdVar25 = pdVar27->element_type;\n    pdVar30 = pdVar26->element_type;\nLAB_0012b6fe:\n    bVar21 = debug_type_samep(info,pdVar30,pdVar25);\n    uVar23 = (uint)(bVar21 != 0);\n    pdVar24 = top.next;\n    break;" case identifier : (expression_statement "pdVar27 = (debug_array_type *)(t2->u).kset;" (assignment_expression "pdVar27 = (debug_array_type *)(t2->u).kset" identifier = (cast_expression "(debug_array_type *)(t2->u).kset" ( (type_descriptor "debug_array_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(t2->u).kset" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "pdVar26 = (debug_array_type *)(t1->u).kset;" (assignment_expression "pdVar26 = (debug_array_type *)(t1->u).kset" identifier = (cast_expression "(debug_array_type *)(t1->u).kset" ( (type_descriptor "debug_array_type *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "(t1->u).kset" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier))) ;) (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type) break;" if (parenthesized_expression "(*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type)" ( (binary_expression "*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type" (pointer_expression "*(int *)&pdVar26->range_type" * (cast_expression "(int *)&pdVar26->range_type" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar26->range_type" & (field_expression "pdVar26->range_type" identifier -> field_identifier)))) != (pointer_expression "*(int *)&pdVar27->range_type" * (cast_expression "(int *)&pdVar27->range_type" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "&pdVar27->range_type" & (field_expression "pdVar27->range_type" identifier -> field_identifier))))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0012b729:\n    pdVar25 = pdVar27->element_type;" statement_identifier : (expression_statement "pdVar25 = pdVar27->element_type;" (assignment_expression "pdVar25 = pdVar27->element_type" identifier = (field_expression "pdVar27->element_type" identifier -> field_identifier)) ;)) (expression_statement "pdVar30 = pdVar26->element_type;" (assignment_expression "pdVar30 = pdVar26->element_type" identifier = (field_expression "pdVar26->element_type" identifier -> field_identifier)) ;) (labeled_statement "LAB_0012b6fe:\n    bVar21 = debug_type_samep(info,pdVar30,pdVar25);" statement_identifier : (expression_statement "bVar21 = debug_type_samep(info,pdVar30,pdVar25);" (assignment_expression "bVar21 = debug_type_samep(info,pdVar30,pdVar25)" identifier = (call_expression "debug_type_samep(info,pdVar30,pdVar25)" identifier (argument_list "(info,pdVar30,pdVar25)" ( identifier , identifier , identifier )))) ;)) (expression_statement "uVar23 = (uint)(bVar21 != 0);" (assignment_expression "uVar23 = (uint)(bVar21 != 0)" identifier = (call_expression "(uint)(bVar21 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(bVar21 != 0)" ( (binary_expression "bVar21 != 0" identifier != number_literal) )))) ;) (expression_statement "pdVar24 = top.next;" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) ;) (break_statement "break;" break ;)) (case_statement "case DEBUG_KIND_OFFSET:\n    uVar23 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );\n    pdVar24 = top.next;\n    if (uVar23 == 0) break;\n    pdVar25 = ((t2->u).kpointer)->pointer;\n    pdVar30 = ((t1->u).kpointer)->pointer;\n    goto LAB_0012b6fe;" case identifier : (expression_statement "uVar23 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             );" (assignment_expression "uVar23 = debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             )" identifier = (call_expression "debug_type_samep(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             )" identifier (argument_list "(info,((t1->u).kfunction)->return_type,((t2->u).kfunction)->return_type\n                             )" ( identifier , (field_expression "((t1->u).kfunction)->return_type" (parenthesized_expression "((t1->u).kfunction)" ( (field_expression "(t1->u).kfunction" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) , (field_expression "((t2->u).kfunction)->return_type" (parenthesized_expression "((t2->u).kfunction)" ( (field_expression "(t2->u).kfunction" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )))) ;) (expression_statement "pdVar24 = top.next;" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) ;) (if_statement "if (uVar23 == 0) break;" if (parenthesized_expression "(uVar23 == 0)" ( (binary_expression "uVar23 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "pdVar25 = ((t2->u).kpointer)->pointer;" (assignment_expression "pdVar25 = ((t2->u).kpointer)->pointer" identifier = (field_expression "((t2->u).kpointer)->pointer" (parenthesized_expression "((t2->u).kpointer)" ( (field_expression "(t2->u).kpointer" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (expression_statement "pdVar30 = ((t1->u).kpointer)->pointer;" (assignment_expression "pdVar30 = ((t1->u).kpointer)->pointer" identifier = (field_expression "((t1->u).kpointer)->pointer" (parenthesized_expression "((t1->u).kpointer)" ( (field_expression "(t1->u).kpointer" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) ;) (goto_statement "goto LAB_0012b6fe;" goto statement_identifier ;)) (case_statement "case DEBUG_KIND_METHOD:\n    uVar23 = 0;\n    if ((((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||\n       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0)) break;\n    bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer);\n    if (bVar21 != 0) {\n      ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;\n      ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar23 = 0;\n    pdVar24 = top.next;\n    break;" case identifier : (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;) (if_statement "if ((((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||\n       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0)) break;" if (parenthesized_expression "((((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||\n       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0))" ( (binary_expression "(((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs) ||\n       (uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0)" (parenthesized_expression "(((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs)" ( (binary_expression "((t1->u).kmethod)->varargs != ((t2->u).kmethod)->varargs" (field_expression "((t1->u).kmethod)->varargs" (parenthesized_expression "((t1->u).kmethod)" ( (field_expression "(t1->u).kmethod" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) != (field_expression "((t2->u).kmethod)->varargs" (parenthesized_expression "((t2->u).kmethod)" ( (field_expression "(t2->u).kmethod" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier)) )) || (parenthesized_expression "(uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0)" ( (comma_expression "uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 ), pdVar24 = top.next, uVar23 == 0" (assignment_expression "uVar23 = debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 )" identifier = (call_expression "debug_type_samep(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 )" identifier (argument_list "(info,((t1->u).kmethod)->return_type,((t2->u).kmethod)->return_type\n                                 )" ( identifier , (field_expression "((t1->u).kmethod)->return_type" (parenthesized_expression "((t1->u).kmethod)" ( (field_expression "(t1->u).kmethod" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) , (field_expression "((t2->u).kmethod)->return_type" (parenthesized_expression "((t2->u).kmethod)" ( (field_expression "(t2->u).kmethod" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )))) , (comma_expression "pdVar24 = top.next, uVar23 == 0" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) , (binary_expression "uVar23 == 0" identifier == number_literal))) ))) )) (break_statement "break;" break ;)) (expression_statement "bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer);" (assignment_expression "bVar21 = debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer)" identifier = (call_expression "debug_type_samep(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer)" identifier (argument_list "(info,((t1->u).kpointer)->pointer,((t2->u).kpointer)->pointer)" ( identifier , (field_expression "((t1->u).kpointer)->pointer" (parenthesized_expression "((t1->u).kpointer)" ( (field_expression "(t1->u).kpointer" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) , (field_expression "((t2->u).kpointer)->pointer" (parenthesized_expression "((t2->u).kpointer)" ( (field_expression "(t2->u).kpointer" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier) )))) ;) (if_statement "if (bVar21 != 0) {\n      ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;\n      ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" if (parenthesized_expression "(bVar21 != 0)" ( (binary_expression "bVar21 != 0" identifier != number_literal) )) (compound_statement "{\n      ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;\n      ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;\n      if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" { (expression_statement "ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses;" (assignment_expression "ppdVar29 = (debug_type_conflict *)((t1->u).kclass)->baseclasses" identifier = (cast_expression "(debug_type_conflict *)((t1->u).kclass)->baseclasses" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((t1->u).kclass)->baseclasses" (parenthesized_expression "((t1->u).kclass)" ( (field_expression "(t1->u).kclass" (parenthesized_expression "(t1->u)" ( (field_expression "t1->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier))) ;) (expression_statement "ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses;" (assignment_expression "ppdVar33 = (debug_type_conflict *)((t2->u).kclass)->baseclasses" identifier = (cast_expression "(debug_type_conflict *)((t2->u).kclass)->baseclasses" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) (field_expression "((t2->u).kclass)->baseclasses" (parenthesized_expression "((t2->u).kclass)" ( (field_expression "(t2->u).kclass" (parenthesized_expression "(t2->u)" ( (field_expression "t2->u" identifier -> field_identifier) )) . field_identifier) )) -> field_identifier))) ;) (if_statement "if ((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)) {\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }" if (parenthesized_expression "((ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0))" ( (binary_expression "(ppdVar29 == (debug_type_conflict *)0x0) == (ppdVar33 == (debug_type_conflict *)0x0)" (parenthesized_expression "(ppdVar29 == (debug_type_conflict *)0x0)" ( (binary_expression "ppdVar29 == (debug_type_conflict *)0x0" identifier == (cast_expression "(debug_type_conflict *)0x0" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) == (parenthesized_expression "(ppdVar33 == (debug_type_conflict *)0x0)" ( (binary_expression "ppdVar33 == (debug_type_conflict *)0x0" identifier == (cast_expression "(debug_type_conflict *)0x0" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;\n        while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }\n        goto LAB_0012b936;\n      }" { (if_statement "if (ppdVar29 == (debug_type_conflict *)0x0) goto LAB_0012b941;" if (parenthesized_expression "(ppdVar29 == (debug_type_conflict *)0x0)" ( (binary_expression "ppdVar29 == (debug_type_conflict *)0x0" identifier == (cast_expression "(debug_type_conflict *)0x0" ( (type_descriptor "debug_type_conflict *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b941;" goto statement_identifier ;)) (while_statement "while( true ) {\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n          if (*ppdVar29 == (debug_type_s *)0x0) break;\n          if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;\n          bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);\n          if (bVar21 == 0) goto LAB_0012b92c;\n          ppdVar29 = ppdVar29 + 1;\n          ppdVar33 = ppdVar33 + 1;\n        }" { (if_statement "if (*ppdVar29 == (debug_type_s *)0x0) break;" if (parenthesized_expression "(*ppdVar29 == (debug_type_s *)0x0)" ( (binary_expression "*ppdVar29 == (debug_type_s *)0x0" (pointer_expression "*ppdVar29" * identifier) == (cast_expression "(debug_type_s *)0x0" ( (type_descriptor "debug_type_s *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (*ppdVar33 == (debug_type_s *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(*ppdVar33 == (debug_type_s *)0x0)" ( (binary_expression "*ppdVar33 == (debug_type_s *)0x0" (pointer_expression "*ppdVar33" * identifier) == (cast_expression "(debug_type_s *)0x0" ( (type_descriptor "debug_type_s *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33);" (assignment_expression "bVar21 = debug_type_samep(info,*ppdVar29,*ppdVar33)" identifier = (call_expression "debug_type_samep(info,*ppdVar29,*ppdVar33)" identifier (argument_list "(info,*ppdVar29,*ppdVar33)" ( identifier , (pointer_expression "*ppdVar29" * identifier) , (pointer_expression "*ppdVar33" * identifier) )))) ;) (if_statement "if (bVar21 == 0) goto LAB_0012b92c;" if (parenthesized_expression "(bVar21 == 0)" ( (binary_expression "bVar21 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012b92c;" goto statement_identifier ;)) (expression_statement "ppdVar29 = ppdVar29 + 1;" (assignment_expression "ppdVar29 = ppdVar29 + 1" identifier = (binary_expression "ppdVar29 + 1" identifier + number_literal)) ;) (expression_statement "ppdVar33 = ppdVar33 + 1;" (assignment_expression "ppdVar33 = ppdVar33 + 1" identifier = (binary_expression "ppdVar33 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_0012b936;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0012b7fc:\n    uVar23 = 0;" statement_identifier : (expression_statement "uVar23 = 0;" (assignment_expression "uVar23 = 0" identifier = number_literal) ;)) (expression_statement "pdVar24 = top.next;" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) ;) (break_statement "break;" break ;)) (case_statement "case DEBUG_KIND_NAMED:" case identifier :) (case_statement "case DEBUG_KIND_TAGGED:\n    goto switchD_0012b468_caseD_16;" case identifier : (goto_statement "goto switchD_0012b468_caseD_16;" goto statement_identifier ;)) (case_statement "default:\n                    /* WARNING: Subroutine does not return */\n    abort();" default : comment (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) (labeled_statement "LAB_0012b4be:\n  info->compare_list = pdVar24;" statement_identifier : (expression_statement "info->compare_list = pdVar24;" (assignment_expression "info->compare_list = pdVar24" (field_expression "info->compare_list" identifier -> field_identifier) = identifier) ;)) (return_statement "return uVar23;" return identifier ;) (labeled_statement "LAB_0012b92c:\n  if (*ppdVar29 == (debug_type_conflict)0x0) {\nLAB_0012b936:\n    if (*ppdVar33 == (debug_type_conflict)0x0) {\nLAB_0012b941:\n      uVar23 = 1;\n      pdVar24 = top.next;\n      goto LAB_0012b4be;\n    }\n  }" statement_identifier : (if_statement "if (*ppdVar29 == (debug_type_conflict)0x0) {\nLAB_0012b936:\n    if (*ppdVar33 == (debug_type_conflict)0x0) {\nLAB_0012b941:\n      uVar23 = 1;\n      pdVar24 = top.next;\n      goto LAB_0012b4be;\n    }\n  }" if (parenthesized_expression "(*ppdVar29 == (debug_type_conflict)0x0)" ( (binary_expression "*ppdVar29 == (debug_type_conflict)0x0" (pointer_expression "*ppdVar29" * identifier) == (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_0012b936:\n    if (*ppdVar33 == (debug_type_conflict)0x0) {\nLAB_0012b941:\n      uVar23 = 1;\n      pdVar24 = top.next;\n      goto LAB_0012b4be;\n    }\n  }" { (labeled_statement "LAB_0012b936:\n    if (*ppdVar33 == (debug_type_conflict)0x0) {\nLAB_0012b941:\n      uVar23 = 1;\n      pdVar24 = top.next;\n      goto LAB_0012b4be;\n    }" statement_identifier : (if_statement "if (*ppdVar33 == (debug_type_conflict)0x0) {\nLAB_0012b941:\n      uVar23 = 1;\n      pdVar24 = top.next;\n      goto LAB_0012b4be;\n    }" if (parenthesized_expression "(*ppdVar33 == (debug_type_conflict)0x0)" ( (binary_expression "*ppdVar33 == (debug_type_conflict)0x0" (pointer_expression "*ppdVar33" * identifier) == (cast_expression "(debug_type_conflict)0x0" ( (type_descriptor "debug_type_conflict" type_identifier) ) number_literal)) )) (compound_statement "{\nLAB_0012b941:\n      uVar23 = 1;\n      pdVar24 = top.next;\n      goto LAB_0012b4be;\n    }" { (labeled_statement "LAB_0012b941:\n      uVar23 = 1;" statement_identifier : (expression_statement "uVar23 = 1;" (assignment_expression "uVar23 = 1" identifier = number_literal) ;)) (expression_statement "pdVar24 = top.next;" (assignment_expression "pdVar24 = top.next" identifier = (field_expression "top.next" identifier . field_identifier)) ;) (goto_statement "goto LAB_0012b4be;" goto statement_identifier ;) }))) }))) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;) })))
(translation_unit "uint FUN_0012b360(long param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  undefined8 *puVar2;\n  code *pcVar3;\n  uint uVar4;\n  int iVar5;\n  long *plVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  long *plVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  undefined8 *puVar13;\n  char *pcVar14;\n  long lVar15;\n  char *pcVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  long *local_58;\n  uint *local_50;\n  uint *local_48;\n  \n  while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  if (param_2 == param_3) {\n    return 1;\n  }\n  local_50 = param_2;\n  local_48 = param_3;\n  if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }\n  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }\n  if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }\n  if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }\n  if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }\n  plVar6 = *(long **)(param_1 + 0x58);\n  local_58 = plVar6;\n  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }\n  *(long ***)(param_1 + 0x58) = &local_58;\n  plVar6 = local_58;\n  switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    \n    abort();\n  }\nLAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;\n  return uVar4;\nLAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}\n\n" (function_definition "uint FUN_0012b360(long param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  undefined8 *puVar2;\n  code *pcVar3;\n  uint uVar4;\n  int iVar5;\n  long *plVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  long *plVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  undefined8 *puVar13;\n  char *pcVar14;\n  long lVar15;\n  char *pcVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  long *local_58;\n  uint *local_50;\n  uint *local_48;\n  \n  while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  if (param_2 == param_3) {\n    return 1;\n  }\n  local_50 = param_2;\n  local_48 = param_3;\n  if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }\n  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }\n  if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }\n  if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }\n  if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }\n  plVar6 = *(long **)(param_1 + 0x58);\n  local_58 = plVar6;\n  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }\n  *(long ***)(param_1 + 0x58) = &local_58;\n  plVar6 = local_58;\n  switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    \n    abort();\n  }\nLAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;\n  return uVar4;\nLAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}" type_identifier (function_declarator "FUN_0012b360(long param_1,uint *param_2,uint *param_3)" identifier (parameter_list "(long param_1,uint *param_2,uint *param_3)" ( (parameter_declaration "long param_1" (sized_type_specifier "long" long) identifier) , (parameter_declaration "uint *param_2" type_identifier (pointer_declarator "*param_2" * identifier)) , (parameter_declaration "uint *param_3" type_identifier (pointer_declarator "*param_3" * identifier)) ))) (compound_statement "{\n  uint uVar1;\n  undefined8 *puVar2;\n  code *pcVar3;\n  uint uVar4;\n  int iVar5;\n  long *plVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  long *plVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  undefined8 *puVar13;\n  char *pcVar14;\n  long lVar15;\n  char *pcVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  long *local_58;\n  uint *local_50;\n  uint *local_48;\n  \n  while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  if (param_2 == param_3) {\n    return 1;\n  }\n  local_50 = param_2;\n  local_48 = param_3;\n  if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }\n  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }\n  if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }\n  if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }\n  if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }\n  plVar6 = *(long **)(param_1 + 0x58);\n  local_58 = plVar6;\n  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }\n  *(long ***)(param_1 + 0x58) = &local_58;\n  plVar6 = local_58;\n  switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    \n    abort();\n  }\nLAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;\n  return uVar4;\nLAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}" { (declaration "uint uVar1;" type_identifier identifier ;) (declaration "undefined8 *puVar2;" type_identifier (pointer_declarator "*puVar2" * identifier) ;) (declaration "code *pcVar3;" type_identifier (pointer_declarator "*pcVar3" * identifier) ;) (declaration "uint uVar4;" type_identifier identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "long *plVar6;" (sized_type_specifier "long" long) (pointer_declarator "*plVar6" * identifier) ;) (declaration "undefined8 uVar7;" type_identifier identifier ;) (declaration "undefined8 uVar8;" type_identifier identifier ;) (declaration "long *plVar9;" (sized_type_specifier "long" long) (pointer_declarator "*plVar9" * identifier) ;) (declaration "long lVar10;" (sized_type_specifier "long" long) identifier ;) (declaration "long *plVar11;" (sized_type_specifier "long" long) (pointer_declarator "*plVar11" * identifier) ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "undefined8 *puVar13;" type_identifier (pointer_declarator "*puVar13" * identifier) ;) (declaration "char *pcVar14;" primitive_type (pointer_declarator "*pcVar14" * identifier) ;) (declaration "long lVar15;" (sized_type_specifier "long" long) identifier ;) (declaration "char *pcVar16;" primitive_type (pointer_declarator "*pcVar16" * identifier) ;) (declaration "undefined8 *puVar17;" type_identifier (pointer_declarator "*puVar17" * identifier) ;) (declaration "long *plVar18;" (sized_type_specifier "long" long) (pointer_declarator "*plVar18" * identifier) ;) (declaration "undefined8 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "long *local_58;" (sized_type_specifier "long" long) (pointer_declarator "*local_58" * identifier) ;) (declaration "uint *local_50;" type_identifier (pointer_declarator "*local_50" * identifier) ;) (declaration "uint *local_48;" type_identifier (pointer_declarator "*local_48" * identifier) ;) (while_statement "while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }" while (parenthesized_expression "(uVar4 = *param_2, uVar4 == 1)" ( (comma_expression "uVar4 = *param_2, uVar4 == 1" (assignment_expression "uVar4 = *param_2" identifier = (pointer_expression "*param_2" * identifier)) , (binary_expression "uVar4 == 1" identifier == number_literal)) )) (compound_statement "{\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }" { (expression_statement "param_2 = *(uint **)**(undefined8 **)(param_2 + 4);" (assignment_expression "param_2 = *(uint **)**(undefined8 **)(param_2 + 4)" identifier = (pointer_expression "*(uint **)**(undefined8 **)(param_2 + 4)" * (cast_expression "(uint **)**(undefined8 **)(param_2 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "**(undefined8 **)(param_2 + 4)" * (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))))))) ;) (if_statement "if (param_2 == (uint *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(param_2 == (uint *)0x0)" ( (binary_expression "param_2 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (while_statement "while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }" while (parenthesized_expression "(uVar1 = *param_3, uVar1 == 1)" ( (comma_expression "uVar1 = *param_3, uVar1 == 1" (assignment_expression "uVar1 = *param_3" identifier = (pointer_expression "*param_3" * identifier)) , (binary_expression "uVar1 == 1" identifier == number_literal)) )) (compound_statement "{\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }" { (expression_statement "param_3 = *(uint **)**(undefined8 **)(param_3 + 4);" (assignment_expression "param_3 = *(uint **)**(undefined8 **)(param_3 + 4)" identifier = (pointer_expression "*(uint **)**(undefined8 **)(param_3 + 4)" * (cast_expression "(uint **)**(undefined8 **)(param_3 + 4)" ( (type_descriptor "uint **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (pointer_expression "**(undefined8 **)(param_3 + 4)" * (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))))))) ;) (if_statement "if (param_3 == (uint *)0x0) {\n      return 0;\n    }" if (parenthesized_expression "(param_3 == (uint *)0x0)" ( (binary_expression "param_3 == (uint *)0x0" identifier == (cast_expression "(uint *)0x0" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) })) (if_statement "if (param_2 == param_3) {\n    return 1;\n  }" if (parenthesized_expression "(param_2 == param_3)" ( (binary_expression "param_2 == param_3" identifier == identifier) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" identifier = identifier) ;) (expression_statement "local_48 = param_3;" (assignment_expression "local_48 = param_3" identifier = identifier) ;) (if_statement "if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }" if (parenthesized_expression "(uVar4 == 0x16)" ( (binary_expression "uVar4 == 0x16" identifier == number_literal) )) (compound_statement "{\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }" { (if_statement "if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }" if (parenthesized_expression "(uVar1 == 0x17)" ( (binary_expression "uVar1 == 0x17" identifier == number_literal) )) (compound_statement "{\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }" { (expression_statement "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);" (assignment_expression "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3)" identifier = (call_expression "FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3)" identifier (argument_list "(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3)" ( identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 4) + 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 4) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" ( (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) )))) , identifier )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }" if (parenthesized_expression "(*(long *)param_2 != *(long *)param_3)" ( (binary_expression "*(long *)param_2 != *(long *)param_3" (pointer_expression "*(long *)param_2" * (cast_expression "(long *)param_2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(long *)param_3" * (cast_expression "(long *)param_3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n      return 0;\n    }" { (return_statement "return 0;" return number_literal ;) })) (expression_statement "plVar6 = *(long **)(param_1 + 0x58);" (assignment_expression "plVar6 = *(long **)(param_1 + 0x58)" identifier = (pointer_expression "*(long **)(param_1 + 0x58)" * (cast_expression "(long **)(param_1 + 0x58)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_58 = plVar6;" (assignment_expression "local_58 = plVar6" identifier = identifier) ;) (if_statement "if (plVar6 != (long *)0x0) goto LAB_0012b498;" if (parenthesized_expression "(plVar6 != (long *)0x0)" ( (binary_expression "plVar6 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b498;" goto statement_identifier ;)) (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 "*(long ***)(param_1 + 0x58) = &local_58;" (assignment_expression "*(long ***)(param_1 + 0x58) = &local_58" (pointer_expression "*(long ***)(param_1 + 0x58)" * (cast_expression "(long ***)(param_1 + 0x58)" ( (type_descriptor "long ***" (sized_type_specifier "long" long) (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = (pointer_expression "&local_58" & identifier)) ;) (labeled_statement "switchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);" statement_identifier : (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;)) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));" (assignment_expression "iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8))" identifier = (call_expression "strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8))" identifier (argument_list "(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8))" ( (pointer_expression "*(char **)(*plVar9 + 8)" * (cast_expression "(char **)(*plVar9 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar9 + 8)" ( (binary_expression "*plVar9 + 8" (pointer_expression "*plVar9" * identifier) + number_literal) )))) , (pointer_expression "*(char **)(*plVar11 + 8)" * (cast_expression "(char **)(*plVar11 + 8)" ( (type_descriptor "char **" primitive_type (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*plVar11 + 8)" ( (binary_expression "*plVar11 + 8" (pointer_expression "*plVar11" * identifier) + number_literal) )))) )))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (iVar5 != 0) goto LAB_0012b4be;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b4be;" goto statement_identifier ;)) (expression_statement "lVar10 = plVar11[1];" (assignment_expression "lVar10 = plVar11[1]" identifier = (subscript_expression "plVar11[1]" identifier [ number_literal ])) ;) (expression_statement "lVar15 = plVar9[1];" (assignment_expression "lVar15 = plVar9[1]" identifier = (subscript_expression "plVar9[1]" identifier [ number_literal ])) ;) (goto_statement "goto LAB_0012b6fe;" goto statement_identifier ;) })) (if_statement "if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }" if (parenthesized_expression "((uVar1 == 0x16) && (uVar4 == 0x17))" ( (binary_expression "(uVar1 == 0x16) && (uVar4 == 0x17)" (parenthesized_expression "(uVar1 == 0x16)" ( (binary_expression "uVar1 == 0x16" identifier == number_literal) )) && (parenthesized_expression "(uVar4 == 0x17)" ( (binary_expression "uVar4 == 0x17" identifier == number_literal) ))) )) (compound_statement "{\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }" { (expression_statement "uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));" (assignment_expression "uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8))" identifier = (call_expression "FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8))" identifier (argument_list "(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8))" ( identifier , identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_3 + 4) + 8)" * (cast_expression "(undefined8 *)(*(long *)(param_3 + 4) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" ( (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) )))) )))) ;) (return_statement "return uVar4;" return identifier ;) })) (if_statement "if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }" if (parenthesized_expression "(*(long *)param_2 != *(long *)param_3)" ( (binary_expression "*(long *)param_2 != *(long *)param_3" (pointer_expression "*(long *)param_2" * (cast_expression "(long *)param_2" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier)) != (pointer_expression "*(long *)param_3" * (cast_expression "(long *)param_3" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) identifier))) )) (compound_statement "{\n    return 0;\n  }" { (return_statement "return 0;" return number_literal ;) })) (if_statement "if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }" if (parenthesized_expression "(uVar4 == 3)" ( (binary_expression "uVar4 == 3" identifier == number_literal) )) (compound_statement "{\n    return (uint)(param_2[4] == param_3[4]);\n  }" { (return_statement "return (uint)(param_2[4] == param_3[4]);" return (call_expression "(uint)(param_2[4] == param_3[4])" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(param_2[4] == param_3[4])" ( (binary_expression "param_2[4] == param_3[4]" (subscript_expression "param_2[4]" identifier [ number_literal ]) == (subscript_expression "param_3[4]" identifier [ number_literal ])) ))) ;) })) (if_statement "if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }" if (parenthesized_expression "(uVar4 < 4)" ( (binary_expression "uVar4 < 4" identifier < number_literal) )) (compound_statement "{\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }" { (if_statement "if (uVar4 == 2) {\n      return 1;\n    }" if (parenthesized_expression "(uVar4 == 2)" ( (binary_expression "uVar4 == 2" identifier == number_literal) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) })) }) (else_clause "else if (uVar4 < 7) {\n    return 1;\n  }" else (if_statement "if (uVar4 < 7) {\n    return 1;\n  }" if (parenthesized_expression "(uVar4 < 7)" ( (binary_expression "uVar4 < 7" identifier < number_literal) )) (compound_statement "{\n    return 1;\n  }" { (return_statement "return 1;" return number_literal ;) })))) (expression_statement "plVar6 = *(long **)(param_1 + 0x58);" (assignment_expression "plVar6 = *(long **)(param_1 + 0x58)" identifier = (pointer_expression "*(long **)(param_1 + 0x58)" * (cast_expression "(long **)(param_1 + 0x58)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) ))))) ;) (expression_statement "local_58 = plVar6;" (assignment_expression "local_58 = plVar6" identifier = identifier) ;) (for_statement "for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }" for ( ; (binary_expression "plVar6 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ; (assignment_expression "plVar6 = (long *)*plVar6" identifier = (cast_expression "(long *)*plVar6" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar6" * identifier))) ) (compound_statement "{\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }" { (labeled_statement "LAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }" statement_identifier : (if_statement "if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }" if (parenthesized_expression "((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2]))" ( (binary_expression "(param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])" (parenthesized_expression "(param_2 == (uint *)plVar6[1])" ( (binary_expression "param_2 == (uint *)plVar6[1]" identifier == (cast_expression "(uint *)plVar6[1]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar6[1]" identifier [ number_literal ]))) )) && (parenthesized_expression "(param_3 == (uint *)plVar6[2])" ( (binary_expression "param_3 == (uint *)plVar6[2]" identifier == (cast_expression "(uint *)plVar6[2]" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar6[2]" identifier [ number_literal ]))) ))) )) (compound_statement "{\n      return 1;\n    }" { (return_statement "return 1;" return number_literal ;) }))) })) (expression_statement "*(long ***)(param_1 + 0x58) = &local_58;" (assignment_expression "*(long ***)(param_1 + 0x58) = &local_58" (pointer_expression "*(long ***)(param_1 + 0x58)" * (cast_expression "(long ***)(param_1 + 0x58)" ( (type_descriptor "long ***" (sized_type_specifier "long" long) (abstract_pointer_declarator "***" * (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *)))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = (pointer_expression "&local_58" & identifier)) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (switch_statement "switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    \n    abort();\n  }" switch (parenthesized_expression "(uVar4)" ( identifier )) (compound_statement "{\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    \n    abort();\n  }" { (case_statement "case 7:" case number_literal :) (case_statement "case 8:" case number_literal :) (case_statement "case 9:" case number_literal :) (case_statement "case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;" case number_literal : (expression_statement "plVar11 = *(long **)(param_2 + 4);" (assignment_expression "plVar11 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar9 = *(long **)(param_3 + 4);" (assignment_expression "plVar9 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (if_statement "if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }" if (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }" { (expression_statement "uVar4 = (uint)(plVar9 == (long *)0x0);" (assignment_expression "uVar4 = (uint)(plVar9 == (long *)0x0)" identifier = (call_expression "(uint)(plVar9 == (long *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(plVar9 == (long *)0x0)" ( (binary_expression "plVar9 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) (break_statement "break;" break ;) })) (if_statement "if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }" if (parenthesized_expression "(plVar9 != (long *)0x0)" ( (binary_expression "plVar9 != (long *)0x0" identifier != (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }" { (if_statement "if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }" if (parenthesized_expression "((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc)))" ( (binary_expression "(*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))" (parenthesized_expression "(*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc))" ( (binary_expression "*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)" (pointer_expression "*(uint *)(param_1 + 0x38)" * (cast_expression "(uint *)(param_1 + 0x38)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_1 + 0x38)" ( (binary_expression "param_1 + 0x38" identifier + number_literal) )))) < (pointer_expression "*(uint *)((long)plVar11 + 0xc)" * (cast_expression "(uint *)((long)plVar11 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0xc)" ( (binary_expression "(long)plVar11 + 0xc" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) )) && (parenthesized_expression "(*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))" ( (binary_expression "*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc)" (pointer_expression "*(uint *)((long)plVar11 + 0xc)" * (cast_expression "(uint *)((long)plVar11 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar11 + 0xc)" ( (binary_expression "(long)plVar11 + 0xc" (cast_expression "(long)plVar11" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == (pointer_expression "*(uint *)((long)plVar9 + 0xc)" * (cast_expression "(uint *)((long)plVar9 + 0xc)" ( (type_descriptor "uint *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)plVar9 + 0xc)" ( (binary_expression "(long)plVar9 + 0xc" (cast_expression "(long)plVar9" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))))) ))) )) (compound_statement "{\n        uVar4 = 1;\n        break;\n      }" { (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;) (break_statement "break;" break ;) })) (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;) (expression_statement "lVar15 = *plVar9;" (assignment_expression "lVar15 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (if_statement "if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }" if (parenthesized_expression "((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0)))))" ( (binary_expression "(((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))" (parenthesized_expression "(((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0)))" ( (binary_expression "((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))" (parenthesized_expression "((lVar10 == 0) == (lVar15 == 0))" ( (binary_expression "(lVar10 == 0) == (lVar15 == 0)" (parenthesized_expression "(lVar10 == 0)" ( (binary_expression "lVar10 == 0" identifier == number_literal) )) == (parenthesized_expression "(lVar15 == 0)" ( (binary_expression "lVar15 == 0" identifier == number_literal) ))) )) && (parenthesized_expression "((plVar11[2] == 0) == (plVar9[2] == 0))" ( (binary_expression "(plVar11[2] == 0) == (plVar9[2] == 0)" (parenthesized_expression "(plVar11[2] == 0)" ( (binary_expression "plVar11[2] == 0" (subscript_expression "plVar11[2]" identifier [ number_literal ]) == number_literal) )) == (parenthesized_expression "(plVar9[2] == 0)" ( (binary_expression "plVar9[2] == 0" (subscript_expression "plVar9[2]" identifier [ number_literal ]) == number_literal) ))) ))) )) && (parenthesized_expression "(((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))" ( (parenthesized_expression "((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0)))" ( (binary_expression "(plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))" (binary_expression "(plVar11[3] == 0) == (plVar9[3] == 0)" (parenthesized_expression "(plVar11[3] == 0)" ( (binary_expression "plVar11[3] == 0" (subscript_expression "plVar11[3]" identifier [ number_literal ]) == number_literal) )) == (parenthesized_expression "(plVar9[3] == 0)" ( (binary_expression "plVar9[3] == 0" (subscript_expression "plVar9[3]" identifier [ number_literal ]) == number_literal) ))) && (parenthesized_expression "((plVar11[4] == 0) == (plVar9[4] == 0))" ( (binary_expression "(plVar11[4] == 0) == (plVar9[4] == 0)" (parenthesized_expression "(plVar11[4] == 0)" ( (binary_expression "plVar11[4] == 0" (subscript_expression "plVar11[4]" identifier [ number_literal ]) == number_literal) )) == (parenthesized_expression "(plVar9[4] == 0)" ( (binary_expression "plVar9[4] == 0" (subscript_expression "plVar9[4]" identifier [ number_literal ]) == number_literal) ))) ))) )) ))) )) (compound_statement "{\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }" { (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (if_statement "if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" { (do_statement "do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);" do (compound_statement "{\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          }" { (expression_statement "puVar13 = *(undefined8 **)(lVar10 + lVar12);" (assignment_expression "puVar13 = *(undefined8 **)(lVar10 + lVar12)" identifier = (pointer_expression "*(undefined8 **)(lVar10 + lVar12)" * (cast_expression "(undefined8 **)(lVar10 + lVar12)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + lVar12)" ( (binary_expression "lVar10 + lVar12" identifier + identifier) ))))) ;) (expression_statement "puVar17 = *(undefined8 **)(lVar15 + lVar12);" (assignment_expression "puVar17 = *(undefined8 **)(lVar15 + lVar12)" identifier = (pointer_expression "*(undefined8 **)(lVar15 + lVar12)" * (cast_expression "(undefined8 **)(lVar15 + lVar12)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar15 + lVar12)" ( (binary_expression "lVar15 + lVar12" identifier + identifier) ))))) ;) (if_statement "if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }" if (parenthesized_expression "(puVar13 == (undefined8 *)0x0)" ( (binary_expression "puVar13 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }" { (if_statement "if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" ( (binary_expression "puVar17 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (goto_statement "goto LAB_0012b971;" goto statement_identifier ;) })) (if_statement "if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar17 == (undefined8 *)0x0)" ( (binary_expression "puVar17 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "pcVar16 = (char *)*puVar17;" (assignment_expression "pcVar16 = (char *)*puVar17" identifier = (cast_expression "(char *)*puVar17" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "pcVar14 = (char *)*puVar13;" (assignment_expression "pcVar14 = (char *)*puVar13" identifier = (cast_expression "(char *)*puVar13" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (if_statement "if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;" if (parenthesized_expression "((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2]))" ( (binary_expression "(*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])" (parenthesized_expression "(*pcVar14 != *pcVar16)" ( (binary_expression "*pcVar14 != *pcVar16" (pointer_expression "*pcVar14" * identifier) != (pointer_expression "*pcVar16" * identifier)) )) || (parenthesized_expression "(puVar13[2] != puVar17[2])" ( (binary_expression "puVar13[2] != puVar17[2]" (subscript_expression "puVar13[2]" identifier [ number_literal ]) != (subscript_expression "puVar17[2]" identifier [ number_literal ])) ))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (if_statement "if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }" if (parenthesized_expression "(*(int *)((long)puVar13 + 0x14) == 0)" ( (binary_expression "*(int *)((long)puVar13 + 0x14) == 0" (pointer_expression "*(int *)((long)puVar13 + 0x14)" * (cast_expression "(int *)((long)puVar13 + 0x14)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)puVar13 + 0x14)" ( (binary_expression "(long)puVar13 + 0x14" (cast_expression "(long)puVar13" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) == number_literal) )) (compound_statement "{\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }" { (if_statement "if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;" if (parenthesized_expression "((char *)puVar13[3] != (char *)puVar17[3])" ( (binary_expression "(char *)puVar13[3] != (char *)puVar17[3]" (cast_expression "(char *)puVar13[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[3]" identifier [ number_literal ])) != (cast_expression "(char *)puVar17[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[3]" identifier [ number_literal ]))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) }) (else_clause "else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }" else (compound_statement "{\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }" { (expression_statement "iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);" (assignment_expression "iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3])" identifier = (call_expression "strcmp((char *)puVar13[3],(char *)puVar17[3])" identifier (argument_list "((char *)puVar13[3],(char *)puVar17[3])" ( (cast_expression "(char *)puVar13[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[3]" identifier [ number_literal ])) , (cast_expression "(char *)puVar17[3]" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[3]" identifier [ number_literal ])) )))) ;) (if_statement "if (iVar5 != 0) goto LAB_0012b7fc;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) }))) (expression_statement "iVar5 = strcmp(pcVar14,pcVar16);" (assignment_expression "iVar5 = strcmp(pcVar14,pcVar16)" identifier = (call_expression "strcmp(pcVar14,pcVar16)" identifier (argument_list "(pcVar14,pcVar16)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 != 0) goto LAB_0012b7fc;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "lVar12 = lVar12 + 8;" (assignment_expression "lVar12 = lVar12 + 8" identifier = (binary_expression "lVar12 + 8" identifier + number_literal)) ;) (expression_statement "uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);" (assignment_expression "uVar7 = FUN_0012b0d0(param_1,puVar17[1],0)" identifier = (call_expression "FUN_0012b0d0(param_1,puVar17[1],0)" identifier (argument_list "(param_1,puVar17[1],0)" ( identifier , (subscript_expression "puVar17[1]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);" (assignment_expression "uVar8 = FUN_0012b0d0(param_1,puVar13[1],0)" identifier = (call_expression "FUN_0012b0d0(param_1,puVar13[1],0)" identifier (argument_list "(param_1,puVar13[1],0)" ( identifier , (subscript_expression "puVar13[1]" identifier [ number_literal ]) , number_literal )))) ;) (expression_statement "uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);" (assignment_expression "uVar4 = FUN_0012bab0(param_1,uVar8,uVar7)" identifier = (call_expression "FUN_0012bab0(param_1,uVar8,uVar7)" identifier (argument_list "(param_1,uVar8,uVar7)" ( identifier , identifier , identifier )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) (break_statement "break;" break ;) })) (labeled_statement "LAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;" statement_identifier : (if_statement "if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;" if (parenthesized_expression "((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))" ( (binary_expression "(plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0)" (parenthesized_expression "(plVar11[4] != 0)" ( (binary_expression "plVar11[4] != 0" (subscript_expression "plVar11[4]" identifier [ number_literal ]) != number_literal) )) && (parenthesized_expression "(uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0)" ( (comma_expression "uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0" (assignment_expression "uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4])" identifier = (call_expression "FUN_0012bab0(param_1,plVar11[4],plVar9[4])" identifier (argument_list "(param_1,plVar11[4],plVar9[4])" ( identifier , (subscript_expression "plVar11[4]" identifier [ number_literal ]) , (subscript_expression "plVar9[4]" identifier [ number_literal ]) )))) , (comma_expression "plVar6 = local_58, uVar4 == 0" (assignment_expression "plVar6 = local_58" identifier = identifier) , (binary_expression "uVar4 == 0" identifier == number_literal))) ))) )) (break_statement "break;" break ;))) (expression_statement "lVar10 = plVar11[2];" (assignment_expression "lVar10 = plVar11[2]" identifier = (subscript_expression "plVar11[2]" identifier [ number_literal ])) ;) (if_statement "if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" if (parenthesized_expression "(lVar10 != 0)" ( (binary_expression "lVar10 != 0" identifier != number_literal) )) (compound_statement "{\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" { (expression_statement "lVar15 = plVar9[2];" (assignment_expression "lVar15 = plVar9[2]" identifier = (subscript_expression "plVar9[2]" identifier [ number_literal ])) ;) (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" identifier = number_literal) ;) (do_statement "do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);" do (compound_statement "{\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          }" { (expression_statement "puVar13 = *(undefined8 **)(lVar10 + lVar12);" (assignment_expression "puVar13 = *(undefined8 **)(lVar10 + lVar12)" identifier = (pointer_expression "*(undefined8 **)(lVar10 + lVar12)" * (cast_expression "(undefined8 **)(lVar10 + lVar12)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar10 + lVar12)" ( (binary_expression "lVar10 + lVar12" identifier + identifier) ))))) ;) (expression_statement "puVar17 = *(undefined8 **)(lVar15 + lVar12);" (assignment_expression "puVar17 = *(undefined8 **)(lVar15 + lVar12)" identifier = (pointer_expression "*(undefined8 **)(lVar15 + lVar12)" * (cast_expression "(undefined8 **)(lVar15 + lVar12)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(lVar15 + lVar12)" ( (binary_expression "lVar15 + lVar12" identifier + identifier) ))))) ;) (if_statement "if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }" if (parenthesized_expression "(puVar13 == (undefined8 *)0x0)" ( (binary_expression "puVar13 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }" { (if_statement "if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" ( (binary_expression "puVar17 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (goto_statement "goto LAB_0012b9f3;" goto statement_identifier ;) })) (if_statement "if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;" if (parenthesized_expression "(((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2)))" ( (binary_expression "((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))" (parenthesized_expression "((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1]))" ( (binary_expression "(puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])" (parenthesized_expression "(puVar17 == (undefined8 *)0x0)" ( (binary_expression "puVar17 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) || (parenthesized_expression "(puVar13[1] != puVar17[1])" ( (binary_expression "puVar13[1] != puVar17[1]" (subscript_expression "puVar13[1]" identifier [ number_literal ]) != (subscript_expression "puVar17[1]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "(*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))" ( (binary_expression "*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2)" (pointer_expression "*(int *)(puVar13 + 2)" * (cast_expression "(int *)(puVar13 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar13 + 2)" ( (binary_expression "puVar13 + 2" identifier + number_literal) )))) != (pointer_expression "*(int *)(puVar17 + 2)" * (cast_expression "(int *)(puVar17 + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(puVar17 + 2)" ( (binary_expression "puVar17 + 2" identifier + number_literal) ))))) ))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "lVar12 = lVar12 + 8;" (assignment_expression "lVar12 = lVar12 + 8" identifier = (binary_expression "lVar12 + 8" identifier + number_literal)) ;) (expression_statement "uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);" (assignment_expression "uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17)" identifier = (call_expression "FUN_0012bab0(param_1,*puVar13,*puVar17)" identifier (argument_list "(param_1,*puVar13,*puVar17)" ( identifier , (pointer_expression "*puVar13" * identifier) , (pointer_expression "*puVar17" * identifier) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) }) while (parenthesized_expression "(uVar4 != 0)" ( (binary_expression "uVar4 != 0" identifier != number_literal) )) ;) (break_statement "break;" break ;) })) (labeled_statement "LAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];" statement_identifier : (expression_statement "puVar13 = (undefined8 *)plVar11[3];" (assignment_expression "puVar13 = (undefined8 *)plVar11[3]" identifier = (cast_expression "(undefined8 *)plVar11[3]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar11[3]" identifier [ number_literal ]))) ;)) (if_statement "if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }" if (parenthesized_expression "(puVar13 != (undefined8 *)0x0)" ( (binary_expression "puVar13 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }" { (expression_statement "puVar17 = (undefined8 *)plVar9[3];" (assignment_expression "puVar17 = (undefined8 *)plVar9[3]" identifier = (cast_expression "(undefined8 *)plVar9[3]" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (subscript_expression "plVar9[3]" identifier [ number_literal ]))) ;) (while_statement "while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }" while (parenthesized_expression "( true )" ( true )) (compound_statement "{\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }" { (expression_statement "puVar19 = (undefined8 *)*puVar13;" (assignment_expression "puVar19 = (undefined8 *)*puVar13" identifier = (cast_expression "(undefined8 *)*puVar13" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (expression_statement "puVar2 = (undefined8 *)*puVar17;" (assignment_expression "puVar2 = (undefined8 *)*puVar17" identifier = (cast_expression "(undefined8 *)*puVar17" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (if_statement "if (puVar19 == (undefined8 *)0x0) break;" if (parenthesized_expression "(puVar19 == (undefined8 *)0x0)" ( (binary_expression "puVar19 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (break_statement "break;" break ;)) (if_statement "if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;" if (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (if_statement "if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;" if (parenthesized_expression "(((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0)))" ( (binary_expression "((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))" (parenthesized_expression "((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0))" ( (binary_expression "(*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)" (parenthesized_expression "(*(char *)*puVar19 != *(char *)*puVar2)" ( (binary_expression "*(char *)*puVar19 != *(char *)*puVar2" (pointer_expression "*(char *)*puVar19" * (cast_expression "(char *)*puVar19" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) != (pointer_expression "*(char *)*puVar2" * (cast_expression "(char *)*puVar2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)))) )) || (parenthesized_expression "(iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)" ( (comma_expression "iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0" (assignment_expression "iVar5 = strcmp((char *)*puVar19,(char *)*puVar2)" identifier = (call_expression "strcmp((char *)*puVar19,(char *)*puVar2)" identifier (argument_list "((char *)*puVar19,(char *)*puVar2)" ( (cast_expression "(char *)*puVar19" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier)) , (cast_expression "(char *)*puVar2" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar2" * identifier)) )))) , (binary_expression "iVar5 != 0" identifier != number_literal)) ))) )) || (parenthesized_expression "((puVar19[1] == 0) != (puVar2[1] == 0))" ( (binary_expression "(puVar19[1] == 0) != (puVar2[1] == 0)" (parenthesized_expression "(puVar19[1] == 0)" ( (binary_expression "puVar19[1] == 0" (subscript_expression "puVar19[1]" identifier [ number_literal ]) == number_literal) )) != (parenthesized_expression "(puVar2[1] == 0)" ( (binary_expression "puVar2[1] == 0" (subscript_expression "puVar2[1]" identifier [ number_literal ]) == number_literal) ))) ))) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (if_statement "if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }" if (parenthesized_expression "(puVar19[1] == 0)" ( (binary_expression "puVar19[1] == 0" (subscript_expression "puVar19[1]" identifier [ number_literal ]) == number_literal) )) (compound_statement "{\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }" { (expression_statement "pcVar3 = (code *)invalidInstructionException();" (assignment_expression "pcVar3 = (code *)invalidInstructionException()" identifier = (cast_expression "(code *)invalidInstructionException()" ( (type_descriptor "code *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "invalidInstructionException()" identifier (argument_list "()" ( ))))) ;) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" ( (pointer_expression "*pcVar3" * identifier) )) (argument_list "()" ( ))) ;) })) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" identifier = (binary_expression "puVar13 + 1" identifier + number_literal)) ;) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" identifier = (binary_expression "puVar17 + 1" identifier + number_literal)) ;) })) (expression_statement "uVar4 = (uint)(puVar2 == (undefined8 *)0x0);" (assignment_expression "uVar4 = (uint)(puVar2 == (undefined8 *)0x0)" identifier = (call_expression "(uint)(puVar2 == (undefined8 *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar2 == (undefined8 *)0x0)" ( (binary_expression "puVar2 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (break_statement "break;" break ;) })) (goto_statement "goto LAB_0012b941;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0012b55d:\n    uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (break_statement "break;" break ;)) (case_statement "case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;" case number_literal : (expression_statement "puVar13 = *(undefined8 **)(param_2 + 4);" (assignment_expression "puVar13 = *(undefined8 **)(param_2 + 4)" identifier = (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "puVar17 = *(undefined8 **)(param_3 + 4);" (assignment_expression "puVar17 = *(undefined8 **)(param_3 + 4)" identifier = (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (if_statement "if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }" if (parenthesized_expression "(puVar13 == (undefined8 *)0x0)" ( (binary_expression "puVar13 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }" { (expression_statement "uVar4 = (uint)(puVar17 == (undefined8 *)0x0);" (assignment_expression "uVar4 = (uint)(puVar17 == (undefined8 *)0x0)" identifier = (call_expression "(uint)(puVar17 == (undefined8 *)0x0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(puVar17 == (undefined8 *)0x0)" ( (binary_expression "puVar17 == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )))) ;) }) (else_clause "else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }" else (compound_statement "{\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }" { (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }" if (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" ( (binary_expression "puVar17 != (undefined8 *)0x0" identifier != (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }" { (expression_statement "puVar19 = (undefined8 *)*puVar13;" (assignment_expression "puVar19 = (undefined8 *)*puVar13" identifier = (cast_expression "(undefined8 *)*puVar13" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar13" * identifier))) ;) (expression_statement "plVar11 = (long *)*puVar17;" (assignment_expression "plVar11 = (long *)*puVar17" identifier = (cast_expression "(long *)*puVar17" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar17" * identifier))) ;) (expression_statement "plVar9 = (long *)puVar13[1];" (assignment_expression "plVar9 = (long *)puVar13[1]" identifier = (cast_expression "(long *)puVar13[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar13[1]" identifier [ number_literal ]))) ;) (expression_statement "plVar18 = (long *)puVar17[1];" (assignment_expression "plVar18 = (long *)puVar17[1]" identifier = (cast_expression "(long *)puVar17[1]" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar17[1]" identifier [ number_literal ]))) ;) (expression_statement "pcVar16 = (char *)*puVar19;" (assignment_expression "pcVar16 = (char *)*puVar19" identifier = (cast_expression "(char *)*puVar19" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "pcVar14 = (char *)*plVar11;" (assignment_expression "pcVar14 = (char *)*plVar11" identifier = (cast_expression "(char *)*plVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" if (parenthesized_expression "(pcVar16 == (char *)0x0)" ( (binary_expression "pcVar16 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }" { (labeled_statement "LAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);" statement_identifier : (expression_statement "uVar4 = (uint)(*plVar11 == 0);" (assignment_expression "uVar4 = (uint)(*plVar11 == 0)" identifier = (call_expression "(uint)(*plVar11 == 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )))) ;)) }) (else_clause "else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" else (if_statement "if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" if (parenthesized_expression "(((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9))" ( (binary_expression "((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)" (parenthesized_expression "((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16))" ( (binary_expression "(pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)" (parenthesized_expression "(pcVar14 != (char *)0x0)" ( (binary_expression "pcVar14 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar14 == *pcVar16)" ( (binary_expression "*pcVar14 == *pcVar16" (pointer_expression "*pcVar14" * identifier) == (pointer_expression "*pcVar16" * identifier)) ))) )) && (parenthesized_expression "(*plVar18 == *plVar9)" ( (binary_expression "*plVar18 == *plVar9" (pointer_expression "*plVar18" * identifier) == (pointer_expression "*plVar9" * identifier)) ))) )) (compound_statement "{\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" { (do_statement "do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));" do (compound_statement "{\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          }" { (expression_statement "iVar5 = strcmp(pcVar16,pcVar14);" (assignment_expression "iVar5 = strcmp(pcVar16,pcVar14)" identifier = (call_expression "strcmp(pcVar16,pcVar14)" identifier (argument_list "(pcVar16,pcVar14)" ( identifier , identifier )))) ;) (if_statement "if (iVar5 != 0) goto LAB_0012b55d;" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (goto_statement "goto LAB_0012b55d;" goto statement_identifier ;)) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" identifier = (binary_expression "puVar19 + 1" identifier + number_literal)) ;) (expression_statement "pcVar16 = (char *)*puVar19;" (assignment_expression "pcVar16 = (char *)*puVar19" identifier = (cast_expression "(char *)*puVar19" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier))) ;) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) (expression_statement "plVar9 = plVar9 + 1;" (assignment_expression "plVar9 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (expression_statement "plVar18 = plVar18 + 1;" (assignment_expression "plVar18 = plVar18 + 1" identifier = (binary_expression "plVar18 + 1" identifier + number_literal)) ;) (expression_statement "pcVar14 = (char *)*plVar11;" (assignment_expression "pcVar14 = (char *)*plVar11" identifier = (cast_expression "(char *)*plVar11" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*plVar11" * identifier))) ;) (if_statement "if (pcVar16 == (char *)0x0) goto LAB_0012b950;" if (parenthesized_expression "(pcVar16 == (char *)0x0)" ( (binary_expression "pcVar16 == (char *)0x0" identifier == (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b950;" goto statement_identifier ;)) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) }) while (parenthesized_expression "(((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18))" ( (binary_expression "((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18)" (parenthesized_expression "((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14))" ( (binary_expression "(pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)" (parenthesized_expression "(pcVar14 != (char *)0x0)" ( (binary_expression "pcVar14 != (char *)0x0" identifier != (cast_expression "(char *)0x0" ( (type_descriptor "char *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) && (parenthesized_expression "(*pcVar16 == *pcVar14)" ( (binary_expression "*pcVar16 == *pcVar14" (pointer_expression "*pcVar16" * identifier) == (pointer_expression "*pcVar14" * identifier)) ))) )) && (parenthesized_expression "(*plVar9 == *plVar18)" ( (binary_expression "*plVar9 == *plVar18" (pointer_expression "*plVar9" * identifier) == (pointer_expression "*plVar18" * identifier)) ))) )) ;) })))) })) }))) (break_statement "break;" break ;)) (case_statement "case 0xc:" case number_literal :) (case_statement "case 0xe:" case number_literal :) (case_statement "case 0x14:" case number_literal :) (case_statement "case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;" case number_literal : (expression_statement "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));" (assignment_expression "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4))" identifier = (call_expression "FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4))" identifier (argument_list "(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4))" ( identifier , (pointer_expression "*(undefined8 *)(param_2 + 4)" * (cast_expression "(undefined8 *)(param_2 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) , (pointer_expression "*(undefined8 *)(param_3 + 4)" * (cast_expression "(undefined8 *)(param_3 + 4)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;" case number_literal : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;" if (parenthesized_expression "(*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))" ( (binary_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2)" (pointer_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 2)" * (cast_expression "(int *)(*(undefined8 **)(param_2 + 4) + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(param_2 + 4) + 2)" ( (binary_expression "*(undefined8 **)(param_2 + 4) + 2" (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) )))) != (pointer_expression "*(int *)(*(undefined8 **)(param_3 + 4) + 2)" * (cast_expression "(int *)(*(undefined8 **)(param_3 + 4) + 2)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(param_3 + 4) + 2)" ( (binary_expression "*(undefined8 **)(param_3 + 4) + 2" (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));" (assignment_expression "iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" identifier = (call_expression "FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" identifier (argument_list "(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" ( identifier , (pointer_expression "**(undefined8 **)(param_2 + 4)" * (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) , (pointer_expression "**(undefined8 **)(param_3 + 4)" * (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) )))) ;) (if_statement "if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" { (expression_statement "plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);" (assignment_expression "plVar6 = *(long **)(*(long *)(param_2 + 4) + 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_2 + 4) + 8)" * (cast_expression "(long **)(*(long *)(param_2 + 4) + 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" ( (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);" (assignment_expression "plVar11 = *(long **)(*(long *)(param_3 + 4) + 8)" identifier = (pointer_expression "*(long **)(*(long *)(param_3 + 4) + 8)" * (cast_expression "(long **)(*(long *)(param_3 + 4) + 8)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" ( (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" if (parenthesized_expression "((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0))" ( (binary_expression "(plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)" (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) == (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" { (if_statement "if (plVar6 == (long *)0x0) goto LAB_0012b941;" if (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b941;" goto statement_identifier ;)) (for_statement "for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" for ( ; (binary_expression "*plVar6 != 0" (pointer_expression "*plVar6" * identifier) != number_literal) ; (assignment_expression "plVar6 = plVar6 + 1" identifier = (binary_expression "plVar6 + 1" identifier + number_literal)) ) (compound_statement "{\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" { (if_statement "if (*plVar11 == 0) goto LAB_0012b7fc;" if (parenthesized_expression "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "iVar5 = FUN_0012bab0(param_1);" (assignment_expression "iVar5 = FUN_0012bab0(param_1)" identifier = (call_expression "FUN_0012bab0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0012b92c;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012b92c;" goto statement_identifier ;)) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_0012b936;" goto statement_identifier ;) })) })) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (case_statement "case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;" case number_literal : (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;" if (parenthesized_expression "((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2]))" ( (binary_expression "(plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])" (parenthesized_expression "(plVar9[1] != plVar11[1])" ( (binary_expression "plVar9[1] != plVar11[1]" (subscript_expression "plVar9[1]" identifier [ number_literal ]) != (subscript_expression "plVar11[1]" identifier [ number_literal ])) )) || (parenthesized_expression "(plVar9[2] != plVar11[2])" ( (binary_expression "plVar9[2] != plVar11[2]" (subscript_expression "plVar9[2]" identifier [ number_literal ]) != (subscript_expression "plVar11[2]" identifier [ number_literal ])) ))) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0012b729;" goto statement_identifier ;)) (case_statement "case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;" case number_literal : (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;" if (parenthesized_expression "(((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4]))" ( (binary_expression "((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])" (parenthesized_expression "((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3]))" ( (binary_expression "(plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])" (parenthesized_expression "(plVar9[2] != plVar11[2])" ( (binary_expression "plVar9[2] != plVar11[2]" (subscript_expression "plVar9[2]" identifier [ number_literal ]) != (subscript_expression "plVar11[2]" identifier [ number_literal ])) )) || (parenthesized_expression "(plVar9[3] != plVar11[3])" ( (binary_expression "plVar9[3] != plVar11[3]" (subscript_expression "plVar9[3]" identifier [ number_literal ]) != (subscript_expression "plVar11[3]" identifier [ number_literal ])) ))) )) || (parenthesized_expression "((int)plVar9[4] != (int)plVar11[4])" ( (binary_expression "(int)plVar9[4] != (int)plVar11[4]" (cast_expression "(int)plVar9[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar9[4]" identifier [ number_literal ])) != (cast_expression "(int)plVar11[4]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar11[4]" identifier [ number_literal ]))) ))) )) (break_statement "break;" break ;)) (goto_statement "goto LAB_0012b729;" goto statement_identifier ;)) (case_statement "case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;" case number_literal : (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" identifier = (pointer_expression "*(long **)(param_3 + 4)" * (cast_expression "(long **)(param_3 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) ;) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" identifier = (pointer_expression "*(long **)(param_2 + 4)" * (cast_expression "(long **)(param_2 + 4)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) ;) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if ((int)plVar9[1] != (int)plVar11[1]) break;" if (parenthesized_expression "((int)plVar9[1] != (int)plVar11[1])" ( (binary_expression "(int)plVar9[1] != (int)plVar11[1]" (cast_expression "(int)plVar9[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar9[1]" identifier [ number_literal ])) != (cast_expression "(int)plVar11[1]" ( (type_descriptor "int" primitive_type) ) (subscript_expression "plVar11[1]" identifier [ number_literal ]))) )) (break_statement "break;" break ;)) (labeled_statement "LAB_0012b729:\n    lVar10 = *plVar11;" statement_identifier : (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" identifier = (pointer_expression "*plVar11" * identifier)) ;)) (expression_statement "lVar15 = *plVar9;" (assignment_expression "lVar15 = *plVar9" identifier = (pointer_expression "*plVar9" * identifier)) ;) (labeled_statement "LAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);" statement_identifier : (expression_statement "iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);" (assignment_expression "iVar5 = FUN_0012bab0(param_1,lVar15,lVar10)" identifier = (call_expression "FUN_0012bab0(param_1,lVar15,lVar10)" identifier (argument_list "(param_1,lVar15,lVar10)" ( identifier , identifier , identifier )))) ;)) (expression_statement "uVar4 = (uint)(iVar5 != 0);" (assignment_expression "uVar4 = (uint)(iVar5 != 0)" identifier = (call_expression "(uint)(iVar5 != 0)" (parenthesized_expression "(uint)" ( identifier )) (argument_list "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;" case number_literal : (expression_statement "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));" (assignment_expression "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" identifier = (call_expression "FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" identifier (argument_list "(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" ( identifier , (pointer_expression "**(undefined8 **)(param_2 + 4)" * (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) , (pointer_expression "**(undefined8 **)(param_3 + 4)" * (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) )))) ;) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (if_statement "if (uVar4 == 0) break;" if (parenthesized_expression "(uVar4 == 0)" ( (binary_expression "uVar4 == 0" identifier == number_literal) )) (break_statement "break;" break ;)) (expression_statement "lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);" (assignment_expression "lVar10 = *(long *)(*(long *)(param_3 + 4) + 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_3 + 4) + 8)" * (cast_expression "(long *)(*(long *)(param_3 + 4) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" ( (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);" (assignment_expression "lVar15 = *(long *)(*(long *)(param_2 + 4) + 8)" identifier = (pointer_expression "*(long *)(*(long *)(param_2 + 4) + 8)" * (cast_expression "(long *)(*(long *)(param_2 + 4) + 8)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" ( (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (goto_statement "goto LAB_0012b6fe;" goto statement_identifier ;)) (case_statement "case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;" case number_literal : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;) (if_statement "if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;" if (parenthesized_expression "((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))" ( (binary_expression "(*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0)" (parenthesized_expression "(*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))" ( (binary_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3)" (pointer_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 3)" * (cast_expression "(int *)(*(undefined8 **)(param_2 + 4) + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(param_2 + 4) + 3)" ( (binary_expression "*(undefined8 **)(param_2 + 4) + 3" (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) )))) != (pointer_expression "*(int *)(*(undefined8 **)(param_3 + 4) + 3)" * (cast_expression "(int *)(*(undefined8 **)(param_3 + 4) + 3)" ( (type_descriptor "int *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(undefined8 **)(param_3 + 4) + 3)" ( (binary_expression "*(undefined8 **)(param_3 + 4) + 3" (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) )) || (parenthesized_expression "(uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0)" ( (comma_expression "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0" (assignment_expression "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4))" identifier = (call_expression "FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4))" identifier (argument_list "(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4))" ( identifier , (pointer_expression "**(undefined8 **)(param_2 + 4)" * (pointer_expression "*(undefined8 **)(param_2 + 4)" * (cast_expression "(undefined8 **)(param_2 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) ))))) , (pointer_expression "**(undefined8 **)(param_3 + 4)" * (pointer_expression "*(undefined8 **)(param_3 + 4)" * (cast_expression "(undefined8 **)(param_3 + 4)" ( (type_descriptor "undefined8 **" type_identifier (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) ))))) )))) , (comma_expression "plVar6 = local_58, uVar4 == 0" (assignment_expression "plVar6 = local_58" identifier = identifier) , (binary_expression "uVar4 == 0" identifier == number_literal))) ))) )) (break_statement "break;" break ;)) (expression_statement "iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));" (assignment_expression "iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8))" identifier = (call_expression "FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8))" identifier (argument_list "(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8))" ( identifier , (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 4) + 8)" * (cast_expression "(undefined8 *)(*(long *)(param_2 + 4) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" ( (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) )))) , (pointer_expression "*(undefined8 *)(*(long *)(param_3 + 4) + 8)" * (cast_expression "(undefined8 *)(*(long *)(param_3 + 4) + 8)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" ( (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) )))) )))) ;) (if_statement "if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" { (expression_statement "plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);" (assignment_expression "plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10)" identifier = (pointer_expression "*(long **)(*(long *)(param_2 + 4) + 0x10)" * (cast_expression "(long **)(*(long *)(param_2 + 4) + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_2 + 4) + 0x10)" ( (binary_expression "*(long *)(param_2 + 4) + 0x10" (pointer_expression "*(long *)(param_2 + 4)" * (cast_expression "(long *)(param_2 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_2 + 4)" ( (binary_expression "param_2 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (expression_statement "plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);" (assignment_expression "plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10)" identifier = (pointer_expression "*(long **)(*(long *)(param_3 + 4) + 0x10)" * (cast_expression "(long **)(*(long *)(param_3 + 4) + 0x10)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(*(long *)(param_3 + 4) + 0x10)" ( (binary_expression "*(long *)(param_3 + 4) + 0x10" (pointer_expression "*(long *)(param_3 + 4)" * (cast_expression "(long *)(param_3 + 4)" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(param_3 + 4)" ( (binary_expression "param_3 + 4" identifier + number_literal) )))) + number_literal) ))))) ;) (if_statement "if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" if (parenthesized_expression "((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0))" ( (binary_expression "(plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)" (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) == (parenthesized_expression "(plVar11 == (long *)0x0)" ( (binary_expression "plVar11 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) ))) )) (compound_statement "{\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" { (if_statement "if (plVar6 == (long *)0x0) goto LAB_0012b941;" if (parenthesized_expression "(plVar6 == (long *)0x0)" ( (binary_expression "plVar6 == (long *)0x0" identifier == (cast_expression "(long *)0x0" ( (type_descriptor "long *" (sized_type_specifier "long" long) (abstract_pointer_declarator "*" *)) ) number_literal)) )) (goto_statement "goto LAB_0012b941;" goto statement_identifier ;)) (for_statement "for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" for ( ; (binary_expression "*plVar6 != 0" (pointer_expression "*plVar6" * identifier) != number_literal) ; (assignment_expression "plVar6 = plVar6 + 1" identifier = (binary_expression "plVar6 + 1" identifier + number_literal)) ) (compound_statement "{\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" { (if_statement "if (*plVar11 == 0) goto LAB_0012b7fc;" if (parenthesized_expression "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;)) (expression_statement "iVar5 = FUN_0012bab0(param_1);" (assignment_expression "iVar5 = FUN_0012bab0(param_1)" identifier = (call_expression "FUN_0012bab0(param_1)" identifier (argument_list "(param_1)" ( identifier )))) ;) (if_statement "if (iVar5 == 0) goto LAB_0012b92c;" if (parenthesized_expression "(iVar5 == 0)" ( (binary_expression "iVar5 == 0" identifier == number_literal) )) (goto_statement "goto LAB_0012b92c;" goto statement_identifier ;)) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" identifier = (binary_expression "plVar11 + 1" identifier + number_literal)) ;) })) (goto_statement "goto LAB_0012b936;" goto statement_identifier ;) })) })) (labeled_statement "LAB_0012b7fc:\n    uVar4 = 0;" statement_identifier : (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" identifier = number_literal) ;)) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (break_statement "break;" break ;)) (case_statement "case 0x16:" case number_literal :) (case_statement "case 0x17:\n    goto switchD_0012b468_caseD_16;" case number_literal : (goto_statement "goto switchD_0012b468_caseD_16;" goto statement_identifier ;)) (case_statement "default:\n                    \n    abort();" default : (expression_statement "abort();" (call_expression "abort()" identifier (argument_list "()" ( ))) ;)) })) (labeled_statement "LAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;" statement_identifier : (expression_statement "*(long **)(param_1 + 0x58) = plVar6;" (assignment_expression "*(long **)(param_1 + 0x58) = plVar6" (pointer_expression "*(long **)(param_1 + 0x58)" * (cast_expression "(long **)(param_1 + 0x58)" ( (type_descriptor "long **" (sized_type_specifier "long" long) (abstract_pointer_declarator "**" * (abstract_pointer_declarator "*" *))) ) (parenthesized_expression "(param_1 + 0x58)" ( (binary_expression "param_1 + 0x58" identifier + number_literal) )))) = identifier) ;)) (return_statement "return uVar4;" return identifier ;) (labeled_statement "LAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }" statement_identifier : (if_statement "if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }" if (parenthesized_expression "(*plVar6 == 0)" ( (binary_expression "*plVar6 == 0" (pointer_expression "*plVar6" * identifier) == number_literal) )) (compound_statement "{\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }" { (labeled_statement "LAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }" statement_identifier : (if_statement "if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }" if (parenthesized_expression "(*plVar11 == 0)" ( (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" * identifier) == number_literal) )) (compound_statement "{\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }" { (labeled_statement "LAB_0012b941:\n      uVar4 = 1;" statement_identifier : (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" identifier = number_literal) ;)) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" identifier = identifier) ;) (goto_statement "goto LAB_0012b4be;" goto statement_identifier ;) }))) }))) (goto_statement "goto LAB_0012b7fc;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration (sized_type_specifier long) IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) })) (while_statement while (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (pointer_expression * IDENT)) , (binary_expression IDENT == LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == IDENT) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = IDENT) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) , IDENT )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) IDENT)) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_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)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ;) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) + LIT) )))) , (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 = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) && (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )))) ;) (return_statement return IDENT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) IDENT)) != (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) IDENT))) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (subscript_expression IDENT [ LIT ]) == (subscript_expression IDENT [ LIT ])) ))) ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (compound_statement { (return_statement return LIT ;) })) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression IDENT < LIT) )) (compound_statement { (return_statement return LIT ;) })))) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (for_statement for ( ; (binary_expression IDENT != (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ; (assignment_expression IDENT = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) && (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ))) )) (compound_statement { (return_statement return LIT ;) }))) })) (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator * (abstract_pointer_declarator *)))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = (pointer_expression & IDENT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (switch_statement switch (parenthesized_expression ( IDENT )) (compound_statement { (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )))) ;) (break_statement break ;) })) (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 (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) < (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) ))))) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (break_statement break ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == LIT) )) == (parenthesized_expression ( (binary_expression IDENT == LIT) ))) )) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) == (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) ))) )) && (parenthesized_expression ( (parenthesized_expression ( (binary_expression (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) == (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) && (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) == (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) ))) )) ))) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) != (pointer_expression * IDENT)) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) ))) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) == LIT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) )) (goto_statement goto statement_identifier ;)) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) }))) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , LIT )))) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (break_statement break ;) })) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != LIT) )) && (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT))) ))) )) (break_statement break ;))) (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + IDENT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (goto_statement goto statement_identifier ;) })) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) ))) )) || (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ))) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * IDENT) , (pointer_expression * IDENT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != LIT) )) ;) (break_statement break ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (while_statement while (parenthesized_expression ( BOOL )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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)) )) (break_statement break ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) )))) , (binary_expression IDENT != LIT)) ))) )) || (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) )) != (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) == LIT) ))) ))) )) (goto_statement goto statement_identifier ;)) (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 *)) ) (call_expression IDENT (argument_list ( ))))) ;) (expression_statement (call_expression (parenthesized_expression ( (pointer_expression * IDENT) )) (argument_list ( ))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;) })) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )))) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * 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 = (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT))) ;) (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 { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (pointer_expression * IDENT) == LIT) )))) ;)) }) (else_clause else (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) ))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (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 IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (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))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }) while (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT != (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) ))) )) && (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) ))) )) ;) })))) })) }))) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT :) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (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 (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (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 ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (for_statement for ( ; (binary_expression (pointer_expression * IDENT) != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (goto_statement goto statement_identifier ;) })) })) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) ))) )) (break_statement break ;)) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) || (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) ))) )) || (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) ))) )) (break_statement break ;)) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ])) != (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))) )) (break_statement break ;)) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT )))) ;)) (expression_statement (assignment_expression IDENT = (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression IDENT != LIT) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (goto_statement goto statement_identifier ;)) (case_statement case LIT : (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) != (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) )) || (parenthesized_expression ( (comma_expression (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) , (pointer_expression * (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) ))))) )))) , (comma_expression (assignment_expression IDENT = IDENT) , (binary_expression IDENT == LIT))) ))) )) (break_statement break ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) , (pointer_expression * (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) )))) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (expression_statement (assignment_expression IDENT = (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) + LIT) ))))) ;) (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 ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) ))) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator *)) ) LIT)) )) (goto_statement goto statement_identifier ;)) (for_statement for ( ; (binary_expression (pointer_expression * IDENT) != LIT) ; (assignment_expression IDENT = (binary_expression IDENT + LIT)) ) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (goto_statement goto statement_identifier ;) })) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (break_statement break ;)) (case_statement case LIT :) (case_statement case LIT : (goto_statement goto statement_identifier ;)) (case_statement default : (expression_statement (call_expression IDENT (argument_list ( ))) ;)) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression (pointer_expression * (cast_expression ( (type_descriptor (sized_type_specifier long) (abstract_pointer_declarator * (abstract_pointer_declarator *))) ) (parenthesized_expression ( (binary_expression IDENT + LIT) )))) = IDENT) ;)) (return_statement return IDENT ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = IDENT) ;) (goto_statement goto statement_identifier ;) }))) }))) (goto_statement goto statement_identifier ;) })))
(function_definition "uint FUN_0012b360(long param_1,uint *param_2,uint *param_3)\n\n{\n  uint uVar1;\n  undefined8 *puVar2;\n  code *pcVar3;\n  uint uVar4;\n  int iVar5;\n  long *plVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  long *plVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  undefined8 *puVar13;\n  char *pcVar14;\n  long lVar15;\n  char *pcVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  long *local_58;\n  uint *local_50;\n  uint *local_48;\n  \n  while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  if (param_2 == param_3) {\n    return 1;\n  }\n  local_50 = param_2;\n  local_48 = param_3;\n  if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }\n  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }\n  if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }\n  if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }\n  if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }\n  plVar6 = *(long **)(param_1 + 0x58);\n  local_58 = plVar6;\n  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }\n  *(long ***)(param_1 + 0x58) = &local_58;\n  plVar6 = local_58;\n  switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    \n    abort();\n  }\nLAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;\n  return uVar4;\nLAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}" (type_identifier "uint") (function_declarator "FUN_0012b360(long param_1,uint *param_2,uint *param_3)" (identifier "FUN_0012b360") (parameter_list "(long param_1,uint *param_2,uint *param_3)" (( "(") (parameter_declaration "long param_1" (sized_type_specifier "long" (long "long")) (identifier "param_1")) (, ",") (parameter_declaration "uint *param_2" (type_identifier "uint") (pointer_declarator "*param_2" (* "*") (identifier "param_2"))) (, ",") (parameter_declaration "uint *param_3" (type_identifier "uint") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) () ")"))) (compound_statement "{\n  uint uVar1;\n  undefined8 *puVar2;\n  code *pcVar3;\n  uint uVar4;\n  int iVar5;\n  long *plVar6;\n  undefined8 uVar7;\n  undefined8 uVar8;\n  long *plVar9;\n  long lVar10;\n  long *plVar11;\n  long lVar12;\n  undefined8 *puVar13;\n  char *pcVar14;\n  long lVar15;\n  char *pcVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  long *local_58;\n  uint *local_50;\n  uint *local_48;\n  \n  while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }\n  if (param_2 == param_3) {\n    return 1;\n  }\n  local_50 = param_2;\n  local_48 = param_3;\n  if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }\n  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }\n  if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }\n  if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }\n  if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }\n  plVar6 = *(long **)(param_1 + 0x58);\n  local_58 = plVar6;\n  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }\n  *(long ***)(param_1 + 0x58) = &local_58;\n  plVar6 = local_58;\n  switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    \n    abort();\n  }\nLAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;\n  return uVar4;\nLAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }\n  goto LAB_0012b7fc;\n}" ({ "{") (declaration "uint uVar1;" (type_identifier "uint") (identifier "uVar1") (; ";")) (declaration "undefined8 *puVar2;" (type_identifier "undefined8") (pointer_declarator "*puVar2" (* "*") (identifier "puVar2")) (; ";")) (declaration "code *pcVar3;" (type_identifier "code") (pointer_declarator "*pcVar3" (* "*") (identifier "pcVar3")) (; ";")) (declaration "uint uVar4;" (type_identifier "uint") (identifier "uVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "long *plVar6;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar6" (* "*") (identifier "plVar6")) (; ";")) (declaration "undefined8 uVar7;" (type_identifier "undefined8") (identifier "uVar7") (; ";")) (declaration "undefined8 uVar8;" (type_identifier "undefined8") (identifier "uVar8") (; ";")) (declaration "long *plVar9;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar9" (* "*") (identifier "plVar9")) (; ";")) (declaration "long lVar10;" (sized_type_specifier "long" (long "long")) (identifier "lVar10") (; ";")) (declaration "long *plVar11;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar11" (* "*") (identifier "plVar11")) (; ";")) (declaration "long lVar12;" (sized_type_specifier "long" (long "long")) (identifier "lVar12") (; ";")) (declaration "undefined8 *puVar13;" (type_identifier "undefined8") (pointer_declarator "*puVar13" (* "*") (identifier "puVar13")) (; ";")) (declaration "char *pcVar14;" (primitive_type "char") (pointer_declarator "*pcVar14" (* "*") (identifier "pcVar14")) (; ";")) (declaration "long lVar15;" (sized_type_specifier "long" (long "long")) (identifier "lVar15") (; ";")) (declaration "char *pcVar16;" (primitive_type "char") (pointer_declarator "*pcVar16" (* "*") (identifier "pcVar16")) (; ";")) (declaration "undefined8 *puVar17;" (type_identifier "undefined8") (pointer_declarator "*puVar17" (* "*") (identifier "puVar17")) (; ";")) (declaration "long *plVar18;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*plVar18" (* "*") (identifier "plVar18")) (; ";")) (declaration "undefined8 *puVar19;" (type_identifier "undefined8") (pointer_declarator "*puVar19" (* "*") (identifier "puVar19")) (; ";")) (declaration "long *local_58;" (sized_type_specifier "long" (long "long")) (pointer_declarator "*local_58" (* "*") (identifier "local_58")) (; ";")) (declaration "uint *local_50;" (type_identifier "uint") (pointer_declarator "*local_50" (* "*") (identifier "local_50")) (; ";")) (declaration "uint *local_48;" (type_identifier "uint") (pointer_declarator "*local_48" (* "*") (identifier "local_48")) (; ";")) (while_statement "while (uVar4 = *param_2, uVar4 == 1) {\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }" (while "while") (parenthesized_expression "(uVar4 = *param_2, uVar4 == 1)" (( "(") (comma_expression "uVar4 = *param_2, uVar4 == 1" (assignment_expression "uVar4 = *param_2" (identifier "uVar4") (= "=") (pointer_expression "*param_2" (* "*") (identifier "param_2"))) (, ",") (binary_expression "uVar4 == 1" (identifier "uVar4") (== "==") (number_literal "1"))) () ")")) (compound_statement "{\n    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);\n    if (param_2 == (uint *)0x0) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "param_2 = *(uint **)**(undefined8 **)(param_2 + 4);" (assignment_expression "param_2 = *(uint **)**(undefined8 **)(param_2 + 4)" (identifier "param_2") (= "=") (pointer_expression "*(uint **)**(undefined8 **)(param_2 + 4)" (* "*") (cast_expression "(uint **)**(undefined8 **)(param_2 + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "**(undefined8 **)(param_2 + 4)" (* "*") (pointer_expression "*(undefined8 **)(param_2 + 4)" (* "*") (cast_expression "(undefined8 **)(param_2 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))))))) (; ";")) (if_statement "if (param_2 == (uint *)0x0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_2 == (uint *)0x0)" (( "(") (binary_expression "param_2 == (uint *)0x0" (identifier "param_2") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (while_statement "while (uVar1 = *param_3, uVar1 == 1) {\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }" (while "while") (parenthesized_expression "(uVar1 = *param_3, uVar1 == 1)" (( "(") (comma_expression "uVar1 = *param_3, uVar1 == 1" (assignment_expression "uVar1 = *param_3" (identifier "uVar1") (= "=") (pointer_expression "*param_3" (* "*") (identifier "param_3"))) (, ",") (binary_expression "uVar1 == 1" (identifier "uVar1") (== "==") (number_literal "1"))) () ")")) (compound_statement "{\n    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);\n    if (param_3 == (uint *)0x0) {\n      return 0;\n    }\n  }" ({ "{") (expression_statement "param_3 = *(uint **)**(undefined8 **)(param_3 + 4);" (assignment_expression "param_3 = *(uint **)**(undefined8 **)(param_3 + 4)" (identifier "param_3") (= "=") (pointer_expression "*(uint **)**(undefined8 **)(param_3 + 4)" (* "*") (cast_expression "(uint **)**(undefined8 **)(param_3 + 4)" (( "(") (type_descriptor "uint **" (type_identifier "uint") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (pointer_expression "**(undefined8 **)(param_3 + 4)" (* "*") (pointer_expression "*(undefined8 **)(param_3 + 4)" (* "*") (cast_expression "(undefined8 **)(param_3 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))))))) (; ";")) (if_statement "if (param_3 == (uint *)0x0) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(param_3 == (uint *)0x0)" (( "(") (binary_expression "param_3 == (uint *)0x0" (identifier "param_3") (== "==") (cast_expression "(uint *)0x0" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (} "}"))) (if_statement "if (param_2 == param_3) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(param_2 == param_3)" (( "(") (binary_expression "param_2 == param_3" (identifier "param_2") (== "==") (identifier "param_3")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (expression_statement "local_50 = param_2;" (assignment_expression "local_50 = param_2" (identifier "local_50") (= "=") (identifier "param_2")) (; ";")) (expression_statement "local_48 = param_3;" (assignment_expression "local_48 = param_3" (identifier "local_48") (= "=") (identifier "param_3")) (; ";")) (if_statement "if (uVar4 == 0x16) {\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }" (if "if") (parenthesized_expression "(uVar4 == 0x16)" (( "(") (binary_expression "uVar4 == 0x16" (identifier "uVar4") (== "==") (number_literal "0x16")) () ")")) (compound_statement "{\n    if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }\n    if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }\n    plVar6 = *(long **)(param_1 + 0x58);\n    local_58 = plVar6;\n    if (plVar6 != (long *)0x0) goto LAB_0012b498;\n    local_58 = (long *)0x0;\n    *(long ***)(param_1 + 0x58) = &local_58;\nswitchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));\n    uVar4 = 0;\n    if (iVar5 != 0) goto LAB_0012b4be;\n    lVar10 = plVar11[1];\n    lVar15 = plVar9[1];\n    goto LAB_0012b6fe;\n  }" ({ "{") (if_statement "if (uVar1 == 0x17) {\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }" (if "if") (parenthesized_expression "(uVar1 == 0x17)" (( "(") (binary_expression "uVar1 == 0x17" (identifier "uVar1") (== "==") (number_literal "0x17")) () ")")) (compound_statement "{\n      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);\n      return uVar4;\n    }" ({ "{") (expression_statement "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);" (assignment_expression "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3)" (identifier "uVar4") (= "=") (call_expression "FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3)" (identifier "FUN_0012bab0") (argument_list "(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 4) + 8)" (* "*") (cast_expression "(undefined8 *)(*(long *)(param_2 + 4) + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" (( "(") (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" (* "*") (cast_expression "(long *)(param_2 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (, ",") (identifier "param_3") () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (if_statement "if (*(long *)param_2 != *(long *)param_3) {\n      return 0;\n    }" (if "if") (parenthesized_expression "(*(long *)param_2 != *(long *)param_3)" (( "(") (binary_expression "*(long *)param_2 != *(long *)param_3" (pointer_expression "*(long *)param_2" (* "*") (cast_expression "(long *)param_2" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (!= "!=") (pointer_expression "*(long *)param_3" (* "*") (cast_expression "(long *)param_3" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3")))) () ")")) (compound_statement "{\n      return 0;\n    }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (expression_statement "plVar6 = *(long **)(param_1 + 0x58);" (assignment_expression "plVar6 = *(long **)(param_1 + 0x58)" (identifier "plVar6") (= "=") (pointer_expression "*(long **)(param_1 + 0x58)" (* "*") (cast_expression "(long **)(param_1 + 0x58)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "local_58 = plVar6;" (assignment_expression "local_58 = plVar6" (identifier "local_58") (= "=") (identifier "plVar6")) (; ";")) (if_statement "if (plVar6 != (long *)0x0) goto LAB_0012b498;" (if "if") (parenthesized_expression "(plVar6 != (long *)0x0)" (( "(") (binary_expression "plVar6 != (long *)0x0" (identifier "plVar6") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0012b498;" (goto "goto") (statement_identifier "LAB_0012b498") (; ";"))) (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 "*(long ***)(param_1 + 0x58) = &local_58;" (assignment_expression "*(long ***)(param_1 + 0x58) = &local_58" (pointer_expression "*(long ***)(param_1 + 0x58)" (* "*") (cast_expression "(long ***)(param_1 + 0x58)" (( "(") (type_descriptor "long ***" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (; ";")) (labeled_statement "switchD_0012b468_caseD_16:\n    plVar11 = *(long **)(param_3 + 4);" (statement_identifier "switchD_0012b468_caseD_16") (: ":") (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_3 + 4)" (* "*") (cast_expression "(long **)(param_3 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";"))) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" (identifier "plVar9") (= "=") (pointer_expression "*(long **)(param_2 + 4)" (* "*") (cast_expression "(long **)(param_2 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));" (assignment_expression "iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8))" (identifier "iVar5") (= "=") (call_expression "strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8))" (identifier "strcmp") (argument_list "(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8))" (( "(") (pointer_expression "*(char **)(*plVar9 + 8)" (* "*") (cast_expression "(char **)(*plVar9 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar9 + 8)" (( "(") (binary_expression "*plVar9 + 8" (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(char **)(*plVar11 + 8)" (* "*") (cast_expression "(char **)(*plVar11 + 8)" (( "(") (type_descriptor "char **" (primitive_type "char") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*plVar11 + 8)" (( "(") (binary_expression "*plVar11 + 8" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_0012b4be;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012b4be;" (goto "goto") (statement_identifier "LAB_0012b4be") (; ";"))) (expression_statement "lVar10 = plVar11[1];" (assignment_expression "lVar10 = plVar11[1]" (identifier "lVar10") (= "=") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "lVar15 = plVar9[1];" (assignment_expression "lVar15 = plVar9[1]" (identifier "lVar15") (= "=") (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]"))) (; ";")) (goto_statement "goto LAB_0012b6fe;" (goto "goto") (statement_identifier "LAB_0012b6fe") (; ";")) (} "}"))) (if_statement "if ((uVar1 == 0x16) && (uVar4 == 0x17)) {\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }" (if "if") (parenthesized_expression "((uVar1 == 0x16) && (uVar4 == 0x17))" (( "(") (binary_expression "(uVar1 == 0x16) && (uVar4 == 0x17)" (parenthesized_expression "(uVar1 == 0x16)" (( "(") (binary_expression "uVar1 == 0x16" (identifier "uVar1") (== "==") (number_literal "0x16")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 == 0x17)" (( "(") (binary_expression "uVar4 == 0x17" (identifier "uVar4") (== "==") (number_literal "0x17")) () ")"))) () ")")) (compound_statement "{\n    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    return uVar4;\n  }" ({ "{") (expression_statement "uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));" (assignment_expression "uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8))" (identifier "uVar4") (= "=") (call_expression "FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8))" (identifier "FUN_0012bab0") (argument_list "(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8))" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (pointer_expression "*(undefined8 *)(*(long *)(param_3 + 4) + 8)" (* "*") (cast_expression "(undefined8 *)(*(long *)(param_3 + 4) + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" (( "(") (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" (* "*") (cast_expression "(long *)(param_3 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (} "}"))) (if_statement "if (*(long *)param_2 != *(long *)param_3) {\n    return 0;\n  }" (if "if") (parenthesized_expression "(*(long *)param_2 != *(long *)param_3)" (( "(") (binary_expression "*(long *)param_2 != *(long *)param_3" (pointer_expression "*(long *)param_2" (* "*") (cast_expression "(long *)param_2" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_2"))) (!= "!=") (pointer_expression "*(long *)param_3" (* "*") (cast_expression "(long *)param_3" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (identifier "param_3")))) () ")")) (compound_statement "{\n    return 0;\n  }" ({ "{") (return_statement "return 0;" (return "return") (number_literal "0") (; ";")) (} "}"))) (if_statement "if (uVar4 == 3) {\n    return (uint)(param_2[4] == param_3[4]);\n  }" (if "if") (parenthesized_expression "(uVar4 == 3)" (( "(") (binary_expression "uVar4 == 3" (identifier "uVar4") (== "==") (number_literal "3")) () ")")) (compound_statement "{\n    return (uint)(param_2[4] == param_3[4]);\n  }" ({ "{") (return_statement "return (uint)(param_2[4] == param_3[4]);" (return "return") (call_expression "(uint)(param_2[4] == param_3[4])" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(param_2[4] == param_3[4])" (( "(") (binary_expression "param_2[4] == param_3[4]" (subscript_expression "param_2[4]" (identifier "param_2") ([ "[") (number_literal "4") (] "]")) (== "==") (subscript_expression "param_3[4]" (identifier "param_3") ([ "[") (number_literal "4") (] "]"))) () ")"))) (; ";")) (} "}"))) (if_statement "if (uVar4 < 4) {\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }\n  else if (uVar4 < 7) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(uVar4 < 4)" (( "(") (binary_expression "uVar4 < 4" (identifier "uVar4") (< "<") (number_literal "4")) () ")")) (compound_statement "{\n    if (uVar4 == 2) {\n      return 1;\n    }\n  }" ({ "{") (if_statement "if (uVar4 == 2) {\n      return 1;\n    }" (if "if") (parenthesized_expression "(uVar4 == 2)" (( "(") (binary_expression "uVar4 == 2" (identifier "uVar4") (== "==") (number_literal "2")) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))) (} "}")) (else_clause "else if (uVar4 < 7) {\n    return 1;\n  }" (else "else") (if_statement "if (uVar4 < 7) {\n    return 1;\n  }" (if "if") (parenthesized_expression "(uVar4 < 7)" (( "(") (binary_expression "uVar4 < 7" (identifier "uVar4") (< "<") (number_literal "7")) () ")")) (compound_statement "{\n    return 1;\n  }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}"))))) (expression_statement "plVar6 = *(long **)(param_1 + 0x58);" (assignment_expression "plVar6 = *(long **)(param_1 + 0x58)" (identifier "plVar6") (= "=") (pointer_expression "*(long **)(param_1 + 0x58)" (* "*") (cast_expression "(long **)(param_1 + 0x58)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")"))))) (; ";")) (expression_statement "local_58 = plVar6;" (assignment_expression "local_58 = plVar6" (identifier "local_58") (= "=") (identifier "plVar6")) (; ";")) (for_statement "for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }" (for "for") (( "(") (; ";") (binary_expression "plVar6 != (long *)0x0" (identifier "plVar6") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) (; ";") (assignment_expression "plVar6 = (long *)*plVar6" (identifier "plVar6") (= "=") (cast_expression "(long *)*plVar6" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar6" (* "*") (identifier "plVar6")))) () ")") (compound_statement "{\nLAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }\n  }" ({ "{") (labeled_statement "LAB_0012b498:\n    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }" (statement_identifier "LAB_0012b498") (: ":") (if_statement "if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {\n      return 1;\n    }" (if "if") (parenthesized_expression "((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2]))" (( "(") (binary_expression "(param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])" (parenthesized_expression "(param_2 == (uint *)plVar6[1])" (( "(") (binary_expression "param_2 == (uint *)plVar6[1]" (identifier "param_2") (== "==") (cast_expression "(uint *)plVar6[1]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar6[1]" (identifier "plVar6") ([ "[") (number_literal "1") (] "]")))) () ")")) (&& "&&") (parenthesized_expression "(param_3 == (uint *)plVar6[2])" (( "(") (binary_expression "param_3 == (uint *)plVar6[2]" (identifier "param_3") (== "==") (cast_expression "(uint *)plVar6[2]" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar6[2]" (identifier "plVar6") ([ "[") (number_literal "2") (] "]")))) () ")"))) () ")")) (compound_statement "{\n      return 1;\n    }" ({ "{") (return_statement "return 1;" (return "return") (number_literal "1") (; ";")) (} "}")))) (} "}"))) (expression_statement "*(long ***)(param_1 + 0x58) = &local_58;" (assignment_expression "*(long ***)(param_1 + 0x58) = &local_58" (pointer_expression "*(long ***)(param_1 + 0x58)" (* "*") (cast_expression "(long ***)(param_1 + 0x58)" (( "(") (type_descriptor "long ***" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "***" (* "*") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*"))))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (pointer_expression "&local_58" (& "&") (identifier "local_58"))) (; ";")) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (; ";")) (switch_statement "switch(uVar4) {\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    \n    abort();\n  }" (switch "switch") (parenthesized_expression "(uVar4)" (( "(") (identifier "uVar4") () ")")) (compound_statement "{\n  case 7:\n  case 8:\n  case 9:\n  case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;\n  case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;\n  case 0xc:\n  case 0xe:\n  case 0x14:\n  case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;\n  case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;\n  case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;\n  case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;\n  case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;\n  case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;\n  case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;\n  case 0x16:\n  case 0x17:\n    goto switchD_0012b468_caseD_16;\n  default:\n                    \n    abort();\n  }" ({ "{") (case_statement "case 7:" (case "case") (number_literal "7") (: ":")) (case_statement "case 8:" (case "case") (number_literal "8") (: ":")) (case_statement "case 9:" (case "case") (number_literal "9") (: ":")) (case_statement "case 10:\n    plVar11 = *(long **)(param_2 + 4);\n    plVar9 = *(long **)(param_3 + 4);\n    if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }\n    if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }\nLAB_0012b55d:\n    uVar4 = 0;\n    break;" (case "case") (number_literal "10") (: ":") (expression_statement "plVar11 = *(long **)(param_2 + 4);" (assignment_expression "plVar11 = *(long **)(param_2 + 4)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_2 + 4)" (* "*") (cast_expression "(long **)(param_2 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "plVar9 = *(long **)(param_3 + 4);" (assignment_expression "plVar9 = *(long **)(param_3 + 4)" (identifier "plVar9") (= "=") (pointer_expression "*(long **)(param_3 + 4)" (* "*") (cast_expression "(long **)(param_3 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (plVar11 == (long *)0x0) {\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }" (if "if") (parenthesized_expression "(plVar11 == (long *)0x0)" (( "(") (binary_expression "plVar11 == (long *)0x0" (identifier "plVar11") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar4 = (uint)(plVar9 == (long *)0x0);\n      break;\n    }" ({ "{") (expression_statement "uVar4 = (uint)(plVar9 == (long *)0x0);" (assignment_expression "uVar4 = (uint)(plVar9 == (long *)0x0)" (identifier "uVar4") (= "=") (call_expression "(uint)(plVar9 == (long *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(plVar9 == (long *)0x0)" (( "(") (binary_expression "plVar9 == (long *)0x0" (identifier "plVar9") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")))) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (if_statement "if (plVar9 != (long *)0x0) {\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }" (if "if") (parenthesized_expression "(plVar9 != (long *)0x0)" (( "(") (binary_expression "plVar9 != (long *)0x0" (identifier "plVar9") (!= "!=") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }\n      lVar10 = *plVar11;\n      lVar15 = *plVar9;\n      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }\n    }" ({ "{") (if_statement "if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {\n        uVar4 = 1;\n        break;\n      }" (if "if") (parenthesized_expression "((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc)))" (( "(") (binary_expression "(*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&\n         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))" (parenthesized_expression "(*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc))" (( "(") (binary_expression "*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)" (pointer_expression "*(uint *)(param_1 + 0x38)" (* "*") (cast_expression "(uint *)(param_1 + 0x38)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_1 + 0x38)" (( "(") (binary_expression "param_1 + 0x38" (identifier "param_1") (+ "+") (number_literal "0x38")) () ")")))) (< "<") (pointer_expression "*(uint *)((long)plVar11 + 0xc)" (* "*") (cast_expression "(uint *)((long)plVar11 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + 0xc)" (( "(") (binary_expression "(long)plVar11 + 0xc" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (number_literal "0xc")) () ")"))))) () ")")) (&& "&&") (parenthesized_expression "(*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))" (( "(") (binary_expression "*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc)" (pointer_expression "*(uint *)((long)plVar11 + 0xc)" (* "*") (cast_expression "(uint *)((long)plVar11 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar11 + 0xc)" (( "(") (binary_expression "(long)plVar11 + 0xc" (cast_expression "(long)plVar11" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar11")) (+ "+") (number_literal "0xc")) () ")")))) (== "==") (pointer_expression "*(uint *)((long)plVar9 + 0xc)" (* "*") (cast_expression "(uint *)((long)plVar9 + 0xc)" (( "(") (type_descriptor "uint *" (type_identifier "uint") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)plVar9 + 0xc)" (( "(") (binary_expression "(long)plVar9 + 0xc" (cast_expression "(long)plVar9" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "plVar9")) (+ "+") (number_literal "0xc")) () ")"))))) () ")"))) () ")")) (compound_statement "{\n        uVar4 = 1;\n        break;\n      }" ({ "{") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" (identifier "lVar10") (= "=") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))) (; ";")) (expression_statement "lVar15 = *plVar9;" (assignment_expression "lVar15 = *plVar9" (identifier "lVar15") (= "=") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) (; ";")) (if_statement "if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }" (if "if") (parenthesized_expression "((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0)))))" (( "(") (binary_expression "(((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&\n         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))" (parenthesized_expression "(((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0)))" (( "(") (binary_expression "((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))" (parenthesized_expression "((lVar10 == 0) == (lVar15 == 0))" (( "(") (binary_expression "(lVar10 == 0) == (lVar15 == 0)" (parenthesized_expression "(lVar10 == 0)" (( "(") (binary_expression "lVar10 == 0" (identifier "lVar10") (== "==") (number_literal "0")) () ")")) (== "==") (parenthesized_expression "(lVar15 == 0)" (( "(") (binary_expression "lVar15 == 0" (identifier "lVar15") (== "==") (number_literal "0")) () ")"))) () ")")) (&& "&&") (parenthesized_expression "((plVar11[2] == 0) == (plVar9[2] == 0))" (( "(") (binary_expression "(plVar11[2] == 0) == (plVar9[2] == 0)" (parenthesized_expression "(plVar11[2] == 0)" (( "(") (binary_expression "plVar11[2] == 0" (subscript_expression "plVar11[2]" (identifier "plVar11") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")")) (== "==") (parenthesized_expression "(plVar9[2] == 0)" (( "(") (binary_expression "plVar9[2] == 0" (subscript_expression "plVar9[2]" (identifier "plVar9") ([ "[") (number_literal "2") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))" (( "(") (parenthesized_expression "((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0)))" (( "(") (binary_expression "(plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))" (binary_expression "(plVar11[3] == 0) == (plVar9[3] == 0)" (parenthesized_expression "(plVar11[3] == 0)" (( "(") (binary_expression "plVar11[3] == 0" (subscript_expression "plVar11[3]" (identifier "plVar11") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")")) (== "==") (parenthesized_expression "(plVar9[3] == 0)" (( "(") (binary_expression "plVar9[3] == 0" (subscript_expression "plVar9[3]" (identifier "plVar9") ([ "[") (number_literal "3") (] "]")) (== "==") (number_literal "0")) () ")"))) (&& "&&") (parenthesized_expression "((plVar11[4] == 0) == (plVar9[4] == 0))" (( "(") (binary_expression "(plVar11[4] == 0) == (plVar9[4] == 0)" (parenthesized_expression "(plVar11[4] == 0)" (( "(") (binary_expression "plVar11[4] == 0" (subscript_expression "plVar11[4]" (identifier "plVar11") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) () ")")) (== "==") (parenthesized_expression "(plVar9[4] == 0)" (( "(") (binary_expression "plVar9[4] == 0" (subscript_expression "plVar9[4]" (identifier "plVar9") ([ "[") (number_literal "4") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")"))) () ")")) () ")"))) () ")")) (compound_statement "{\n        lVar12 = 0;\n        if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;\n        lVar10 = plVar11[2];\n        if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }\nLAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];\n        if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }\n        goto LAB_0012b941;\n      }" ({ "{") (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" (identifier "lVar12") (= "=") (number_literal "0")) (; ";")) (if_statement "if (lVar10 != 0) {\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" (if "if") (parenthesized_expression "(lVar10 != 0)" (( "(") (binary_expression "lVar10 != 0" (identifier "lVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" ({ "{") (do_statement "do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          } while (uVar4 != 0);" (do "do") (compound_statement "{\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }\n            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            pcVar16 = (char *)*puVar17;\n            pcVar14 = (char *)*puVar13;\n            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;\n            if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }\n            iVar5 = strcmp(pcVar14,pcVar16);\n            if (iVar5 != 0) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);\n            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);\n            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);\n            plVar6 = local_58;\n          }" ({ "{") (expression_statement "puVar13 = *(undefined8 **)(lVar10 + lVar12);" (assignment_expression "puVar13 = *(undefined8 **)(lVar10 + lVar12)" (identifier "puVar13") (= "=") (pointer_expression "*(undefined8 **)(lVar10 + lVar12)" (* "*") (cast_expression "(undefined8 **)(lVar10 + lVar12)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar10 + lVar12)" (( "(") (binary_expression "lVar10 + lVar12" (identifier "lVar10") (+ "+") (identifier "lVar12")) () ")"))))) (; ";")) (expression_statement "puVar17 = *(undefined8 **)(lVar15 + lVar12);" (assignment_expression "puVar17 = *(undefined8 **)(lVar15 + lVar12)" (identifier "puVar17") (= "=") (pointer_expression "*(undefined8 **)(lVar15 + lVar12)" (* "*") (cast_expression "(undefined8 **)(lVar15 + lVar12)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar15 + lVar12)" (( "(") (binary_expression "lVar15 + lVar12" (identifier "lVar15") (+ "+") (identifier "lVar12")) () ")"))))) (; ";")) (if_statement "if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }" (if "if") (parenthesized_expression "(puVar13 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar13 == (undefined8 *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b971;\n            }" ({ "{") (if_statement "if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar17 != (undefined8 *)0x0" (identifier "puVar17") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (goto_statement "goto LAB_0012b971;" (goto "goto") (statement_identifier "LAB_0012b971") (; ";")) (} "}"))) (if_statement "if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(puVar17 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar17 == (undefined8 *)0x0" (identifier "puVar17") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (expression_statement "pcVar16 = (char *)*puVar17;" (assignment_expression "pcVar16 = (char *)*puVar17" (identifier "pcVar16") (= "=") (cast_expression "(char *)*puVar17" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (expression_statement "pcVar14 = (char *)*puVar13;" (assignment_expression "pcVar14 = (char *)*puVar13" (identifier "pcVar14") (= "=") (cast_expression "(char *)*puVar13" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar13" (* "*") (identifier "puVar13")))) (; ";")) (if_statement "if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2]))" (( "(") (binary_expression "(*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])" (parenthesized_expression "(*pcVar14 != *pcVar16)" (( "(") (binary_expression "*pcVar14 != *pcVar16" (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) (!= "!=") (pointer_expression "*pcVar16" (* "*") (identifier "pcVar16"))) () ")")) (|| "||") (parenthesized_expression "(puVar13[2] != puVar17[2])" (( "(") (binary_expression "puVar13[2] != puVar17[2]" (subscript_expression "puVar13[2]" (identifier "puVar13") ([ "[") (number_literal "2") (] "]")) (!= "!=") (subscript_expression "puVar17[2]" (identifier "puVar17") ([ "[") (number_literal "2") (] "]"))) () ")"))) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (if_statement "if (*(int *)((long)puVar13 + 0x14) == 0) {\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }\n            else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }" (if "if") (parenthesized_expression "(*(int *)((long)puVar13 + 0x14) == 0)" (( "(") (binary_expression "*(int *)((long)puVar13 + 0x14) == 0" (pointer_expression "*(int *)((long)puVar13 + 0x14)" (* "*") (cast_expression "(int *)((long)puVar13 + 0x14)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)puVar13 + 0x14)" (( "(") (binary_expression "(long)puVar13 + 0x14" (cast_expression "(long)puVar13" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar13")) (+ "+") (number_literal "0x14")) () ")")))) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;\n            }" ({ "{") (if_statement "if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "((char *)puVar13[3] != (char *)puVar17[3])" (( "(") (binary_expression "(char *)puVar13[3] != (char *)puVar17[3]" (cast_expression "(char *)puVar13[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[3]" (identifier "puVar13") ([ "[") (number_literal "3") (] "]"))) (!= "!=") (cast_expression "(char *)puVar17[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar17[3]" (identifier "puVar17") ([ "[") (number_literal "3") (] "]")))) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (} "}")) (else_clause "else {\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }" (else "else") (compound_statement "{\n              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);\n              if (iVar5 != 0) goto LAB_0012b7fc;\n            }" ({ "{") (expression_statement "iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);" (assignment_expression "iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3])" (identifier "iVar5") (= "=") (call_expression "strcmp((char *)puVar13[3],(char *)puVar17[3])" (identifier "strcmp") (argument_list "((char *)puVar13[3],(char *)puVar17[3])" (( "(") (cast_expression "(char *)puVar13[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[3]" (identifier "puVar13") ([ "[") (number_literal "3") (] "]"))) (, ",") (cast_expression "(char *)puVar17[3]" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar17[3]" (identifier "puVar17") ([ "[") (number_literal "3") (] "]"))) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (} "}")))) (expression_statement "iVar5 = strcmp(pcVar14,pcVar16);" (assignment_expression "iVar5 = strcmp(pcVar14,pcVar16)" (identifier "iVar5") (= "=") (call_expression "strcmp(pcVar14,pcVar16)" (identifier "strcmp") (argument_list "(pcVar14,pcVar16)" (( "(") (identifier "pcVar14") (, ",") (identifier "pcVar16") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (expression_statement "lVar12 = lVar12 + 8;" (assignment_expression "lVar12 = lVar12 + 8" (identifier "lVar12") (= "=") (binary_expression "lVar12 + 8" (identifier "lVar12") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);" (assignment_expression "uVar7 = FUN_0012b0d0(param_1,puVar17[1],0)" (identifier "uVar7") (= "=") (call_expression "FUN_0012b0d0(param_1,puVar17[1],0)" (identifier "FUN_0012b0d0") (argument_list "(param_1,puVar17[1],0)" (( "(") (identifier "param_1") (, ",") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);" (assignment_expression "uVar8 = FUN_0012b0d0(param_1,puVar13[1],0)" (identifier "uVar8") (= "=") (call_expression "FUN_0012b0d0(param_1,puVar13[1],0)" (identifier "FUN_0012b0d0") (argument_list "(param_1,puVar13[1],0)" (( "(") (identifier "param_1") (, ",") (subscript_expression "puVar13[1]" (identifier "puVar13") ([ "[") (number_literal "1") (] "]")) (, ",") (number_literal "0") () ")")))) (; ";")) (expression_statement "uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);" (assignment_expression "uVar4 = FUN_0012bab0(param_1,uVar8,uVar7)" (identifier "uVar4") (= "=") (call_expression "FUN_0012bab0(param_1,uVar8,uVar7)" (identifier "FUN_0012bab0") (argument_list "(param_1,uVar8,uVar7)" (( "(") (identifier "param_1") (, ",") (identifier "uVar8") (, ",") (identifier "uVar7") () ")")))) (; ";")) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (labeled_statement "LAB_0012b971:\n        if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;" (statement_identifier "LAB_0012b971") (: ":") (if_statement "if ((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))\n        break;" (if "if") (parenthesized_expression "((plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))" (( "(") (binary_expression "(plVar11[4] != 0) &&\n           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0)" (parenthesized_expression "(plVar11[4] != 0)" (( "(") (binary_expression "plVar11[4] != 0" (subscript_expression "plVar11[4]" (identifier "plVar11") ([ "[") (number_literal "4") (] "]")) (!= "!=") (number_literal "0")) () ")")) (&& "&&") (parenthesized_expression "(uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0)" (( "(") (comma_expression "uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0" (assignment_expression "uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4])" (identifier "uVar4") (= "=") (call_expression "FUN_0012bab0(param_1,plVar11[4],plVar9[4])" (identifier "FUN_0012bab0") (argument_list "(param_1,plVar11[4],plVar9[4])" (( "(") (identifier "param_1") (, ",") (subscript_expression "plVar11[4]" (identifier "plVar11") ([ "[") (number_literal "4") (] "]")) (, ",") (subscript_expression "plVar9[4]" (identifier "plVar9") ([ "[") (number_literal "4") (] "]")) () ")")))) (, ",") (comma_expression "plVar6 = local_58, uVar4 == 0" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (, ",") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";")))) (expression_statement "lVar10 = plVar11[2];" (assignment_expression "lVar10 = plVar11[2]" (identifier "lVar10") (= "=") (subscript_expression "plVar11[2]" (identifier "plVar11") ([ "[") (number_literal "2") (] "]"))) (; ";")) (if_statement "if (lVar10 != 0) {\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" (if "if") (parenthesized_expression "(lVar10 != 0)" (( "(") (binary_expression "lVar10 != 0" (identifier "lVar10") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n          lVar15 = plVar9[2];\n          lVar12 = 0;\n          do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);\n          break;\n        }" ({ "{") (expression_statement "lVar15 = plVar9[2];" (assignment_expression "lVar15 = plVar9[2]" (identifier "lVar15") (= "=") (subscript_expression "plVar9[2]" (identifier "plVar9") ([ "[") (number_literal "2") (] "]"))) (; ";")) (expression_statement "lVar12 = 0;" (assignment_expression "lVar12 = 0" (identifier "lVar12") (= "=") (number_literal "0")) (; ";")) (do_statement "do {\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          } while (uVar4 != 0);" (do "do") (compound_statement "{\n            puVar13 = *(undefined8 **)(lVar10 + lVar12);\n            puVar17 = *(undefined8 **)(lVar15 + lVar12);\n            if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }\n            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;\n            lVar12 = lVar12 + 8;\n            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);\n            plVar6 = local_58;\n          }" ({ "{") (expression_statement "puVar13 = *(undefined8 **)(lVar10 + lVar12);" (assignment_expression "puVar13 = *(undefined8 **)(lVar10 + lVar12)" (identifier "puVar13") (= "=") (pointer_expression "*(undefined8 **)(lVar10 + lVar12)" (* "*") (cast_expression "(undefined8 **)(lVar10 + lVar12)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar10 + lVar12)" (( "(") (binary_expression "lVar10 + lVar12" (identifier "lVar10") (+ "+") (identifier "lVar12")) () ")"))))) (; ";")) (expression_statement "puVar17 = *(undefined8 **)(lVar15 + lVar12);" (assignment_expression "puVar17 = *(undefined8 **)(lVar15 + lVar12)" (identifier "puVar17") (= "=") (pointer_expression "*(undefined8 **)(lVar15 + lVar12)" (* "*") (cast_expression "(undefined8 **)(lVar15 + lVar12)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(lVar15 + lVar12)" (( "(") (binary_expression "lVar15 + lVar12" (identifier "lVar15") (+ "+") (identifier "lVar12")) () ")"))))) (; ";")) (if_statement "if (puVar13 == (undefined8 *)0x0) {\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }" (if "if") (parenthesized_expression "(puVar13 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar13 == (undefined8 *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;\n              goto LAB_0012b9f3;\n            }" ({ "{") (if_statement "if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar17 != (undefined8 *)0x0" (identifier "puVar17") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (goto_statement "goto LAB_0012b9f3;" (goto "goto") (statement_identifier "LAB_0012b9f3") (; ";")) (} "}"))) (if_statement "if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2)))" (( "(") (binary_expression "((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||\n               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))" (parenthesized_expression "((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1]))" (( "(") (binary_expression "(puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])" (parenthesized_expression "(puVar17 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar17 == (undefined8 *)0x0" (identifier "puVar17") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (|| "||") (parenthesized_expression "(puVar13[1] != puVar17[1])" (( "(") (binary_expression "puVar13[1] != puVar17[1]" (subscript_expression "puVar13[1]" (identifier "puVar13") ([ "[") (number_literal "1") (] "]")) (!= "!=") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "(*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))" (( "(") (binary_expression "*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2)" (pointer_expression "*(int *)(puVar13 + 2)" (* "*") (cast_expression "(int *)(puVar13 + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar13 + 2)" (( "(") (binary_expression "puVar13 + 2" (identifier "puVar13") (+ "+") (number_literal "2")) () ")")))) (!= "!=") (pointer_expression "*(int *)(puVar17 + 2)" (* "*") (cast_expression "(int *)(puVar17 + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(puVar17 + 2)" (( "(") (binary_expression "puVar17 + 2" (identifier "puVar17") (+ "+") (number_literal "2")) () ")"))))) () ")"))) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (expression_statement "lVar12 = lVar12 + 8;" (assignment_expression "lVar12 = lVar12 + 8" (identifier "lVar12") (= "=") (binary_expression "lVar12 + 8" (identifier "lVar12") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);" (assignment_expression "uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17)" (identifier "uVar4") (= "=") (call_expression "FUN_0012bab0(param_1,*puVar13,*puVar17)" (identifier "FUN_0012bab0") (argument_list "(param_1,*puVar13,*puVar17)" (( "(") (identifier "param_1") (, ",") (pointer_expression "*puVar13" (* "*") (identifier "puVar13")) (, ",") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")) () ")")))) (; ";")) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(uVar4 != 0)" (( "(") (binary_expression "uVar4 != 0" (identifier "uVar4") (!= "!=") (number_literal "0")) () ")")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (labeled_statement "LAB_0012b9f3:\n        puVar13 = (undefined8 *)plVar11[3];" (statement_identifier "LAB_0012b9f3") (: ":") (expression_statement "puVar13 = (undefined8 *)plVar11[3];" (assignment_expression "puVar13 = (undefined8 *)plVar11[3]" (identifier "puVar13") (= "=") (cast_expression "(undefined8 *)plVar11[3]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar11[3]" (identifier "plVar11") ([ "[") (number_literal "3") (] "]")))) (; ";"))) (if_statement "if (puVar13 != (undefined8 *)0x0) {\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }" (if "if") (parenthesized_expression "(puVar13 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar13 != (undefined8 *)0x0" (identifier "puVar13") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n          puVar17 = (undefined8 *)plVar9[3];\n          while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }\n          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);\n          plVar6 = local_58;\n          break;\n        }" ({ "{") (expression_statement "puVar17 = (undefined8 *)plVar9[3];" (assignment_expression "puVar17 = (undefined8 *)plVar9[3]" (identifier "puVar17") (= "=") (cast_expression "(undefined8 *)plVar9[3]" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "plVar9[3]" (identifier "plVar9") ([ "[") (number_literal "3") (] "]")))) (; ";")) (while_statement "while( true ) {\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }" (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (compound_statement "{\n            puVar19 = (undefined8 *)*puVar13;\n            puVar2 = (undefined8 *)*puVar17;\n            if (puVar19 == (undefined8 *)0x0) break;\n            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;\n            if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;\n            if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }\n            puVar13 = puVar13 + 1;\n            puVar17 = puVar17 + 1;\n          }" ({ "{") (expression_statement "puVar19 = (undefined8 *)*puVar13;" (assignment_expression "puVar19 = (undefined8 *)*puVar13" (identifier "puVar19") (= "=") (cast_expression "(undefined8 *)*puVar13" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar13" (* "*") (identifier "puVar13")))) (; ";")) (expression_statement "puVar2 = (undefined8 *)*puVar17;" (assignment_expression "puVar2 = (undefined8 *)*puVar17" (identifier "puVar2") (= "=") (cast_expression "(undefined8 *)*puVar17" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (if_statement "if (puVar19 == (undefined8 *)0x0) break;" (if "if") (parenthesized_expression "(puVar19 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar19 == (undefined8 *)0x0" (identifier "puVar19") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (if_statement "if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(puVar2 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined8 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (if_statement "if (((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0)))" (( "(") (binary_expression "((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||\n               ((puVar19[1] == 0) != (puVar2[1] == 0))" (parenthesized_expression "((*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0))" (( "(") (binary_expression "(*(char *)*puVar19 != *(char *)*puVar2) ||\n                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)" (parenthesized_expression "(*(char *)*puVar19 != *(char *)*puVar2)" (( "(") (binary_expression "*(char *)*puVar19 != *(char *)*puVar2" (pointer_expression "*(char *)*puVar19" (* "*") (cast_expression "(char *)*puVar19" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (!= "!=") (pointer_expression "*(char *)*puVar2" (* "*") (cast_expression "(char *)*puVar2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))))) () ")")) (|| "||") (parenthesized_expression "(iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)" (( "(") (comma_expression "iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0" (assignment_expression "iVar5 = strcmp((char *)*puVar19,(char *)*puVar2)" (identifier "iVar5") (= "=") (call_expression "strcmp((char *)*puVar19,(char *)*puVar2)" (identifier "strcmp") (argument_list "((char *)*puVar19,(char *)*puVar2)" (( "(") (cast_expression "(char *)*puVar19" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (, ",") (cast_expression "(char *)*puVar2" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar2" (* "*") (identifier "puVar2"))) () ")")))) (, ",") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((puVar19[1] == 0) != (puVar2[1] == 0))" (( "(") (binary_expression "(puVar19[1] == 0) != (puVar2[1] == 0)" (parenthesized_expression "(puVar19[1] == 0)" (( "(") (binary_expression "puVar19[1] == 0" (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (!= "!=") (parenthesized_expression "(puVar2[1] == 0)" (( "(") (binary_expression "puVar2[1] == 0" (subscript_expression "puVar2[1]" (identifier "puVar2") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")"))) () ")"))) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (if_statement "if (puVar19[1] == 0) {\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }" (if "if") (parenthesized_expression "(puVar19[1] == 0)" (( "(") (binary_expression "puVar19[1] == 0" (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\n                    \n              pcVar3 = (code *)invalidInstructionException();\n              (*pcVar3)();\n            }" ({ "{") (expression_statement "pcVar3 = (code *)invalidInstructionException();" (assignment_expression "pcVar3 = (code *)invalidInstructionException()" (identifier "pcVar3") (= "=") (cast_expression "(code *)invalidInstructionException()" (( "(") (type_descriptor "code *" (type_identifier "code") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "invalidInstructionException()" (identifier "invalidInstructionException") (argument_list "()" (( "(") () ")"))))) (; ";")) (expression_statement "(*pcVar3)();" (call_expression "(*pcVar3)()" (parenthesized_expression "(*pcVar3)" (( "(") (pointer_expression "*pcVar3" (* "*") (identifier "pcVar3")) () ")")) (argument_list "()" (( "(") () ")"))) (; ";")) (} "}"))) (expression_statement "puVar13 = puVar13 + 1;" (assignment_expression "puVar13 = puVar13 + 1" (identifier "puVar13") (= "=") (binary_expression "puVar13 + 1" (identifier "puVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "puVar17 = puVar17 + 1;" (assignment_expression "puVar17 = puVar17 + 1" (identifier "puVar17") (= "=") (binary_expression "puVar17 + 1" (identifier "puVar17") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "uVar4 = (uint)(puVar2 == (undefined8 *)0x0);" (assignment_expression "uVar4 = (uint)(puVar2 == (undefined8 *)0x0)" (identifier "uVar4") (= "=") (call_expression "(uint)(puVar2 == (undefined8 *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar2 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar2 == (undefined8 *)0x0" (identifier "puVar2") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")))) (; ";")) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (; ";")) (break_statement "break;" (break "break") (; ";")) (} "}"))) (goto_statement "goto LAB_0012b941;" (goto "goto") (statement_identifier "LAB_0012b941") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0012b55d:\n    uVar4 = 0;" (statement_identifier "LAB_0012b55d") (: ":") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";"))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xb:\n    puVar13 = *(undefined8 **)(param_2 + 4);\n    puVar17 = *(undefined8 **)(param_3 + 4);\n    if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }\n    break;" (case "case") (number_literal "0xb") (: ":") (expression_statement "puVar13 = *(undefined8 **)(param_2 + 4);" (assignment_expression "puVar13 = *(undefined8 **)(param_2 + 4)" (identifier "puVar13") (= "=") (pointer_expression "*(undefined8 **)(param_2 + 4)" (* "*") (cast_expression "(undefined8 **)(param_2 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "puVar17 = *(undefined8 **)(param_3 + 4);" (assignment_expression "puVar17 = *(undefined8 **)(param_3 + 4)" (identifier "puVar17") (= "=") (pointer_expression "*(undefined8 **)(param_3 + 4)" (* "*") (cast_expression "(undefined8 **)(param_3 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (if_statement "if (puVar13 == (undefined8 *)0x0) {\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }\n    else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }" (if "if") (parenthesized_expression "(puVar13 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar13 == (undefined8 *)0x0" (identifier "puVar13") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);\n    }" ({ "{") (expression_statement "uVar4 = (uint)(puVar17 == (undefined8 *)0x0);" (assignment_expression "uVar4 = (uint)(puVar17 == (undefined8 *)0x0)" (identifier "uVar4") (= "=") (call_expression "(uint)(puVar17 == (undefined8 *)0x0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(puVar17 == (undefined8 *)0x0)" (( "(") (binary_expression "puVar17 == (undefined8 *)0x0" (identifier "puVar17") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")))) (; ";")) (} "}")) (else_clause "else {\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }" (else "else") (compound_statement "{\n      uVar4 = 0;\n      if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }\n    }" ({ "{") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (puVar17 != (undefined8 *)0x0) {\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }" (if "if") (parenthesized_expression "(puVar17 != (undefined8 *)0x0)" (( "(") (binary_expression "puVar17 != (undefined8 *)0x0" (identifier "puVar17") (!= "!=") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n        puVar19 = (undefined8 *)*puVar13;\n        plVar11 = (long *)*puVar17;\n        plVar9 = (long *)puVar13[1];\n        plVar18 = (long *)puVar17[1];\n        pcVar16 = (char *)*puVar19;\n        pcVar14 = (char *)*plVar11;\n        if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }\n      }" ({ "{") (expression_statement "puVar19 = (undefined8 *)*puVar13;" (assignment_expression "puVar19 = (undefined8 *)*puVar13" (identifier "puVar19") (= "=") (cast_expression "(undefined8 *)*puVar13" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar13" (* "*") (identifier "puVar13")))) (; ";")) (expression_statement "plVar11 = (long *)*puVar17;" (assignment_expression "plVar11 = (long *)*puVar17" (identifier "plVar11") (= "=") (cast_expression "(long *)*puVar17" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar17" (* "*") (identifier "puVar17")))) (; ";")) (expression_statement "plVar9 = (long *)puVar13[1];" (assignment_expression "plVar9 = (long *)puVar13[1]" (identifier "plVar9") (= "=") (cast_expression "(long *)puVar13[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar13[1]" (identifier "puVar13") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "plVar18 = (long *)puVar17[1];" (assignment_expression "plVar18 = (long *)puVar17[1]" (identifier "plVar18") (= "=") (cast_expression "(long *)puVar17[1]" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar17[1]" (identifier "puVar17") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "pcVar16 = (char *)*puVar19;" (assignment_expression "pcVar16 = (char *)*puVar19" (identifier "pcVar16") (= "=") (cast_expression "(char *)*puVar19" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (expression_statement "pcVar14 = (char *)*plVar11;" (assignment_expression "pcVar14 = (char *)*plVar11" (identifier "pcVar14") (= "=") (cast_expression "(char *)*plVar11" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11")))) (; ";")) (if_statement "if (pcVar16 == (char *)0x0) {\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }\n        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" (if "if") (parenthesized_expression "(pcVar16 == (char *)0x0)" (( "(") (binary_expression "pcVar16 == (char *)0x0" (identifier "pcVar16") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\nLAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);\n        }" ({ "{") (labeled_statement "LAB_0012b950:\n          uVar4 = (uint)(*plVar11 == 0);" (statement_identifier "LAB_0012b950") (: ":") (expression_statement "uVar4 = (uint)(*plVar11 == 0);" (assignment_expression "uVar4 = (uint)(*plVar11 == 0)" (identifier "uVar4") (= "=") (call_expression "(uint)(*plVar11 == 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(*plVar11 == 0)" (( "(") (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (== "==") (number_literal "0")) () ")")))) (; ";"))) (} "}")) (else_clause "else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" (else "else") (if_statement "if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" (if "if") (parenthesized_expression "(((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9))" (( "(") (binary_expression "((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)" (parenthesized_expression "((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16))" (( "(") (binary_expression "(pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)" (parenthesized_expression "(pcVar14 != (char *)0x0)" (( "(") (binary_expression "pcVar14 != (char *)0x0" (identifier "pcVar14") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar14 == *pcVar16)" (( "(") (binary_expression "*pcVar14 == *pcVar16" (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14")) (== "==") (pointer_expression "*pcVar16" (* "*") (identifier "pcVar16"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*plVar18 == *plVar9)" (( "(") (binary_expression "*plVar18 == *plVar9" (pointer_expression "*plVar18" (* "*") (identifier "plVar18")) (== "==") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) () ")"))) () ")")) (compound_statement "{\n          do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));\n        }" ({ "{") (do_statement "do {\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));" (do "do") (compound_statement "{\n            iVar5 = strcmp(pcVar16,pcVar14);\n            if (iVar5 != 0) goto LAB_0012b55d;\n            puVar19 = puVar19 + 1;\n            pcVar16 = (char *)*puVar19;\n            plVar11 = plVar11 + 1;\n            plVar9 = plVar9 + 1;\n            plVar18 = plVar18 + 1;\n            pcVar14 = (char *)*plVar11;\n            if (pcVar16 == (char *)0x0) goto LAB_0012b950;\n            uVar4 = 0;\n          }" ({ "{") (expression_statement "iVar5 = strcmp(pcVar16,pcVar14);" (assignment_expression "iVar5 = strcmp(pcVar16,pcVar14)" (identifier "iVar5") (= "=") (call_expression "strcmp(pcVar16,pcVar14)" (identifier "strcmp") (argument_list "(pcVar16,pcVar14)" (( "(") (identifier "pcVar16") (, ",") (identifier "pcVar14") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) goto LAB_0012b55d;" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012b55d;" (goto "goto") (statement_identifier "LAB_0012b55d") (; ";"))) (expression_statement "puVar19 = puVar19 + 1;" (assignment_expression "puVar19 = puVar19 + 1" (identifier "puVar19") (= "=") (binary_expression "puVar19 + 1" (identifier "puVar19") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar16 = (char *)*puVar19;" (assignment_expression "pcVar16 = (char *)*puVar19" (identifier "pcVar16") (= "=") (cast_expression "(char *)*puVar19" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19")))) (; ";")) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" (identifier "plVar11") (= "=") (binary_expression "plVar11 + 1" (identifier "plVar11") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "plVar9 = plVar9 + 1;" (assignment_expression "plVar9 = plVar9 + 1" (identifier "plVar9") (= "=") (binary_expression "plVar9 + 1" (identifier "plVar9") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "plVar18 = plVar18 + 1;" (assignment_expression "plVar18 = plVar18 + 1" (identifier "plVar18") (= "=") (binary_expression "plVar18 + 1" (identifier "plVar18") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "pcVar14 = (char *)*plVar11;" (assignment_expression "pcVar14 = (char *)*plVar11" (identifier "pcVar14") (= "=") (cast_expression "(char *)*plVar11" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*plVar11" (* "*") (identifier "plVar11")))) (; ";")) (if_statement "if (pcVar16 == (char *)0x0) goto LAB_0012b950;" (if "if") (parenthesized_expression "(pcVar16 == (char *)0x0)" (( "(") (binary_expression "pcVar16 == (char *)0x0" (identifier "pcVar16") (== "==") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0012b950;" (goto "goto") (statement_identifier "LAB_0012b950") (; ";"))) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18))" (( "(") (binary_expression "((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18)" (parenthesized_expression "((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14))" (( "(") (binary_expression "(pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)" (parenthesized_expression "(pcVar14 != (char *)0x0)" (( "(") (binary_expression "pcVar14 != (char *)0x0" (identifier "pcVar14") (!= "!=") (cast_expression "(char *)0x0" (( "(") (type_descriptor "char *" (primitive_type "char") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (&& "&&") (parenthesized_expression "(*pcVar16 == *pcVar14)" (( "(") (binary_expression "*pcVar16 == *pcVar14" (pointer_expression "*pcVar16" (* "*") (identifier "pcVar16")) (== "==") (pointer_expression "*pcVar14" (* "*") (identifier "pcVar14"))) () ")"))) () ")")) (&& "&&") (parenthesized_expression "(*plVar9 == *plVar18)" (( "(") (binary_expression "*plVar9 == *plVar18" (pointer_expression "*plVar9" (* "*") (identifier "plVar9")) (== "==") (pointer_expression "*plVar18" (* "*") (identifier "plVar18"))) () ")"))) () ")")) (; ";")) (} "}"))))) (} "}"))) (} "}")))) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xc:" (case "case") (number_literal "0xc") (: ":")) (case_statement "case 0xe:" (case "case") (number_literal "0xe") (: ":")) (case_statement "case 0x14:" (case "case") (number_literal "0x14") (: ":")) (case_statement "case 0x15:\n    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));\n    plVar6 = local_58;\n    break;" (case "case") (number_literal "0x15") (: ":") (expression_statement "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));" (assignment_expression "uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4))" (identifier "uVar4") (= "=") (call_expression "FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4))" (identifier "FUN_0012bab0") (argument_list "(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(param_2 + 4)" (* "*") (cast_expression "(undefined8 *)(param_2 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(param_3 + 4)" (* "*") (cast_expression "(undefined8 *)(param_3 + 4)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) () ")")))) (; ";")) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0xd:\n    uVar4 = 0;\n    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;\n    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\n    goto LAB_0012b7fc;" (case "case") (number_literal "0xd") (: ":") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))\n    break;" (if "if") (parenthesized_expression "(*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))" (( "(") (binary_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2)" (pointer_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 2)" (* "*") (cast_expression "(int *)(*(undefined8 **)(param_2 + 4) + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(undefined8 **)(param_2 + 4) + 2)" (( "(") (binary_expression "*(undefined8 **)(param_2 + 4) + 2" (pointer_expression "*(undefined8 **)(param_2 + 4)" (* "*") (cast_expression "(undefined8 **)(param_2 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "2")) () ")")))) (!= "!=") (pointer_expression "*(int *)(*(undefined8 **)(param_3 + 4) + 2)" (* "*") (cast_expression "(int *)(*(undefined8 **)(param_3 + 4) + 2)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(undefined8 **)(param_3 + 4) + 2)" (( "(") (binary_expression "*(undefined8 **)(param_3 + 4) + 2" (pointer_expression "*(undefined8 **)(param_3 + 4)" (* "*") (cast_expression "(undefined8 **)(param_3 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "2")) () ")"))))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));" (assignment_expression "iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" (identifier "iVar5") (= "=") (call_expression "FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" (identifier "FUN_0012bab0") (argument_list "(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" (( "(") (identifier "param_1") (, ",") (pointer_expression "**(undefined8 **)(param_2 + 4)" (* "*") (pointer_expression "*(undefined8 **)(param_2 + 4)" (* "*") (cast_expression "(undefined8 **)(param_2 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (, ",") (pointer_expression "**(undefined8 **)(param_3 + 4)" (* "*") (pointer_expression "*(undefined8 **)(param_3 + 4)" (* "*") (cast_expression "(undefined8 **)(param_3 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" ({ "{") (expression_statement "plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);" (assignment_expression "plVar6 = *(long **)(*(long *)(param_2 + 4) + 8)" (identifier "plVar6") (= "=") (pointer_expression "*(long **)(*(long *)(param_2 + 4) + 8)" (* "*") (cast_expression "(long **)(*(long *)(param_2 + 4) + 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" (( "(") (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" (* "*") (cast_expression "(long *)(param_2 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);" (assignment_expression "plVar11 = *(long **)(*(long *)(param_3 + 4) + 8)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(*(long *)(param_3 + 4) + 8)" (* "*") (cast_expression "(long **)(*(long *)(param_3 + 4) + 8)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" (( "(") (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" (* "*") (cast_expression "(long *)(param_3 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (if_statement "if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" (if "if") (parenthesized_expression "((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0))" (( "(") (binary_expression "(plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)" (parenthesized_expression "(plVar6 == (long *)0x0)" (( "(") (binary_expression "plVar6 == (long *)0x0" (identifier "plVar6") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (== "==") (parenthesized_expression "(plVar11 == (long *)0x0)" (( "(") (binary_expression "plVar11 == (long *)0x0" (identifier "plVar11") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" ({ "{") (if_statement "if (plVar6 == (long *)0x0) goto LAB_0012b941;" (if "if") (parenthesized_expression "(plVar6 == (long *)0x0)" (( "(") (binary_expression "plVar6 == (long *)0x0" (identifier "plVar6") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0012b941;" (goto "goto") (statement_identifier "LAB_0012b941") (; ";"))) (for_statement "for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" (for "for") (( "(") (; ";") (binary_expression "*plVar6 != 0" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (!= "!=") (number_literal "0")) (; ";") (assignment_expression "plVar6 = plVar6 + 1" (identifier "plVar6") (= "=") (binary_expression "plVar6 + 1" (identifier "plVar6") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" ({ "{") (if_statement "if (*plVar11 == 0) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(*plVar11 == 0)" (( "(") (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (expression_statement "iVar5 = FUN_0012bab0(param_1);" (assignment_expression "iVar5 = FUN_0012bab0(param_1)" (identifier "iVar5") (= "=") (call_expression "FUN_0012bab0(param_1)" (identifier "FUN_0012bab0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) goto LAB_0012b92c;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012b92c;" (goto "goto") (statement_identifier "LAB_0012b92c") (; ";"))) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" (identifier "plVar11") (= "=") (binary_expression "plVar11 + 1" (identifier "plVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0012b936;" (goto "goto") (statement_identifier "LAB_0012b936") (; ";")) (} "}"))) (} "}"))) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (case_statement "case 0xf:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;\n    goto LAB_0012b729;" (case "case") (number_literal "0xf") (: ":") (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_3 + 4)" (* "*") (cast_expression "(long **)(param_3 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" (identifier "plVar9") (= "=") (pointer_expression "*(long **)(param_2 + 4)" (* "*") (cast_expression "(long **)(param_2 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;" (if "if") (parenthesized_expression "((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2]))" (( "(") (binary_expression "(plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])" (parenthesized_expression "(plVar9[1] != plVar11[1])" (( "(") (binary_expression "plVar9[1] != plVar11[1]" (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]")) (!= "!=") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]"))) () ")")) (|| "||") (parenthesized_expression "(plVar9[2] != plVar11[2])" (( "(") (binary_expression "plVar9[2] != plVar11[2]" (subscript_expression "plVar9[2]" (identifier "plVar9") ([ "[") (number_literal "2") (] "]")) (!= "!=") (subscript_expression "plVar11[2]" (identifier "plVar11") ([ "[") (number_literal "2") (] "]"))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_0012b729;" (goto "goto") (statement_identifier "LAB_0012b729") (; ";"))) (case_statement "case 0x10:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;\n    goto LAB_0012b729;" (case "case") (number_literal "0x10") (: ":") (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_3 + 4)" (* "*") (cast_expression "(long **)(param_3 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" (identifier "plVar9") (= "=") (pointer_expression "*(long **)(param_2 + 4)" (* "*") (cast_expression "(long **)(param_2 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])) break;" (if "if") (parenthesized_expression "(((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4]))" (( "(") (binary_expression "((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||\n       ((int)plVar9[4] != (int)plVar11[4])" (parenthesized_expression "((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3]))" (( "(") (binary_expression "(plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])" (parenthesized_expression "(plVar9[2] != plVar11[2])" (( "(") (binary_expression "plVar9[2] != plVar11[2]" (subscript_expression "plVar9[2]" (identifier "plVar9") ([ "[") (number_literal "2") (] "]")) (!= "!=") (subscript_expression "plVar11[2]" (identifier "plVar11") ([ "[") (number_literal "2") (] "]"))) () ")")) (|| "||") (parenthesized_expression "(plVar9[3] != plVar11[3])" (( "(") (binary_expression "plVar9[3] != plVar11[3]" (subscript_expression "plVar9[3]" (identifier "plVar9") ([ "[") (number_literal "3") (] "]")) (!= "!=") (subscript_expression "plVar11[3]" (identifier "plVar11") ([ "[") (number_literal "3") (] "]"))) () ")"))) () ")")) (|| "||") (parenthesized_expression "((int)plVar9[4] != (int)plVar11[4])" (( "(") (binary_expression "(int)plVar9[4] != (int)plVar11[4]" (cast_expression "(int)plVar9[4]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar9[4]" (identifier "plVar9") ([ "[") (number_literal "4") (] "]"))) (!= "!=") (cast_expression "(int)plVar11[4]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar11[4]" (identifier "plVar11") ([ "[") (number_literal "4") (] "]")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (goto_statement "goto LAB_0012b729;" (goto "goto") (statement_identifier "LAB_0012b729") (; ";"))) (case_statement "case 0x11:\n    plVar11 = *(long **)(param_3 + 4);\n    plVar9 = *(long **)(param_2 + 4);\n    uVar4 = 0;\n    if ((int)plVar9[1] != (int)plVar11[1]) break;\nLAB_0012b729:\n    lVar10 = *plVar11;\n    lVar15 = *plVar9;\nLAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);\n    uVar4 = (uint)(iVar5 != 0);\n    plVar6 = local_58;\n    break;" (case "case") (number_literal "0x11") (: ":") (expression_statement "plVar11 = *(long **)(param_3 + 4);" (assignment_expression "plVar11 = *(long **)(param_3 + 4)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(param_3 + 4)" (* "*") (cast_expression "(long **)(param_3 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "plVar9 = *(long **)(param_2 + 4);" (assignment_expression "plVar9 = *(long **)(param_2 + 4)" (identifier "plVar9") (= "=") (pointer_expression "*(long **)(param_2 + 4)" (* "*") (cast_expression "(long **)(param_2 + 4)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (; ";")) (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((int)plVar9[1] != (int)plVar11[1]) break;" (if "if") (parenthesized_expression "((int)plVar9[1] != (int)plVar11[1])" (( "(") (binary_expression "(int)plVar9[1] != (int)plVar11[1]" (cast_expression "(int)plVar9[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar9[1]" (identifier "plVar9") ([ "[") (number_literal "1") (] "]"))) (!= "!=") (cast_expression "(int)plVar11[1]" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (subscript_expression "plVar11[1]" (identifier "plVar11") ([ "[") (number_literal "1") (] "]")))) () ")")) (break_statement "break;" (break "break") (; ";"))) (labeled_statement "LAB_0012b729:\n    lVar10 = *plVar11;" (statement_identifier "LAB_0012b729") (: ":") (expression_statement "lVar10 = *plVar11;" (assignment_expression "lVar10 = *plVar11" (identifier "lVar10") (= "=") (pointer_expression "*plVar11" (* "*") (identifier "plVar11"))) (; ";"))) (expression_statement "lVar15 = *plVar9;" (assignment_expression "lVar15 = *plVar9" (identifier "lVar15") (= "=") (pointer_expression "*plVar9" (* "*") (identifier "plVar9"))) (; ";")) (labeled_statement "LAB_0012b6fe:\n    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);" (statement_identifier "LAB_0012b6fe") (: ":") (expression_statement "iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);" (assignment_expression "iVar5 = FUN_0012bab0(param_1,lVar15,lVar10)" (identifier "iVar5") (= "=") (call_expression "FUN_0012bab0(param_1,lVar15,lVar10)" (identifier "FUN_0012bab0") (argument_list "(param_1,lVar15,lVar10)" (( "(") (identifier "param_1") (, ",") (identifier "lVar15") (, ",") (identifier "lVar10") () ")")))) (; ";"))) (expression_statement "uVar4 = (uint)(iVar5 != 0);" (assignment_expression "uVar4 = (uint)(iVar5 != 0)" (identifier "uVar4") (= "=") (call_expression "(uint)(iVar5 != 0)" (parenthesized_expression "(uint)" (( "(") (identifier "uint") () ")")) (argument_list "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")))) (; ";")) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x12:\n    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));\n    plVar6 = local_58;\n    if (uVar4 == 0) break;\n    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);\n    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);\n    goto LAB_0012b6fe;" (case "case") (number_literal "0x12") (: ":") (expression_statement "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));" (assignment_expression "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" (identifier "uVar4") (= "=") (call_expression "FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" (identifier "FUN_0012bab0") (argument_list "(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4))" (( "(") (identifier "param_1") (, ",") (pointer_expression "**(undefined8 **)(param_2 + 4)" (* "*") (pointer_expression "*(undefined8 **)(param_2 + 4)" (* "*") (cast_expression "(undefined8 **)(param_2 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (, ",") (pointer_expression "**(undefined8 **)(param_3 + 4)" (* "*") (pointer_expression "*(undefined8 **)(param_3 + 4)" (* "*") (cast_expression "(undefined8 **)(param_3 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (; ";")) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (; ";")) (if_statement "if (uVar4 == 0) break;" (if "if") (parenthesized_expression "(uVar4 == 0)" (( "(") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);" (assignment_expression "lVar10 = *(long *)(*(long *)(param_3 + 4) + 8)" (identifier "lVar10") (= "=") (pointer_expression "*(long *)(*(long *)(param_3 + 4) + 8)" (* "*") (cast_expression "(long *)(*(long *)(param_3 + 4) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" (( "(") (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" (* "*") (cast_expression "(long *)(param_3 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (expression_statement "lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);" (assignment_expression "lVar15 = *(long *)(*(long *)(param_2 + 4) + 8)" (identifier "lVar15") (= "=") (pointer_expression "*(long *)(*(long *)(param_2 + 4) + 8)" (* "*") (cast_expression "(long *)(*(long *)(param_2 + 4) + 8)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" (( "(") (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" (* "*") (cast_expression "(long *)(param_2 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")"))))) (; ";")) (goto_statement "goto LAB_0012b6fe;" (goto "goto") (statement_identifier "LAB_0012b6fe") (; ";"))) (case_statement "case 0x13:\n    uVar4 = 0;\n    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;\n    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));\n    if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }\nLAB_0012b7fc:\n    uVar4 = 0;\n    plVar6 = local_58;\n    break;" (case "case") (number_literal "0x13") (: ":") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";")) (if_statement "if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))\n    break;" (if "if") (parenthesized_expression "((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))" (( "(") (binary_expression "(*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))\n       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0)" (parenthesized_expression "(*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))" (( "(") (binary_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3)" (pointer_expression "*(int *)(*(undefined8 **)(param_2 + 4) + 3)" (* "*") (cast_expression "(int *)(*(undefined8 **)(param_2 + 4) + 3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(undefined8 **)(param_2 + 4) + 3)" (( "(") (binary_expression "*(undefined8 **)(param_2 + 4) + 3" (pointer_expression "*(undefined8 **)(param_2 + 4)" (* "*") (cast_expression "(undefined8 **)(param_2 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "3")) () ")")))) (!= "!=") (pointer_expression "*(int *)(*(undefined8 **)(param_3 + 4) + 3)" (* "*") (cast_expression "(int *)(*(undefined8 **)(param_3 + 4) + 3)" (( "(") (type_descriptor "int *" (primitive_type "int") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(undefined8 **)(param_3 + 4) + 3)" (( "(") (binary_expression "*(undefined8 **)(param_3 + 4) + 3" (pointer_expression "*(undefined8 **)(param_3 + 4)" (* "*") (cast_expression "(undefined8 **)(param_3 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "3")) () ")"))))) () ")")) (|| "||") (parenthesized_expression "(uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0)" (( "(") (comma_expression "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0" (assignment_expression "uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4))" (identifier "uVar4") (= "=") (call_expression "FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4))" (identifier "FUN_0012bab0") (argument_list "(param_1,**(undefined8 **)(param_2 + 4),\n                                **(undefined8 **)(param_3 + 4))" (( "(") (identifier "param_1") (, ",") (pointer_expression "**(undefined8 **)(param_2 + 4)" (* "*") (pointer_expression "*(undefined8 **)(param_2 + 4)" (* "*") (cast_expression "(undefined8 **)(param_2 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")"))))) (, ",") (pointer_expression "**(undefined8 **)(param_3 + 4)" (* "*") (pointer_expression "*(undefined8 **)(param_3 + 4)" (* "*") (cast_expression "(undefined8 **)(param_3 + 4)" (( "(") (type_descriptor "undefined8 **" (type_identifier "undefined8") (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")"))))) () ")")))) (, ",") (comma_expression "plVar6 = local_58, uVar4 == 0" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (, ",") (binary_expression "uVar4 == 0" (identifier "uVar4") (== "==") (number_literal "0")))) () ")"))) () ")")) (break_statement "break;" (break "break") (; ";"))) (expression_statement "iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));" (assignment_expression "iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8))" (identifier "iVar5") (= "=") (call_expression "FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8))" (identifier "FUN_0012bab0") (argument_list "(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),\n                         *(undefined8 *)(*(long *)(param_3 + 4) + 8))" (( "(") (identifier "param_1") (, ",") (pointer_expression "*(undefined8 *)(*(long *)(param_2 + 4) + 8)" (* "*") (cast_expression "(undefined8 *)(*(long *)(param_2 + 4) + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_2 + 4) + 8)" (( "(") (binary_expression "*(long *)(param_2 + 4) + 8" (pointer_expression "*(long *)(param_2 + 4)" (* "*") (cast_expression "(long *)(param_2 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")")))) (, ",") (pointer_expression "*(undefined8 *)(*(long *)(param_3 + 4) + 8)" (* "*") (cast_expression "(undefined8 *)(*(long *)(param_3 + 4) + 8)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(*(long *)(param_3 + 4) + 8)" (( "(") (binary_expression "*(long *)(param_3 + 4) + 8" (pointer_expression "*(long *)(param_3 + 4)" (* "*") (cast_expression "(long *)(param_3 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "8")) () ")")))) () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);\n      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);\n      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }\n    }" ({ "{") (expression_statement "plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);" (assignment_expression "plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10)" (identifier "plVar6") (= "=") (pointer_expression "*(long **)(*(long *)(param_2 + 4) + 0x10)" (* "*") (cast_expression "(long **)(*(long *)(param_2 + 4) + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_2 + 4) + 0x10)" (( "(") (binary_expression "*(long *)(param_2 + 4) + 0x10" (pointer_expression "*(long *)(param_2 + 4)" (* "*") (cast_expression "(long *)(param_2 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_2 + 4)" (( "(") (binary_expression "param_2 + 4" (identifier "param_2") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (expression_statement "plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);" (assignment_expression "plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10)" (identifier "plVar11") (= "=") (pointer_expression "*(long **)(*(long *)(param_3 + 4) + 0x10)" (* "*") (cast_expression "(long **)(*(long *)(param_3 + 4) + 0x10)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(*(long *)(param_3 + 4) + 0x10)" (( "(") (binary_expression "*(long *)(param_3 + 4) + 0x10" (pointer_expression "*(long *)(param_3 + 4)" (* "*") (cast_expression "(long *)(param_3 + 4)" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(param_3 + 4)" (( "(") (binary_expression "param_3 + 4" (identifier "param_3") (+ "+") (number_literal "4")) () ")")))) (+ "+") (number_literal "0x10")) () ")"))))) (; ";")) (if_statement "if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" (if "if") (parenthesized_expression "((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0))" (( "(") (binary_expression "(plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)" (parenthesized_expression "(plVar6 == (long *)0x0)" (( "(") (binary_expression "plVar6 == (long *)0x0" (identifier "plVar6") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (== "==") (parenthesized_expression "(plVar11 == (long *)0x0)" (( "(") (binary_expression "plVar11 == (long *)0x0" (identifier "plVar11") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")"))) () ")")) (compound_statement "{\n        if (plVar6 == (long *)0x0) goto LAB_0012b941;\n        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }\n        goto LAB_0012b936;\n      }" ({ "{") (if_statement "if (plVar6 == (long *)0x0) goto LAB_0012b941;" (if "if") (parenthesized_expression "(plVar6 == (long *)0x0)" (( "(") (binary_expression "plVar6 == (long *)0x0" (identifier "plVar6") (== "==") (cast_expression "(long *)0x0" (( "(") (type_descriptor "long *" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (goto_statement "goto LAB_0012b941;" (goto "goto") (statement_identifier "LAB_0012b941") (; ";"))) (for_statement "for (; *plVar6 != 0; plVar6 = plVar6 + 1) {\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" (for "for") (( "(") (; ";") (binary_expression "*plVar6 != 0" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (!= "!=") (number_literal "0")) (; ";") (assignment_expression "plVar6 = plVar6 + 1" (identifier "plVar6") (= "=") (binary_expression "plVar6 + 1" (identifier "plVar6") (+ "+") (number_literal "1"))) () ")") (compound_statement "{\n          if (*plVar11 == 0) goto LAB_0012b7fc;\n          iVar5 = FUN_0012bab0(param_1);\n          if (iVar5 == 0) goto LAB_0012b92c;\n          plVar11 = plVar11 + 1;\n        }" ({ "{") (if_statement "if (*plVar11 == 0) goto LAB_0012b7fc;" (if "if") (parenthesized_expression "(*plVar11 == 0)" (( "(") (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";"))) (expression_statement "iVar5 = FUN_0012bab0(param_1);" (assignment_expression "iVar5 = FUN_0012bab0(param_1)" (identifier "iVar5") (= "=") (call_expression "FUN_0012bab0(param_1)" (identifier "FUN_0012bab0") (argument_list "(param_1)" (( "(") (identifier "param_1") () ")")))) (; ";")) (if_statement "if (iVar5 == 0) goto LAB_0012b92c;" (if "if") (parenthesized_expression "(iVar5 == 0)" (( "(") (binary_expression "iVar5 == 0" (identifier "iVar5") (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_0012b92c;" (goto "goto") (statement_identifier "LAB_0012b92c") (; ";"))) (expression_statement "plVar11 = plVar11 + 1;" (assignment_expression "plVar11 = plVar11 + 1" (identifier "plVar11") (= "=") (binary_expression "plVar11 + 1" (identifier "plVar11") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (goto_statement "goto LAB_0012b936;" (goto "goto") (statement_identifier "LAB_0012b936") (; ";")) (} "}"))) (} "}"))) (labeled_statement "LAB_0012b7fc:\n    uVar4 = 0;" (statement_identifier "LAB_0012b7fc") (: ":") (expression_statement "uVar4 = 0;" (assignment_expression "uVar4 = 0" (identifier "uVar4") (= "=") (number_literal "0")) (; ";"))) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (; ";")) (break_statement "break;" (break "break") (; ";"))) (case_statement "case 0x16:" (case "case") (number_literal "0x16") (: ":")) (case_statement "case 0x17:\n    goto switchD_0012b468_caseD_16;" (case "case") (number_literal "0x17") (: ":") (goto_statement "goto switchD_0012b468_caseD_16;" (goto "goto") (statement_identifier "switchD_0012b468_caseD_16") (; ";"))) (case_statement "default:\n                    \n    abort();" (default "default") (: ":") (expression_statement "abort();" (call_expression "abort()" (identifier "abort") (argument_list "()" (( "(") () ")"))) (; ";"))) (} "}"))) (labeled_statement "LAB_0012b4be:\n  *(long **)(param_1 + 0x58) = plVar6;" (statement_identifier "LAB_0012b4be") (: ":") (expression_statement "*(long **)(param_1 + 0x58) = plVar6;" (assignment_expression "*(long **)(param_1 + 0x58) = plVar6" (pointer_expression "*(long **)(param_1 + 0x58)" (* "*") (cast_expression "(long **)(param_1 + 0x58)" (( "(") (type_descriptor "long **" (sized_type_specifier "long" (long "long")) (abstract_pointer_declarator "**" (* "*") (abstract_pointer_declarator "*" (* "*")))) () ")") (parenthesized_expression "(param_1 + 0x58)" (( "(") (binary_expression "param_1 + 0x58" (identifier "param_1") (+ "+") (number_literal "0x58")) () ")")))) (= "=") (identifier "plVar6")) (; ";"))) (return_statement "return uVar4;" (return "return") (identifier "uVar4") (; ";")) (labeled_statement "LAB_0012b92c:\n  if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }" (statement_identifier "LAB_0012b92c") (: ":") (if_statement "if (*plVar6 == 0) {\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }" (if "if") (parenthesized_expression "(*plVar6 == 0)" (( "(") (binary_expression "*plVar6 == 0" (pointer_expression "*plVar6" (* "*") (identifier "plVar6")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }\n  }" ({ "{") (labeled_statement "LAB_0012b936:\n    if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }" (statement_identifier "LAB_0012b936") (: ":") (if_statement "if (*plVar11 == 0) {\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }" (if "if") (parenthesized_expression "(*plVar11 == 0)" (( "(") (binary_expression "*plVar11 == 0" (pointer_expression "*plVar11" (* "*") (identifier "plVar11")) (== "==") (number_literal "0")) () ")")) (compound_statement "{\nLAB_0012b941:\n      uVar4 = 1;\n      plVar6 = local_58;\n      goto LAB_0012b4be;\n    }" ({ "{") (labeled_statement "LAB_0012b941:\n      uVar4 = 1;" (statement_identifier "LAB_0012b941") (: ":") (expression_statement "uVar4 = 1;" (assignment_expression "uVar4 = 1" (identifier "uVar4") (= "=") (number_literal "1")) (; ";"))) (expression_statement "plVar6 = local_58;" (assignment_expression "plVar6 = local_58" (identifier "plVar6") (= "=") (identifier "local_58")) (; ";")) (goto_statement "goto LAB_0012b4be;" (goto "goto") (statement_identifier "LAB_0012b4be") (; ";")) (} "}")))) (} "}")))) (goto_statement "goto LAB_0012b7fc;" (goto "goto") (statement_identifier "LAB_0012b7fc") (; ";")) (} "}")))

type_1 function_1(type_2 *info,type_3 *var_3,type_3 *var_5)

{
  type_4 var_1;
  type_4 var_4;
  long var_14;
  long var_13;
  long var_8;
  long var_38;
  long var_37;
  type_5 *var_19;
  type_5 *var_20;
  type_6 *var_21;
  type_6 *var_22;
  char *__s2;
  char *__s1;
  type_7 *var_33;
  type_7 *var_34;
  type_8 *var_27;
  type_8 *ppdVar15;
  type_9 *var_23;
  type_9 *var_24;
  type_10 var_29;
  type_10 var_30;
  type_11 *pcVar20;
  type_1 var_39;
  int var_12;
  type_12 var_26;
  type_13 *var_10;
  type_3 *pdVar25;
  type_3 *t1_00;
  type_14 *pdVar26;
  type_14 *pdVar27;
  type_15 *pdVar28;
  type_16 *var_40;
  type_16 pdVar30;
  long var_9;
  type_10 *var_28;
  type_16 *var_41;
  type_15 *var_36;
  type_15 *var_35;
  type_13 *pdVar34;
  type_10 *var_32;
  type_16 pdVar36;
  type_15 *pdVar37;
  type_13 top;
  
  while (var_1 = var_3->kind, var_1 == var_2) {
    var_3 = *((var_3->u).kindirect)->slot;
    if (var_3 == (type_16)0x0) {
      return 0;
    }
  }
  while (var_4 = var_5->kind, var_4 == var_2) {
    var_5 = *((var_5->u).kindirect)->slot;
    if (var_5 == (type_16)0x0) {
      return 0;
    }
  }
  if (var_3 == var_5) {
    return 1;
  }
  top.var_3 = var_3;
  top.var_5 = var_5;
  if (var_1 == var_6) {
    if (var_4 == var_7) {
      var_39 = function_1(info,((var_3->u).kpointer)->pointer,var_5);
      return var_39;
    }
    var_9._0_4_ = var_5->kind;
    var_9._4_4_ = var_5->size;
    var_8._0_4_ = var_3->kind;
    var_8._4_4_ = var_3->size;
    if (var_8 != var_9) {
      return 0;
    }
    var_10 = info->compare_list;
    pdVar34 = var_10;
    if (var_10 != (type_13 *)0x0) goto LAB_0012b498;
    top.next = (type_13 *)0x0;
    info->compare_list = &top;
switchD_0012b468_caseD_16:
    var_33 = (var_5->u).knamed;
    var_34 = (var_3->u).knamed;
    var_12 = var_11(var_34->name->name,var_33->name->name);
    var_26 = 0;
    if (var_12 != 0) goto LAB_0012b4be;
    pdVar25 = var_33->type;
    pdVar30 = var_34->type;
    goto LAB_0012b6fe;
  }
  if ((var_4 == var_6) && (var_1 == var_7)) {
    var_39 = function_1(info,var_3,((var_5->u).kpointer)->pointer);
    return var_39;
  }
  var_14._0_4_ = var_5->kind;
  var_14._4_4_ = var_5->size;
  var_13._0_4_ = var_3->kind;
  var_13._4_4_ = var_3->size;
  if (var_13 != var_14) {
    return 0;
  }
  if (var_1 == var_15) {
    return (type_12)((var_3->u).kint == (var_5->u).kint);
  }
  if (var_1 < var_16) {
    if (var_1 == var_17) {
      return 1;
    }
  }
  else if (var_1 < var_18) {
    return 1;
  }
  var_10 = info->compare_list;
  pdVar34 = var_10;
  for (; var_10 != (type_13 *)0x0; var_10 = var_10->next) {
LAB_0012b498:
    if ((var_3 == var_10->var_3) && (var_5 == var_10->var_5)) {
      return 1;
    }
  }
  info->compare_list = &top;
  var_10 = pdVar34;
  top.next = pdVar34;
  switch(var_1) {
  case var_18:
  case DEBUG_KIND_UNION:
  case DEBUG_KIND_CLASS:
  case DEBUG_KIND_UNION_CLASS:
    var_19 = (var_3->u).kclass;
    var_20 = (var_5->u).kclass;
    if (var_19 == (type_5 *)0x0) {
      var_26 = (type_12)(var_20 == (type_5 *)0x0);
      break;
    }
    if (var_20 != (type_5 *)0x0) {
      if ((info->base_id < var_19->id) && (var_19->id == var_20->id)) {
        var_26 = 1;
        break;
      }
      var_21 = var_19->fields;
      var_22 = var_20->fields;
      if ((((var_21 == (type_6 *)0x0) == (var_22 == (type_6 *)0x0)) &&
          ((var_19->baseclasses == (type_8 *)0x0) ==
           (var_20->baseclasses == (type_8 *)0x0))) &&
         (((var_19->methods == (type_10 *)0x0) == (var_20->methods == (type_10 *)0x0) &&
          ((var_19->vptrbase == (type_16)0x0) ==
           (var_20->vptrbase == (type_16)0x0))))) {
        var_9 = 0;
        if (var_21 != (type_6 *)0x0) {
          do {
            var_23 = *(type_9 **)((long)var_21 + var_9);
            var_24 = *(type_9 **)((long)var_22 + var_9);
            if (var_23 == (type_9 *)0x0) {
              if (var_24 != (type_9 *)0x0) goto LAB_0012b7fc;
              goto LAB_0012b971;
            }
            if (var_24 == (type_9 *)0x0) goto LAB_0012b7fc;
            __s2 = (char *)*var_24;
            __s1 = (char *)*var_23;
            if ((*__s1 != *__s2) || (var_23[2] != var_24[2])) goto LAB_0012b7fc;
            if (*(int *)((long)var_23 + 0x14) == 0) {
              if ((char *)var_23[3] != (char *)var_24[3]) goto LAB_0012b7fc;
            }
            else {
              var_12 = var_11((char *)var_23[3],(char *)var_24[3]);
              if (var_12 != 0) goto LAB_0012b7fc;
            }
            var_12 = var_11(__s1,__s2);
            if (var_12 != 0) goto LAB_0012b7fc;
            var_9 = var_9 + 8;
            pdVar25 = var_25(info,(type_16)var_24[1],
                                          (type_17 *)0x0);
            t1_00 = var_25(info,(type_16)var_23[1],
                                        (type_17 *)0x0);
            var_26 = function_1(info,t1_00,pdVar25);
            var_10 = top.next;
          } while (var_26 != 0);
          break;
        }
LAB_0012b971:
        if ((var_19->vptrbase != (type_3 *)0x0) &&
           (var_26 = function_1(info,var_19->vptrbase,var_20->vptrbase), var_10 = top.next,
           var_26 == 0)) break;
        var_27 = var_19->baseclasses;
        if (var_27 != (type_8 *)0x0) {
          ppdVar15 = var_20->baseclasses;
          var_9 = 0;
          do {
            var_23 = *(type_9 **)((long)var_27 + var_9);
            var_24 = *(type_9 **)((long)ppdVar15 + var_9);
            if (var_23 == (type_9 *)0x0) {
              if (var_24 != (type_9 *)0x0) goto LAB_0012b7fc;
              goto LAB_0012b9f3;
            }
            if (((var_24 == (type_9 *)0x0) || (var_23[1] != var_24[1])) ||
               (*(int *)(var_23 + 2) != *(int *)(var_24 + 2))) goto LAB_0012b7fc;
            var_9 = var_9 + 8;
            var_26 = function_1(info,(type_3 *)*var_23,(type_3 *)*var_24);
            var_10 = top.next;
          } while (var_26 != 0);
          break;
        }
LAB_0012b9f3:
        var_28 = var_19->methods;
        if (var_28 != (type_10 *)0x0) {
          var_32 = var_20->methods;
          while( true ) {
            var_29 = *var_28;
            var_30 = *var_32;
            if (var_29 == (type_10)0x0) break;
            if (var_30 == (type_10)0x0) goto LAB_0012b7fc;
            if (((*var_29->name != *var_30->name) ||
                (var_12 = var_11(var_29->name,var_30->name), var_12 != 0)) ||
               ((var_29->variants == (type_18 **)0x0) !=
                (var_30->variants == (type_18 **)0x0))) goto LAB_0012b7fc;
            if (var_29->variants == (type_18 **)0x0) {
                    /* WARNING: Does not return */
              pcVar20 = (type_11 *)var_31();
              (*pcVar20)();
            }
            var_28 = var_28 + 1;
            var_32 = var_32 + 1;
          }
          var_26 = (type_12)(var_30 == (type_10)0x0);
          var_10 = top.next;
          break;
        }
        goto LAB_0012b941;
      }
    }
LAB_0012b55d:
    var_26 = 0;
    break;
  case DEBUG_KIND_ENUM:
    var_33 = (var_3->u).knamed;
    var_34 = (var_5->u).knamed;
    if (var_33 == (type_7 *)0x0) {
      var_26 = (type_12)(var_34 == (type_7 *)0x0);
    }
    else {
      var_26 = 0;
      if (var_34 != (type_7 *)0x0) {
        pdVar37 = var_33->name;
        pdVar28 = var_34->name;
        pdVar30 = var_33->type;
        pdVar36 = var_34->type;
        var_35 = pdVar37->next;
        var_36 = pdVar28->next;
        if (var_35 == (type_15 *)0x0) {
LAB_0012b950:
          var_26 = (type_12)(pdVar28->next == (type_15 *)0x0);
        }
        else if (((var_36 != (type_15 *)0x0) &&
                 (*(char *)&var_36->next == *(char *)&var_35->next)) &&
                (var_38._0_4_ = pdVar30->kind, var_38._4_4_ = pdVar30->size,
                var_37._0_4_ = pdVar36->kind, var_37._4_4_ = pdVar36->size, var_37 == var_38)) {
          do {
            var_12 = var_11((char *)var_35,(char *)var_36);
            if (var_12 != 0) goto LAB_0012b55d;
            pdVar37 = (type_15 *)&pdVar37->name;
            var_35 = *(type_15 **)pdVar37;
            pdVar28 = (type_15 *)&pdVar28->name;
            pdVar30 = (type_16)&pdVar30->pointer;
            pdVar36 = (type_16)&pdVar36->pointer;
            var_36 = *(type_15 **)pdVar28;
            if (var_35 == (type_15 *)0x0) goto LAB_0012b950;
            var_26 = 0;
          } while (((var_36 != (type_15 *)0x0) &&
                   (*(char *)&var_35->next == *(char *)&var_36->next)) &&
                  (*(type_19 *)pdVar30 == *(type_19 *)pdVar36));
        }
      }
    }
    break;
  case DEBUG_KIND_POINTER:
  case DEBUG_KIND_REFERENCE:
  case DEBUG_KIND_CONST:
  case DEBUG_KIND_VOLATILE:
    var_26 = function_1(info,(var_3->u).kpointer,(var_5->u).kpointer);
    var_10 = top.next;
    break;
  case DEBUG_KIND_FUNCTION:
    var_26 = 0;
    if (((var_3->u).kfunction)->varargs != ((var_5->u).kfunction)->varargs) break;
    var_39 = function_1(info,((var_3->u).kfunction)->return_type,((var_5->u).kfunction)->return_type
                             );
    if (var_39 != 0) {
      var_40 = ((var_3->u).kfunction)->arg_types;
      var_41 = ((var_5->u).kfunction)->arg_types;
      if ((var_40 == (type_16 *)0x0) == (var_41 == (type_16 *)0x0)) {
        if (var_40 == (type_16 *)0x0) goto LAB_0012b941;
        while( true ) {
          if (*var_40 == (type_3 *)0x0) break;
          if (*var_41 == (type_3 *)0x0) goto LAB_0012b7fc;
          var_39 = function_1(info,*var_40,*var_41);
          if (var_39 == 0) goto LAB_0012b92c;
          var_40 = var_40 + 1;
          var_41 = var_41 + 1;
        }
        goto LAB_0012b936;
      }
    }
    goto LAB_0012b7fc;
  case DEBUG_KIND_RANGE:
    pdVar27 = (type_14 *)(var_5->u).krange;
    pdVar26 = (type_14 *)(var_3->u).krange;
    var_26 = 0;
    if ((pdVar26->range_type != pdVar27->range_type) || (pdVar26->lower != pdVar27->lower)) break;
    goto LAB_0012b729;
  case DEBUG_KIND_ARRAY:
    pdVar27 = (var_5->u).karray;
    pdVar26 = (var_3->u).karray;
    var_26 = 0;
    if (((pdVar26->lower != pdVar27->lower) || (pdVar26->upper != pdVar27->upper)) ||
       (pdVar26->stringp != pdVar27->stringp)) break;
    goto LAB_0012b729;
  case DEBUG_KIND_SET:
    pdVar27 = (type_14 *)(var_5->u).kset;
    pdVar26 = (type_14 *)(var_3->u).kset;
    var_26 = 0;
    if (*(int *)&pdVar26->range_type != *(int *)&pdVar27->range_type) break;
LAB_0012b729:
    pdVar25 = pdVar27->element_type;
    pdVar30 = pdVar26->element_type;
LAB_0012b6fe:
    var_39 = function_1(info,pdVar30,pdVar25);
    var_26 = (type_12)(var_39 != 0);
    var_10 = top.next;
    break;
  case DEBUG_KIND_OFFSET:
    var_26 = function_1(info,((var_3->u).kfunction)->return_type,((var_5->u).kfunction)->return_type
                             );
    var_10 = top.next;
    if (var_26 == 0) break;
    pdVar25 = ((var_5->u).kpointer)->pointer;
    pdVar30 = ((var_3->u).kpointer)->pointer;
    goto LAB_0012b6fe;
  case DEBUG_KIND_METHOD:
    var_26 = 0;
    if ((((var_3->u).kmethod)->varargs != ((var_5->u).kmethod)->varargs) ||
       (var_26 = function_1(info,((var_3->u).kmethod)->return_type,((var_5->u).kmethod)->return_type
                                 ), var_10 = top.next, var_26 == 0)) break;
    var_39 = function_1(info,((var_3->u).kpointer)->pointer,((var_5->u).kpointer)->pointer);
    if (var_39 != 0) {
      var_40 = (type_16 *)((var_3->u).kclass)->baseclasses;
      var_41 = (type_16 *)((var_5->u).kclass)->baseclasses;
      if ((var_40 == (type_16 *)0x0) == (var_41 == (type_16 *)0x0)) {
        if (var_40 == (type_16 *)0x0) goto LAB_0012b941;
        while( true ) {
          if (*var_40 == (type_3 *)0x0) break;
          if (*var_41 == (type_3 *)0x0) goto LAB_0012b7fc;
          var_39 = function_1(info,*var_40,*var_41);
          if (var_39 == 0) goto LAB_0012b92c;
          var_40 = var_40 + 1;
          var_41 = var_41 + 1;
        }
        goto LAB_0012b936;
      }
    }
LAB_0012b7fc:
    var_26 = 0;
    var_10 = top.next;
    break;
  case var_6:
  case var_7:
    goto switchD_0012b468_caseD_16;
  default:
                    /* WARNING: Subroutine does not return */
    var_42();
  }
LAB_0012b4be:
  info->compare_list = var_10;
  return var_26;
LAB_0012b92c:
  if (*var_40 == (type_16)0x0) {
LAB_0012b936:
    if (*var_41 == (type_16)0x0) {
LAB_0012b941:
      var_26 = 1;
      var_10 = top.next;
      goto LAB_0012b4be;
    }
  }
  goto LAB_0012b7fc;
}


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

uint MASKED(long param_1,uint *param_2,uint *param_3)

{
  uint uVar1;
  undefined8 *puVar2;
  code *pcVar3;
  uint uVar4;
  int iVar5;
  long *plVar6;
  undefined8 uVar7;
  undefined8 uVar8;
  long *plVar9;
  long lVar10;
  long *plVar11;
  long lVar12;
  undefined8 *puVar13;
  char *pcVar14;
  long lVar15;
  char *pcVar16;
  undefined8 *puVar17;
  long *plVar18;
  undefined8 *puVar19;
  long *local_58;
  uint *local_50;
  uint *local_48;
  
  while (uVar4 = *param_2, uVar4 == 1) {
    param_2 = *(uint **)**(undefined8 **)(param_2 + 4);
    if (param_2 == (uint *)0x0) {
      return 0;
    }
  }
  while (uVar1 = *param_3, uVar1 == 1) {
    param_3 = *(uint **)**(undefined8 **)(param_3 + 4);
    if (param_3 == (uint *)0x0) {
      return 0;
    }
  }
  if (param_2 == param_3) {
    return 1;
  }
  local_50 = param_2;
  local_48 = param_3;
  if (uVar4 == 0x16) {
    if (uVar1 == 0x17) {
      uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),param_3);
      return uVar4;
    }
    if (*(long *)param_2 != *(long *)param_3) {
      return 0;
    }
    plVar6 = *(long **)(param_1 + 0x58);
    local_58 = plVar6;
    if (plVar6 != (long *)0x0) goto LAB_0012b498;
    local_58 = (long *)0x0;
    *(long ***)(param_1 + 0x58) = &local_58;
switchD_0012b468_caseD_16:
    plVar11 = *(long **)(param_3 + 4);
    plVar9 = *(long **)(param_2 + 4);
    iVar5 = strcmp(*(char **)(*plVar9 + 8),*(char **)(*plVar11 + 8));
    uVar4 = 0;
    if (iVar5 != 0) goto LAB_0012b4be;
    lVar10 = plVar11[1];
    lVar15 = plVar9[1];
    goto LAB_0012b6fe;
  }
  if ((uVar1 == 0x16) && (uVar4 == 0x17)) {
    uVar4 = FUN_0012bab0(param_1,param_2,*(undefined8 *)(*(long *)(param_3 + 4) + 8));
    return uVar4;
  }
  if (*(long *)param_2 != *(long *)param_3) {
    return 0;
  }
  if (uVar4 == 3) {
    return (uint)(param_2[4] == param_3[4]);
  }
  if (uVar4 < 4) {
    if (uVar4 == 2) {
      return 1;
    }
  }
  else if (uVar4 < 7) {
    return 1;
  }
  plVar6 = *(long **)(param_1 + 0x58);
  local_58 = plVar6;
  for (; plVar6 != (long *)0x0; plVar6 = (long *)*plVar6) {
LAB_0012b498:
    if ((param_2 == (uint *)plVar6[1]) && (param_3 == (uint *)plVar6[2])) {
      return 1;
    }
  }
  *(long ***)(param_1 + 0x58) = &local_58;
  plVar6 = local_58;
  switch(uVar4) {
  case 7:
  case 8:
  case 9:
  case 10:
    plVar11 = *(long **)(param_2 + 4);
    plVar9 = *(long **)(param_3 + 4);
    if (plVar11 == (long *)0x0) {
      uVar4 = (uint)(plVar9 == (long *)0x0);
      break;
    }
    if (plVar9 != (long *)0x0) {
      if ((*(uint *)(param_1 + 0x38) < *(uint *)((long)plVar11 + 0xc)) &&
         (*(uint *)((long)plVar11 + 0xc) == *(uint *)((long)plVar9 + 0xc))) {
        uVar4 = 1;
        break;
      }
      lVar10 = *plVar11;
      lVar15 = *plVar9;
      if ((((lVar10 == 0) == (lVar15 == 0)) && ((plVar11[2] == 0) == (plVar9[2] == 0))) &&
         (((plVar11[3] == 0) == (plVar9[3] == 0) && ((plVar11[4] == 0) == (plVar9[4] == 0))))) {
        lVar12 = 0;
        if (lVar10 != 0) {
          do {
            puVar13 = *(undefined8 **)(lVar10 + lVar12);
            puVar17 = *(undefined8 **)(lVar15 + lVar12);
            if (puVar13 == (undefined8 *)0x0) {
              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;
              goto LAB_0012b971;
            }
            if (puVar17 == (undefined8 *)0x0) goto LAB_0012b7fc;
            pcVar16 = (char *)*puVar17;
            pcVar14 = (char *)*puVar13;
            if ((*pcVar14 != *pcVar16) || (puVar13[2] != puVar17[2])) goto LAB_0012b7fc;
            if (*(int *)((long)puVar13 + 0x14) == 0) {
              if ((char *)puVar13[3] != (char *)puVar17[3]) goto LAB_0012b7fc;
            }
            else {
              iVar5 = strcmp((char *)puVar13[3],(char *)puVar17[3]);
              if (iVar5 != 0) goto LAB_0012b7fc;
            }
            iVar5 = strcmp(pcVar14,pcVar16);
            if (iVar5 != 0) goto LAB_0012b7fc;
            lVar12 = lVar12 + 8;
            uVar7 = FUN_0012b0d0(param_1,puVar17[1],0);
            uVar8 = FUN_0012b0d0(param_1,puVar13[1],0);
            uVar4 = FUN_0012bab0(param_1,uVar8,uVar7);
            plVar6 = local_58;
          } while (uVar4 != 0);
          break;
        }
LAB_0012b971:
        if ((plVar11[4] != 0) &&
           (uVar4 = FUN_0012bab0(param_1,plVar11[4],plVar9[4]), plVar6 = local_58, uVar4 == 0))
        break;
        lVar10 = plVar11[2];
        if (lVar10 != 0) {
          lVar15 = plVar9[2];
          lVar12 = 0;
          do {
            puVar13 = *(undefined8 **)(lVar10 + lVar12);
            puVar17 = *(undefined8 **)(lVar15 + lVar12);
            if (puVar13 == (undefined8 *)0x0) {
              if (puVar17 != (undefined8 *)0x0) goto LAB_0012b7fc;
              goto LAB_0012b9f3;
            }
            if (((puVar17 == (undefined8 *)0x0) || (puVar13[1] != puVar17[1])) ||
               (*(int *)(puVar13 + 2) != *(int *)(puVar17 + 2))) goto LAB_0012b7fc;
            lVar12 = lVar12 + 8;
            uVar4 = FUN_0012bab0(param_1,*puVar13,*puVar17);
            plVar6 = local_58;
          } while (uVar4 != 0);
          break;
        }
LAB_0012b9f3:
        puVar13 = (undefined8 *)plVar11[3];
        if (puVar13 != (undefined8 *)0x0) {
          puVar17 = (undefined8 *)plVar9[3];
          while( true ) {
            puVar19 = (undefined8 *)*puVar13;
            puVar2 = (undefined8 *)*puVar17;
            if (puVar19 == (undefined8 *)0x0) break;
            if (puVar2 == (undefined8 *)0x0) goto LAB_0012b7fc;
            if (((*(char *)*puVar19 != *(char *)*puVar2) ||
                (iVar5 = strcmp((char *)*puVar19,(char *)*puVar2), iVar5 != 0)) ||
               ((puVar19[1] == 0) != (puVar2[1] == 0))) goto LAB_0012b7fc;
            if (puVar19[1] == 0) {
                    /* WARNING: Does not return */
              pcVar3 = (code *)invalidInstructionException();
              (*pcVar3)();
            }
            puVar13 = puVar13 + 1;
            puVar17 = puVar17 + 1;
          }
          uVar4 = (uint)(puVar2 == (undefined8 *)0x0);
          plVar6 = local_58;
          break;
        }
        goto LAB_0012b941;
      }
    }
LAB_0012b55d:
    uVar4 = 0;
    break;
  case 0xb:
    puVar13 = *(undefined8 **)(param_2 + 4);
    puVar17 = *(undefined8 **)(param_3 + 4);
    if (puVar13 == (undefined8 *)0x0) {
      uVar4 = (uint)(puVar17 == (undefined8 *)0x0);
    }
    else {
      uVar4 = 0;
      if (puVar17 != (undefined8 *)0x0) {
        puVar19 = (undefined8 *)*puVar13;
        plVar11 = (long *)*puVar17;
        plVar9 = (long *)puVar13[1];
        plVar18 = (long *)puVar17[1];
        pcVar16 = (char *)*puVar19;
        pcVar14 = (char *)*plVar11;
        if (pcVar16 == (char *)0x0) {
LAB_0012b950:
          uVar4 = (uint)(*plVar11 == 0);
        }
        else if (((pcVar14 != (char *)0x0) && (*pcVar14 == *pcVar16)) && (*plVar18 == *plVar9)) {
          do {
            iVar5 = strcmp(pcVar16,pcVar14);
            if (iVar5 != 0) goto LAB_0012b55d;
            puVar19 = puVar19 + 1;
            pcVar16 = (char *)*puVar19;
            plVar11 = plVar11 + 1;
            plVar9 = plVar9 + 1;
            plVar18 = plVar18 + 1;
            pcVar14 = (char *)*plVar11;
            if (pcVar16 == (char *)0x0) goto LAB_0012b950;
            uVar4 = 0;
          } while (((pcVar14 != (char *)0x0) && (*pcVar16 == *pcVar14)) && (*plVar9 == *plVar18));
        }
      }
    }
    break;
  case 0xc:
  case 0xe:
  case 0x14:
  case 0x15:
    uVar4 = FUN_0012bab0(param_1,*(undefined8 *)(param_2 + 4),*(undefined8 *)(param_3 + 4));
    plVar6 = local_58;
    break;
  case 0xd:
    uVar4 = 0;
    if (*(int *)(*(undefined8 **)(param_2 + 4) + 2) != *(int *)(*(undefined8 **)(param_3 + 4) + 2))
    break;
    iVar5 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));
    if (iVar5 != 0) {
      plVar6 = *(long **)(*(long *)(param_2 + 4) + 8);
      plVar11 = *(long **)(*(long *)(param_3 + 4) + 8);
      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {
        if (plVar6 == (long *)0x0) goto LAB_0012b941;
        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {
          if (*plVar11 == 0) goto LAB_0012b7fc;
          iVar5 = FUN_0012bab0(param_1);
          if (iVar5 == 0) goto LAB_0012b92c;
          plVar11 = plVar11 + 1;
        }
        goto LAB_0012b936;
      }
    }
    goto LAB_0012b7fc;
  case 0xf:
    plVar11 = *(long **)(param_3 + 4);
    plVar9 = *(long **)(param_2 + 4);
    uVar4 = 0;
    if ((plVar9[1] != plVar11[1]) || (plVar9[2] != plVar11[2])) break;
    goto LAB_0012b729;
  case 0x10:
    plVar11 = *(long **)(param_3 + 4);
    plVar9 = *(long **)(param_2 + 4);
    uVar4 = 0;
    if (((plVar9[2] != plVar11[2]) || (plVar9[3] != plVar11[3])) ||
       ((int)plVar9[4] != (int)plVar11[4])) break;
    goto LAB_0012b729;
  case 0x11:
    plVar11 = *(long **)(param_3 + 4);
    plVar9 = *(long **)(param_2 + 4);
    uVar4 = 0;
    if ((int)plVar9[1] != (int)plVar11[1]) break;
LAB_0012b729:
    lVar10 = *plVar11;
    lVar15 = *plVar9;
LAB_0012b6fe:
    iVar5 = FUN_0012bab0(param_1,lVar15,lVar10);
    uVar4 = (uint)(iVar5 != 0);
    plVar6 = local_58;
    break;
  case 0x12:
    uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),**(undefined8 **)(param_3 + 4));
    plVar6 = local_58;
    if (uVar4 == 0) break;
    lVar10 = *(long *)(*(long *)(param_3 + 4) + 8);
    lVar15 = *(long *)(*(long *)(param_2 + 4) + 8);
    goto LAB_0012b6fe;
  case 0x13:
    uVar4 = 0;
    if ((*(int *)(*(undefined8 **)(param_2 + 4) + 3) != *(int *)(*(undefined8 **)(param_3 + 4) + 3))
       || (uVar4 = FUN_0012bab0(param_1,**(undefined8 **)(param_2 + 4),
                                **(undefined8 **)(param_3 + 4)), plVar6 = local_58, uVar4 == 0))
    break;
    iVar5 = FUN_0012bab0(param_1,*(undefined8 *)(*(long *)(param_2 + 4) + 8),
                         *(undefined8 *)(*(long *)(param_3 + 4) + 8));
    if (iVar5 != 0) {
      plVar6 = *(long **)(*(long *)(param_2 + 4) + 0x10);
      plVar11 = *(long **)(*(long *)(param_3 + 4) + 0x10);
      if ((plVar6 == (long *)0x0) == (plVar11 == (long *)0x0)) {
        if (plVar6 == (long *)0x0) goto LAB_0012b941;
        for (; *plVar6 != 0; plVar6 = plVar6 + 1) {
          if (*plVar11 == 0) goto LAB_0012b7fc;
          iVar5 = FUN_0012bab0(param_1);
          if (iVar5 == 0) goto LAB_0012b92c;
          plVar11 = plVar11 + 1;
        }
        goto LAB_0012b936;
      }
    }
LAB_0012b7fc:
    uVar4 = 0;
    plVar6 = local_58;
    break;
  case 0x16:
  case 0x17:
    goto switchD_0012b468_caseD_16;
  default:
                    /* WARNING: Subroutine does not return */
    abort();
  }
LAB_0012b4be:
  *(long **)(param_1 + 0x58) = plVar6;
  return uVar4;
LAB_0012b92c:
  if (*plVar6 == 0) {
LAB_0012b936:
    if (*plVar11 == 0) {
LAB_0012b941:
      uVar4 = 1;
      plVar6 = local_58;
      goto LAB_0012b4be;
    }
  }
  goto LAB_0012b7fc;
}

