
int der_encode_setof(ltc_asn1_list *list,ulong inlen,uchar *out,ulong *outlen)

{
  ltc_asn1_list *plVar1;
  byte bVar2;
  ulong uVar3;
  int iVar4;
  uchar *out_00;
  undefined8 *__base;
  uchar *puVar5;
  uchar *puVar6;
  uchar *puVar7;
  long lVar8;
  ltc_asn1_list *plVar9;
  ltc_asn1_list *plVar10;
  byte bVar11;
  long lVar12;
  uint uVar13;
  ulong uVar14;
  byte bVar15;
  undefined8 *puVar16;
  long *plVar17;
  undefined8 *puVar18;
  undefined8 *puVar19;
  size_t __n;
  
  if (1 < inlen) {
    if (list->type == list[1].type) {
      lVar12 = 1;
      uVar13 = ~(1U - (int)inlen) & 7;
      plVar10 = list + 1;
      if (uVar13 != 0) {
        plVar10 = list + 2;
        lVar12 = 2;
        if (list[2].type != list[1].type) {
          return 0x10;
        }
        if (uVar13 != 1) {
          plVar9 = plVar10;
          if (uVar13 != 2) {
            if (uVar13 != 3) {
              if (uVar13 != 4) {
                if (uVar13 != 5) {
                  if (uVar13 != 6) {
                    plVar9 = list + 3;
                    lVar12 = 3;
                    if (list[3].type != plVar10->type) {
                      return 0x10;
                    }
                  }
                  plVar10 = plVar9 + 1;
                  lVar12 = lVar12 + 1;
                  if (plVar9[1].type != plVar9->type) {
                    return 0x10;
                  }
                }
                plVar9 = plVar10 + 1;
                lVar12 = lVar12 + 1;
                if (plVar10[1].type != plVar10->type) {
                  return 0x10;
                }
              }
              plVar10 = plVar9 + 1;
              lVar12 = lVar12 + 1;
              if (plVar9[1].type != plVar9->type) {
                return 0x10;
              }
            }
            plVar9 = plVar10 + 1;
            lVar12 = lVar12 + 1;
            if (plVar10[1].type != plVar10->type) {
              return 0x10;
            }
          }
          lVar12 = lVar12 + 1;
          plVar10 = plVar9 + 1;
          if (plVar9[1].type != plVar9->type) {
            return 0x10;
          }
        }
      }
      do {
        if (inlen == lVar12 + 1U) goto LAB_00182a10;
        if (plVar10[1].type != plVar10->type) {
          return 0x10;
        }
        if (plVar10[2].type != plVar10[1].type) {
          return 0x10;
        }
        if (plVar10[3].type != plVar10[2].type) {
          return 0x10;
        }
        if (plVar10[4].type != plVar10[3].type) {
          return 0x10;
        }
        if (plVar10[5].type != plVar10[4].type) {
          return 0x10;
        }
        if (plVar10[6].type != plVar10[5].type) {
          return 0x10;
        }
        if (plVar10[7].type != plVar10[6].type) {
          return 0x10;
        }
        lVar12 = lVar12 + 8;
        plVar9 = plVar10 + 7;
        plVar1 = plVar10 + 8;
        plVar10 = plVar10 + 8;
      } while (plVar1->type == plVar9->type);
    }
    return 0x10;
  }
LAB_00182a10:
  out_00 = (uchar *)calloc(1,*outlen);
  if (out_00 == (uchar *)0x0) {
    return 0xd;
  }
  iVar4 = der_encode_sequence_ex(list,inlen,out_00,outlen,0xf);
  if (iVar4 != 0) {
LAB_00182d53:
    free(out_00);
    return iVar4;
  }
  __base = (undefined8 *)calloc(inlen,0x10);
  if (__base == (undefined8 *)0x0) {
    free(out_00);
    return 0xd;
  }
  uVar3 = *outlen;
  puVar7 = out_00 + 2 + (out_00[1] & 0x7f);
  if (-1 < (char)out_00[1]) {
    puVar7 = out_00 + 2;
  }
  __n = (long)puVar7 - (long)out_00;
  plVar17 = __base + 1;
joined_r0x00182aa4:
  if (puVar7 < out_00 + uVar3) {
    do {
      bVar2 = puVar7[1];
      plVar17[-1] = (long)puVar7;
      if ((ulong)bVar2 < 0x80) {
        lVar12 = (ulong)bVar2 + 2;
      }
      else {
        bVar15 = bVar2 & 0x7f;
        *plVar17 = 0;
        if (bVar15 != 0) goto code_r0x00182af3;
        lVar12 = 2;
      }
      puVar7 = puVar7 + lVar12;
      *plVar17 = lVar12;
      plVar17 = plVar17 + 2;
      if (out_00 + uVar3 <= puVar7) break;
    } while( true );
  }
  qsort(__base,inlen,0x10,_qsort_helper);
  memcpy(out,out_00,__n);
  puVar16 = __base + inlen * 2;
  if (inlen != 0) {
    uVar13 = (int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U & 3;
    puVar18 = __base;
    if (uVar13 != 0) {
      puVar19 = __base;
      if (uVar13 != 1) {
        if (uVar13 != 2) {
          puVar7 = out + __n;
          puVar18 = __base + 2;
          __n = __n + __base[1];
          memcpy(puVar7,(void *)*__base,__base[1]);
        }
        puVar7 = out + __n;
        puVar19 = puVar18 + 2;
        __n = __n + puVar18[1];
        memcpy(puVar7,(void *)*puVar18,puVar18[1]);
      }
      puVar7 = out + __n;
      __n = __n + puVar19[1];
      memcpy(puVar7,(void *)*puVar19,puVar19[1]);
      puVar18 = puVar19 + 2;
      if (puVar16 == puVar19 + 2) goto LAB_00182d4a;
    }
    do {
      puVar19 = puVar18 + 8;
      lVar12 = puVar18[1] + __n;
      memcpy(out + __n,(void *)*puVar18,puVar18[1]);
      lVar8 = lVar12 + puVar18[3];
      memcpy(out + lVar12,(void *)puVar18[2],puVar18[3]);
      lVar12 = lVar8 + puVar18[5];
      memcpy(out + lVar8,(void *)puVar18[4],puVar18[5]);
      __n = puVar18[7] + lVar12;
      memcpy(out + lVar12,(void *)puVar18[6],puVar18[7]);
      puVar18 = puVar19;
    } while (puVar16 != puVar19);
  }
LAB_00182d4a:
  free(__base);
  goto LAB_00182d53;
code_r0x00182af3:
  uVar14 = 0;
  bVar11 = bVar2 & 7;
  puVar5 = puVar7;
  if ((bVar2 & 7) == 0) goto LAB_00182b97;
  if (bVar11 != 1) {
    puVar6 = puVar7;
    if (bVar11 != 2) {
      if (bVar11 != 3) {
        if (bVar11 != 4) {
          if (bVar11 != 5) {
            if (bVar11 != 6) {
              uVar14 = (ulong)puVar7[2];
              puVar6 = puVar7 + 1;
            }
            puVar5 = puVar6 + 1;
            uVar14 = uVar14 << 8 | (ulong)puVar6[2];
          }
          puVar6 = puVar5 + 1;
          uVar14 = uVar14 << 8 | (ulong)puVar5[2];
        }
        puVar5 = puVar6 + 1;
        uVar14 = uVar14 << 8 | (ulong)puVar6[2];
      }
      puVar6 = puVar5 + 1;
      uVar14 = uVar14 << 8 | (ulong)puVar5[2];
    }
    puVar5 = puVar6 + 1;
    uVar14 = uVar14 << 8 | (ulong)puVar6[2];
  }
  uVar14 = uVar14 << 8 | (ulong)puVar5[2];
  puVar5 = puVar5 + 1;
  while (puVar7 + bVar15 != puVar5) {
LAB_00182b97:
    uVar14 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),
                                                                   puVar5[4]),puVar5[5]),puVar5[6]),
                                        puVar5[7]),puVar5[8]),puVar5[9]);
    puVar5 = puVar5 + 8;
  }
  lVar12 = (ulong)bVar15 + 2 + uVar14;
  puVar7 = puVar7 + lVar12;
  *plVar17 = lVar12;
  plVar17 = plVar17 + 2;
  goto joined_r0x00182aa4;
}



int der_encode_setof(int *param_1,ulong param_2,void *param_3,size_t *param_4)

{
  int *piVar1;
  void *pvVar2;
  byte bVar3;
  size_t sVar4;
  int iVar5;
  void *__ptr;
  undefined8 *__base;
  undefined1 *puVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  long lVar9;
  int *piVar10;
  int *piVar11;
  byte bVar12;
  long lVar13;
  uint uVar14;
  ulong uVar15;
  byte bVar16;
  undefined8 *puVar17;
  long *plVar18;
  undefined8 *puVar19;
  undefined8 *puVar20;
  size_t __n;
  
  if (1 < param_2) {
    if (*param_1 == param_1[0x10]) {
      lVar13 = 1;
      uVar14 = ~(1U - (int)param_2) & 7;
      piVar11 = param_1 + 0x10;
      if (uVar14 != 0) {
        piVar11 = param_1 + 0x20;
        lVar13 = 2;
        if (param_1[0x20] != param_1[0x10]) {
          return 0x10;
        }
        if (uVar14 != 1) {
          piVar10 = piVar11;
          if (uVar14 != 2) {
            if (uVar14 != 3) {
              if (uVar14 != 4) {
                if (uVar14 != 5) {
                  if (uVar14 != 6) {
                    piVar10 = param_1 + 0x30;
                    lVar13 = 3;
                    if (param_1[0x30] != *piVar11) {
                      return 0x10;
                    }
                  }
                  piVar11 = piVar10 + 0x10;
                  lVar13 = lVar13 + 1;
                  if (piVar10[0x10] != *piVar10) {
                    return 0x10;
                  }
                }
                piVar10 = piVar11 + 0x10;
                lVar13 = lVar13 + 1;
                if (piVar11[0x10] != *piVar11) {
                  return 0x10;
                }
              }
              piVar11 = piVar10 + 0x10;
              lVar13 = lVar13 + 1;
              if (piVar10[0x10] != *piVar10) {
                return 0x10;
              }
            }
            piVar10 = piVar11 + 0x10;
            lVar13 = lVar13 + 1;
            if (piVar11[0x10] != *piVar11) {
              return 0x10;
            }
          }
          lVar13 = lVar13 + 1;
          piVar11 = piVar10 + 0x10;
          if (piVar10[0x10] != *piVar10) {
            return 0x10;
          }
        }
      }
      do {
        if (param_2 == lVar13 + 1U) goto LAB_00182a10;
        if (piVar11[0x10] != *piVar11) {
          return 0x10;
        }
        if (piVar11[0x20] != piVar11[0x10]) {
          return 0x10;
        }
        if (piVar11[0x30] != piVar11[0x20]) {
          return 0x10;
        }
        if (piVar11[0x40] != piVar11[0x30]) {
          return 0x10;
        }
        if (piVar11[0x50] != piVar11[0x40]) {
          return 0x10;
        }
        if (piVar11[0x60] != piVar11[0x50]) {
          return 0x10;
        }
        if (piVar11[0x70] != piVar11[0x60]) {
          return 0x10;
        }
        lVar13 = lVar13 + 8;
        piVar10 = piVar11 + 0x70;
        piVar1 = piVar11 + 0x80;
        piVar11 = piVar11 + 0x80;
      } while (*piVar1 == *piVar10);
    }
    return 0x10;
  }
LAB_00182a10:
  __ptr = calloc(1,*param_4);
  if (__ptr == (void *)0x0) {
    return 0xd;
  }
  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);
  if (iVar5 != 0) {
LAB_00182d53:
    free(__ptr);
    return iVar5;
  }
  __base = (undefined8 *)calloc(param_2,0x10);
  if (__base == (undefined8 *)0x0) {
    free(__ptr);
    return 0xd;
  }
  sVar4 = *param_4;
  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);
  if (-1 < (char)*(byte *)((long)__ptr + 1)) {
    puVar8 = (undefined1 *)((long)__ptr + 2);
  }
  __n = (long)puVar8 - (long)__ptr;
  plVar18 = __base + 1;
joined_r0x00182aa4:
  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {
    do {
      bVar3 = puVar8[1];
      plVar18[-1] = (long)puVar8;
      if ((ulong)bVar3 < 0x80) {
        lVar13 = (ulong)bVar3 + 2;
      }
      else {
        bVar16 = bVar3 & 0x7f;
        *plVar18 = 0;
        if (bVar16 != 0) goto code_r0x00182af3;
        lVar13 = 2;
      }
      puVar8 = puVar8 + lVar13;
      *plVar18 = lVar13;
      plVar18 = plVar18 + 2;
      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;
    } while( true );
  }
  qsort(__base,param_2,0x10,FUN_00182650);
  memcpy(param_3,__ptr,__n);
  puVar17 = __base + param_2 * 2;
  if (param_2 != 0) {
    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;
    puVar19 = __base;
    if (uVar14 != 0) {
      puVar20 = __base;
      if (uVar14 != 1) {
        if (uVar14 != 2) {
          pvVar2 = (void *)((long)param_3 + __n);
          puVar19 = __base + 2;
          __n = __n + __base[1];
          memcpy(pvVar2,(void *)*__base,__base[1]);
        }
        pvVar2 = (void *)((long)param_3 + __n);
        puVar20 = puVar19 + 2;
        __n = __n + puVar19[1];
        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);
      }
      pvVar2 = (void *)((long)param_3 + __n);
      __n = __n + puVar20[1];
      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);
      puVar19 = puVar20 + 2;
      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;
    }
    do {
      puVar20 = puVar19 + 8;
      lVar13 = puVar19[1] + __n;
      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);
      lVar9 = lVar13 + puVar19[3];
      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);
      lVar13 = lVar9 + puVar19[5];
      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);
      __n = puVar19[7] + lVar13;
      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);
      puVar19 = puVar20;
    } while (puVar17 != puVar20);
  }
LAB_00182d4a:
  free(__base);
  goto LAB_00182d53;
code_r0x00182af3:
  uVar15 = 0;
  bVar12 = bVar3 & 7;
  puVar6 = puVar8;
  if ((bVar3 & 7) == 0) goto LAB_00182b97;
  if (bVar12 != 1) {
    puVar7 = puVar8;
    if (bVar12 != 2) {
      if (bVar12 != 3) {
        if (bVar12 != 4) {
          if (bVar12 != 5) {
            if (bVar12 != 6) {
              uVar15 = (ulong)(byte)puVar8[2];
              puVar7 = puVar8 + 1;
            }
            puVar6 = puVar7 + 1;
            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];
          }
          puVar7 = puVar6 + 1;
          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];
        }
        puVar6 = puVar7 + 1;
        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];
      }
      puVar7 = puVar6 + 1;
      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];
    }
    puVar6 = puVar7 + 1;
    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];
  }
  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];
  puVar6 = puVar6 + 1;
  while (puVar8 + bVar16 != puVar6) {
LAB_00182b97:
    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),
                                                                   puVar6[4]),puVar6[5]),puVar6[6]),
                                        puVar6[7]),puVar6[8]),puVar6[9]);
    puVar6 = puVar6 + 8;
  }
  lVar13 = (ulong)bVar16 + 2 + uVar15;
  puVar8 = puVar8 + lVar13;
  *plVar18 = lVar13;
  plVar18 = plVar18 + 2;
  goto joined_r0x00182aa4;
}


PUSH R15
PUSH R14
PUSH R13
PUSH R12
PUSH RBP
PUSH RBX
SUB RSP,0x18
CMP RSI,0x1
JBE 0x00182a10
MOV EAX,dword ptr [RDI + 0x40]
CMP dword ptr [RDI],EAX
JNZ 0x001829f0
MOV R8D,0x1
LEA RBP,[RDI + 0x40]
MOV R9,R8
SUB R9,RSI
NOT R9
AND R9D,0x7
JZ 0x00182959
MOV R10D,dword ptr [RBP + 0x40]
LEA RBP,[RDI + 0x80]
MOV R8D,0x2
CMP R10D,dword ptr [RBP + -0x40]
JNZ 0x001829f0
CMP R9,0x1
JZ 0x00182959
CMP R9,0x2
JZ 0x00182943
CMP R9,0x3
JZ 0x0018292d
CMP R9,0x4
JZ 0x00182917
CMP R9,0x5
JZ 0x00182901
CMP R9,0x6
JZ 0x001828eb
MOV EBX,dword ptr [RBP + 0x40]
ADD RBP,0x40
ADD R8,0x1
CMP EBX,dword ptr [RBP + -0x40]
JNZ 0x001829f0
MOV R11D,dword ptr [RBP + 0x40]
ADD RBP,0x40
ADD R8,0x1
CMP R11D,dword ptr [RBP + -0x40]
JNZ 0x001829f0
MOV R12D,dword ptr [RBP + 0x40]
ADD RBP,0x40
ADD R8,0x1
CMP R12D,dword ptr [RBP + -0x40]
JNZ 0x001829f0
MOV R13D,dword ptr [RBP + 0x40]
ADD RBP,0x40
ADD R8,0x1
CMP R13D,dword ptr [RBP + -0x40]
JNZ 0x001829f0
MOV R14D,dword ptr [RBP + 0x40]
ADD RBP,0x40
ADD R8,0x1
CMP R14D,dword ptr [RBP + -0x40]
JNZ 0x001829f0
MOV R15D,dword ptr [RBP + 0x40]
ADD RBP,0x40
ADD R8,0x1
CMP R15D,dword ptr [RBP + -0x40]
JNZ 0x001829f0
LEA RAX,[R8 + 0x1]
CMP RSI,RAX
JZ 0x00182a10
LEA R13,[RBP + 0x40]
MOV R9D,dword ptr [R13 + -0x40]
CMP dword ptr [RBP + 0x40],R9D
JNZ 0x001829f0
MOV R10D,dword ptr [RBP + 0x40]
CMP dword ptr [R13 + 0x40],R10D
JNZ 0x001829f0
MOV EAX,dword ptr [RBP + 0x80]
CMP dword ptr [RBP + 0xc0],EAX
JNZ 0x001829f0
MOV R11D,dword ptr [RBP + 0xc0]
CMP dword ptr [RBP + 0x100],R11D
JNZ 0x001829f0
MOV R12D,dword ptr [RBP + 0x100]
CMP dword ptr [RBP + 0x140],R12D
JNZ 0x001829f0
MOV EBX,dword ptr [RBP + 0x140]
CMP dword ptr [RBP + 0x180],EBX
JNZ 0x001829f0
LEA R15,[RBP + 0x1c0]
MOV R14D,dword ptr [RBP + 0x180]
CMP dword ptr [RBP + 0x1c0],R14D
JNZ 0x001829f0
ADD RBP,0x200
ADD R8,0x8
MOV R13D,dword ptr [RBP + -0x40]
CMP dword ptr [R15 + 0x40],R13D
JZ 0x00182959
NOP word ptr [RAX + RAX*0x1]
MOV R14D,0x10
ADD RSP,0x18
MOV EAX,R14D
POP RBX
POP RBP
POP R12
POP R13
POP R14
POP R15
RET
MOV RBX,RSI
MOV RSI,qword ptr [RCX]
MOV R14,RDI
MOV EDI,0x1
MOV R12,RCX
MOV RBP,RDX
CALL 0x00113d60
MOV R13,RAX
TEST RAX,RAX
JZ 0x00182d60
MOV RDI,R14
MOV R8D,0xf
MOV RCX,R12
MOV RDX,RAX
MOV RSI,RBX
CALL 0x001147f0
MOV R14D,EAX
TEST EAX,EAX
JNZ 0x00182d53
MOV ESI,0x10
MOV RDI,RBX
CALL 0x00113d60
MOV qword ptr [RSP],RAX
TEST RAX,RAX
JZ 0x00182d75
MOVZX ECX,byte ptr [R13 + 0x1]
LEA RDX,[R13 + 0x2]
MOV R11,qword ptr [R12]
MOV RSI,RDX
MOV R9,qword ptr [RSP]
MOV RDI,RCX
AND EDI,0x7f
LEA R12,[R9 + 0x8]
ADD RDX,RDI
TEST CL,CL
CMOVNS RDX,RSI
ADD R11,R13
MOV R15,RDX
SUB R15,R13
CMP RDX,R11
JC 0x00182ac8
JMP 0x00182c14
ADD RAX,0x2
ADD RDX,RAX
MOV qword ptr [R12],RAX
ADD R12,0x10
CMP RDX,R11
JNC 0x00182c14
MOVZX EAX,byte ptr [RDX + 0x1]
MOV qword ptr [R12 + -0x8],RDX
MOV R10,RAX
CMP RAX,0x7f
JBE 0x00182ab0
AND R10D,0x7f
MOV qword ptr [R12],0x0
MOVZX R8D,R10B
TEST R10B,R10B
JZ 0x00182d6b
MOV RDI,R8
MOV RCX,RDX
LEA RSI,[R8 + RDX*0x1]
XOR R9D,R9D
AND EDI,0x7
JZ 0x00182b97
CMP RDI,0x1
JZ 0x00182b83
CMP RDI,0x2
JZ 0x00182b74
CMP RDI,0x3
JZ 0x00182b64
CMP RDI,0x4
JZ 0x00182b55
CMP RDI,0x5
JZ 0x00182b46
CMP RDI,0x6
JZ 0x00182b36
MOVZX R9D,byte ptr [RDX + 0x2]
LEA RCX,[RDX + 0x1]
MOVZX R10D,byte ptr [RCX + 0x2]
SHL R9,0x8
ADD RCX,0x1
OR R9,R10
MOVZX EAX,byte ptr [RCX + 0x2]
SHL R9,0x8
ADD RCX,0x1
OR R9,RAX
MOVZX EDI,byte ptr [RCX + 0x2]
SHL R9,0x8
ADD RCX,0x1
OR R9,RDI
MOVZX R10D,byte ptr [RCX + 0x2]
SHL R9,0x8
ADD RCX,0x1
OR R9,R10
MOVZX EAX,byte ptr [RCX + 0x2]
SHL R9,0x8
ADD RCX,0x1
OR R9,RAX
MOVZX EDI,byte ptr [RCX + 0x2]
SHL R9,0x8
ADD RCX,0x1
OR R9,RDI
CMP RSI,RCX
JZ 0x00182bfa
SHL R9,0x8
MOVZX EAX,byte ptr [RCX + 0x3]
MOVZX EDI,byte ptr [RCX + 0x4]
ADD RCX,0x8
MOVZX R10D,byte ptr [RCX + -0x6]
OR R9,R10
MOVZX R10D,byte ptr [RCX + -0x3]
SHL R9,0x8
OR R9,RAX
MOVZX EAX,byte ptr [RCX + -0x2]
SHL R9,0x8
OR R9,RDI
MOVZX EDI,byte ptr [RCX + -0x1]
SHL R9,0x8
OR R9,R10
MOVZX R10D,byte ptr [RCX]
SHL R9,0x8
OR R9,RAX
MOVZX EAX,byte ptr [RCX + 0x1]
SHL R9,0x8
OR R9,RDI
SHL R9,0x8
OR R9,R10
SHL R9,0x8
OR R9,RAX
CMP RSI,RCX
JNZ 0x00182b97
LEA RAX,[R8 + R9*0x1 + 0x2]
ADD R12,0x10
ADD RDX,RAX
MOV qword ptr [R12 + -0x10],RAX
CMP RDX,R11
JC 0x00182ac8
MOV R12,qword ptr [RSP]
LEA RCX,[0x182650]
MOV EDX,0x10
MOV RSI,RBX
MOV RDI,R12
CALL 0x00113420
MOV RDX,R15
MOV RSI,R13
MOV RDI,RBP
CALL 0x00113f70
MOV R11,RBX
SHL R11,0x4
ADD R11,R12
MOV qword ptr [RSP + 0x8],R11
TEST RBX,RBX
JZ 0x00182d4a
SUB R11,R12
SUB R11,0x10
SHR R11,0x4
ADD R11,0x1
AND R11D,0x3
JZ 0x00182cd8
CMP R11,0x1
JZ 0x00182cb4
CMP R11,0x2
JZ 0x00182c97
MOV R12,qword ptr [RSP]
LEA RDI,[RBP + R15*0x1]
MOV RBX,qword ptr [R12 + 0x8]
MOV RSI,qword ptr [R12]
ADD R12,0x10
MOV RDX,RBX
ADD R15,RBX
CALL 0x00113f70
MOV RBX,qword ptr [R12 + 0x8]
MOV RSI,qword ptr [R12]
LEA RDI,[RBP + R15*0x1]
ADD R12,0x10
MOV RDX,RBX
ADD R15,RBX
CALL 0x00113f70
MOV RBX,qword ptr [R12 + 0x8]
MOV RSI,qword ptr [R12]
LEA RDI,[RBP + R15*0x1]
ADD R12,0x10
MOV RDX,RBX
ADD R15,RBX
CALL 0x00113f70
CMP qword ptr [RSP + 0x8],R12
JZ 0x00182d4a
MOV RBX,qword ptr [R12 + 0x8]
MOV RSI,qword ptr [R12]
LEA RDI,[RBP + R15*0x1]
ADD R12,0x40
MOV RDX,RBX
ADD RBX,R15
CALL 0x00113f70
MOV R15,qword ptr [R12 + -0x28]
MOV RSI,qword ptr [R12 + -0x30]
LEA RDI,[RBP + RBX*0x1]
MOV RDX,R15
ADD RBX,R15
CALL 0x00113f70
MOV R15,qword ptr [R12 + -0x18]
MOV RSI,qword ptr [R12 + -0x20]
LEA RDI,[RBP + RBX*0x1]
MOV RDX,R15
ADD RBX,R15
CALL 0x00113f70
MOV R15,qword ptr [R12 + -0x8]
MOV RSI,qword ptr [R12 + -0x10]
LEA RDI,[RBP + RBX*0x1]
MOV RDX,R15
ADD R15,RBX
CALL 0x00113f70
CMP qword ptr [RSP + 0x8],R12
JNZ 0x00182cd8
MOV RDI,qword ptr [RSP]
CALL 0x00113130
MOV RDI,R13
CALL 0x00113130
JMP 0x001829f6
MOV R14D,0xd
JMP 0x001829f6
MOV EAX,0x2
JMP 0x00182ab4
MOV RDI,R13
MOV R14D,0xd
CALL 0x00113130
JMP 0x001829f6
(translation_unit "int der_encode_setof(int *param_1,ulong param_2,void *param_3,size_t *param_4)\n\n{\n  int *piVar1;\n  void *pvVar2;\n  byte bVar3;\n  size_t sVar4;\n  int iVar5;\n  void *__ptr;\n  undefined8 *__base;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  int *piVar10;\n  int *piVar11;\n  byte bVar12;\n  long lVar13;\n  uint uVar14;\n  ulong uVar15;\n  byte bVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  undefined8 *puVar20;\n  size_t __n;\n  \n  if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  __ptr = calloc(1,*param_4);\n  if (__ptr == (void *)0x0) {\n    return 0xd;\n  }\n  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);\n  if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }\n  __base = (undefined8 *)calloc(param_2,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }\n  sVar4 = *param_4;\n  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);\n  if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }\n  __n = (long)puVar8 - (long)__ptr;\n  plVar18 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }\n  qsort(__base,param_2,0x10,FUN_00182650);\n  memcpy(param_3,__ptr,__n);\n  puVar17 = __base + param_2 * 2;\n  if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar15 = 0;\n  bVar12 = bVar3 & 7;\n  puVar6 = puVar8;\n  if ((bVar3 & 7) == 0) goto LAB_00182b97;\n  if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }\n  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n  puVar6 = puVar6 + 1;\n  while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }\n  lVar13 = (ulong)bVar16 + 2 + uVar15;\n  puVar8 = puVar8 + lVar13;\n  *plVar18 = lVar13;\n  plVar18 = plVar18 + 2;\n  goto joined_r0x00182aa4;\n}\n\n" (function_definition "int der_encode_setof(int *param_1,ulong param_2,void *param_3,size_t *param_4)\n\n{\n  int *piVar1;\n  void *pvVar2;\n  byte bVar3;\n  size_t sVar4;\n  int iVar5;\n  void *__ptr;\n  undefined8 *__base;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  int *piVar10;\n  int *piVar11;\n  byte bVar12;\n  long lVar13;\n  uint uVar14;\n  ulong uVar15;\n  byte bVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  undefined8 *puVar20;\n  size_t __n;\n  \n  if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  __ptr = calloc(1,*param_4);\n  if (__ptr == (void *)0x0) {\n    return 0xd;\n  }\n  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);\n  if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }\n  __base = (undefined8 *)calloc(param_2,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }\n  sVar4 = *param_4;\n  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);\n  if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }\n  __n = (long)puVar8 - (long)__ptr;\n  plVar18 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }\n  qsort(__base,param_2,0x10,FUN_00182650);\n  memcpy(param_3,__ptr,__n);\n  puVar17 = __base + param_2 * 2;\n  if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar15 = 0;\n  bVar12 = bVar3 & 7;\n  puVar6 = puVar8;\n  if ((bVar3 & 7) == 0) goto LAB_00182b97;\n  if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }\n  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n  puVar6 = puVar6 + 1;\n  while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }\n  lVar13 = (ulong)bVar16 + 2 + uVar15;\n  puVar8 = puVar8 + lVar13;\n  *plVar18 = lVar13;\n  plVar18 = plVar18 + 2;\n  goto joined_r0x00182aa4;\n}" primitive_type (function_declarator "der_encode_setof(int *param_1,ulong param_2,void *param_3,size_t *param_4)" identifier (parameter_list "(int *param_1,ulong param_2,void *param_3,size_t *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "void *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "size_t *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  void *pvVar2;\n  byte bVar3;\n  size_t sVar4;\n  int iVar5;\n  void *__ptr;\n  undefined8 *__base;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  int *piVar10;\n  int *piVar11;\n  byte bVar12;\n  long lVar13;\n  uint uVar14;\n  ulong uVar15;\n  byte bVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  undefined8 *puVar20;\n  size_t __n;\n  \n  if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  __ptr = calloc(1,*param_4);\n  if (__ptr == (void *)0x0) {\n    return 0xd;\n  }\n  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);\n  if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }\n  __base = (undefined8 *)calloc(param_2,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }\n  sVar4 = *param_4;\n  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);\n  if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }\n  __n = (long)puVar8 - (long)__ptr;\n  plVar18 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }\n  qsort(__base,param_2,0x10,FUN_00182650);\n  memcpy(param_3,__ptr,__n);\n  puVar17 = __base + param_2 * 2;\n  if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar15 = 0;\n  bVar12 = bVar3 & 7;\n  puVar6 = puVar8;\n  if ((bVar3 & 7) == 0) goto LAB_00182b97;\n  if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }\n  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n  puVar6 = puVar6 + 1;\n  while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }\n  lVar13 = (ulong)bVar16 + 2 + uVar15;\n  puVar8 = puVar8 + lVar13;\n  *plVar18 = lVar13;\n  plVar18 = plVar18 + 2;\n  goto joined_r0x00182aa4;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 *__base;" type_identifier (pointer_declarator "*__base" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "byte bVar16;" type_identifier 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 "undefined8 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (if_statement "if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }" if (parenthesized_expression "(1 < param_2)" ( (binary_expression "1 < param_2" number_literal < identifier) )) (compound_statement "{\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }" { (if_statement "if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }" if (parenthesized_expression "(*param_1 == param_1[0x10])" ( (binary_expression "*param_1 == param_1[0x10]" (pointer_expression "*param_1" * identifier) == (subscript_expression "param_1[0x10]" identifier [ number_literal ])) )) (compound_statement "{\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }" { (expression_statement "lVar13 = 1;" (assignment_expression "lVar13 = 1" identifier = number_literal) ;) (expression_statement "uVar14 = ~(1U - (int)param_2) & 7;" (assignment_expression "uVar14 = ~(1U - (int)param_2) & 7" identifier = (binary_expression "~(1U - (int)param_2) & 7" (unary_expression "~(1U - (int)param_2)" ~ (parenthesized_expression "(1U - (int)param_2)" ( (binary_expression "1U - (int)param_2" number_literal - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) & number_literal)) ;) (expression_statement "piVar11 = param_1 + 0x10;" (assignment_expression "piVar11 = param_1 + 0x10" identifier = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (if_statement "if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }" { (expression_statement "piVar11 = param_1 + 0x20;" (assignment_expression "piVar11 = param_1 + 0x20" identifier = (binary_expression "param_1 + 0x20" identifier + number_literal)) ;) (expression_statement "lVar13 = 2;" (assignment_expression "lVar13 = 2" identifier = number_literal) ;) (if_statement "if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }" if (parenthesized_expression "(param_1[0x20] != param_1[0x10])" ( (binary_expression "param_1[0x20] != param_1[0x10]" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) != (subscript_expression "param_1[0x10]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }" if (parenthesized_expression "(uVar14 != 1)" ( (binary_expression "uVar14 != 1" identifier != number_literal) )) (compound_statement "{\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }" { (expression_statement "piVar10 = piVar11;" (assignment_expression "piVar10 = piVar11" identifier = identifier) ;) (if_statement "if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }" if (parenthesized_expression "(uVar14 != 2)" ( (binary_expression "uVar14 != 2" identifier != number_literal) )) (compound_statement "{\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }" { (if_statement "if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }" if (parenthesized_expression "(uVar14 != 3)" ( (binary_expression "uVar14 != 3" identifier != number_literal) )) (compound_statement "{\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }" { (if_statement "if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }" if (parenthesized_expression "(uVar14 != 4)" ( (binary_expression "uVar14 != 4" identifier != number_literal) )) (compound_statement "{\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }" { (if_statement "if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }" if (parenthesized_expression "(uVar14 != 5)" ( (binary_expression "uVar14 != 5" identifier != number_literal) )) (compound_statement "{\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }" { (if_statement "if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }" if (parenthesized_expression "(uVar14 != 6)" ( (binary_expression "uVar14 != 6" identifier != number_literal) )) (compound_statement "{\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }" { (expression_statement "piVar10 = param_1 + 0x30;" (assignment_expression "piVar10 = param_1 + 0x30" identifier = (binary_expression "param_1 + 0x30" identifier + number_literal)) ;) (expression_statement "lVar13 = 3;" (assignment_expression "lVar13 = 3" identifier = number_literal) ;) (if_statement "if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }" if (parenthesized_expression "(param_1[0x30] != *piVar11)" ( (binary_expression "param_1[0x30] != *piVar11" (subscript_expression "param_1[0x30]" identifier [ number_literal ]) != (pointer_expression "*piVar11" * identifier)) )) (compound_statement "{\n                      return 0x10;\n                    }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "piVar11 = piVar10 + 0x10;" (assignment_expression "piVar11 = piVar10 + 0x10" identifier = (binary_expression "piVar10 + 0x10" identifier + number_literal)) ;) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (if_statement "if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }" if (parenthesized_expression "(piVar10[0x10] != *piVar10)" ( (binary_expression "piVar10[0x10] != *piVar10" (subscript_expression "piVar10[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n                    return 0x10;\n                  }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "piVar10 = piVar11 + 0x10;" (assignment_expression "piVar10 = piVar11 + 0x10" identifier = (binary_expression "piVar11 + 0x10" identifier + number_literal)) ;) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (if_statement "if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }" if (parenthesized_expression "(piVar11[0x10] != *piVar11)" ( (binary_expression "piVar11[0x10] != *piVar11" (subscript_expression "piVar11[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar11" * identifier)) )) (compound_statement "{\n                  return 0x10;\n                }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "piVar11 = piVar10 + 0x10;" (assignment_expression "piVar11 = piVar10 + 0x10" identifier = (binary_expression "piVar10 + 0x10" identifier + number_literal)) ;) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (if_statement "if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }" if (parenthesized_expression "(piVar10[0x10] != *piVar10)" ( (binary_expression "piVar10[0x10] != *piVar10" (subscript_expression "piVar10[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n                return 0x10;\n              }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "piVar10 = piVar11 + 0x10;" (assignment_expression "piVar10 = piVar11 + 0x10" identifier = (binary_expression "piVar11 + 0x10" identifier + number_literal)) ;) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (if_statement "if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }" if (parenthesized_expression "(piVar11[0x10] != *piVar11)" ( (binary_expression "piVar11[0x10] != *piVar11" (subscript_expression "piVar11[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar11" * identifier)) )) (compound_statement "{\n              return 0x10;\n            }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar10 + 0x10;" (assignment_expression "piVar11 = piVar10 + 0x10" identifier = (binary_expression "piVar10 + 0x10" identifier + number_literal)) ;) (if_statement "if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }" if (parenthesized_expression "(piVar10[0x10] != *piVar10)" ( (binary_expression "piVar10[0x10] != *piVar10" (subscript_expression "piVar10[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n            return 0x10;\n          }" { (return_statement "return 0x10;" return number_literal ;) })) })) })) (do_statement "do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);" do (compound_statement "{\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      }" { (if_statement "if (param_2 == lVar13 + 1U) goto LAB_00182a10;" if (parenthesized_expression "(param_2 == lVar13 + 1U)" ( (binary_expression "param_2 == lVar13 + 1U" identifier == (binary_expression "lVar13 + 1U" identifier + number_literal)) )) (goto_statement "goto LAB_00182a10;" goto statement_identifier ;)) (if_statement "if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x10] != *piVar11)" ( (binary_expression "piVar11[0x10] != *piVar11" (subscript_expression "piVar11[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar11" * identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x20] != piVar11[0x10])" ( (binary_expression "piVar11[0x20] != piVar11[0x10]" (subscript_expression "piVar11[0x20]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x10]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x30] != piVar11[0x20])" ( (binary_expression "piVar11[0x30] != piVar11[0x20]" (subscript_expression "piVar11[0x30]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x20]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x40] != piVar11[0x30])" ( (binary_expression "piVar11[0x40] != piVar11[0x30]" (subscript_expression "piVar11[0x40]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x30]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x50] != piVar11[0x40])" ( (binary_expression "piVar11[0x50] != piVar11[0x40]" (subscript_expression "piVar11[0x50]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x40]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x60] != piVar11[0x50])" ( (binary_expression "piVar11[0x60] != piVar11[0x50]" (subscript_expression "piVar11[0x60]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x50]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x70] != piVar11[0x60])" ( (binary_expression "piVar11[0x70] != piVar11[0x60]" (subscript_expression "piVar11[0x70]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x60]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "lVar13 = lVar13 + 8;" (assignment_expression "lVar13 = lVar13 + 8" identifier = (binary_expression "lVar13 + 8" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar11 + 0x70;" (assignment_expression "piVar10 = piVar11 + 0x70" identifier = (binary_expression "piVar11 + 0x70" identifier + number_literal)) ;) (expression_statement "piVar1 = piVar11 + 0x80;" (assignment_expression "piVar1 = piVar11 + 0x80" identifier = (binary_expression "piVar11 + 0x80" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 0x80;" (assignment_expression "piVar11 = piVar11 + 0x80" identifier = (binary_expression "piVar11 + 0x80" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar1 == *piVar10)" ( (binary_expression "*piVar1 == *piVar10" (pointer_expression "*piVar1" * identifier) == (pointer_expression "*piVar10" * identifier)) )) ;) })) (return_statement "return 0x10;" return number_literal ;) })) (labeled_statement "LAB_00182a10:\n  __ptr = calloc(1,*param_4);" statement_identifier : (expression_statement "__ptr = calloc(1,*param_4);" (assignment_expression "__ptr = calloc(1,*param_4)" identifier = (call_expression "calloc(1,*param_4)" identifier (argument_list "(1,*param_4)" ( number_literal , (pointer_expression "*param_4" * identifier) )))) ;)) (if_statement "if (__ptr == (void *)0x0) {\n    return 0xd;\n  }" if (parenthesized_expression "(__ptr == (void *)0x0)" ( (binary_expression "__ptr == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0xd;\n  }" { (return_statement "return 0xd;" return number_literal ;) })) (expression_statement "iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);" (assignment_expression "iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf)" identifier = (call_expression "der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf)" identifier (argument_list "(param_1,param_2,__ptr,param_4,0xf)" ( identifier , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }" { (labeled_statement "LAB_00182d53:\n    free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (return_statement "return iVar5;" return identifier ;) })) (expression_statement "__base = (undefined8 *)calloc(param_2,0x10);" (assignment_expression "__base = (undefined8 *)calloc(param_2,0x10)" identifier = (cast_expression "(undefined8 *)calloc(param_2,0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(param_2,0x10)" identifier (argument_list "(param_2,0x10)" ( identifier , number_literal ))))) ;) (if_statement "if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }" if (parenthesized_expression "(__base == (undefined8 *)0x0)" ( (binary_expression "__base == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(__ptr);\n    return 0xd;\n  }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 0xd;" return number_literal ;) })) (expression_statement "sVar4 = *param_4;" (assignment_expression "sVar4 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);" (assignment_expression "puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f)" identifier = (binary_expression "(undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f)" (cast_expression "(undefined1 *)((long)__ptr + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__ptr + 2)" ( (binary_expression "(long)__ptr + 2" (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) + (parenthesized_expression "(*(byte *)((long)__ptr + 1) & 0x7f)" ( (binary_expression "*(byte *)((long)__ptr + 1) & 0x7f" (pointer_expression "*(byte *)((long)__ptr + 1)" * (cast_expression "(byte *)((long)__ptr + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__ptr + 1)" ( (binary_expression "(long)__ptr + 1" (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )))) ;) (if_statement "if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }" if (parenthesized_expression "(-1 < (char)*(byte *)((long)__ptr + 1))" ( (binary_expression "-1 < (char)*(byte *)((long)__ptr + 1)" number_literal < (cast_expression "(char)*(byte *)((long)__ptr + 1)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)((long)__ptr + 1)" * (cast_expression "(byte *)((long)__ptr + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__ptr + 1)" ( (binary_expression "(long)__ptr + 1" (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }" { (expression_statement "puVar8 = (undefined1 *)((long)__ptr + 2);" (assignment_expression "puVar8 = (undefined1 *)((long)__ptr + 2)" identifier = (cast_expression "(undefined1 *)((long)__ptr + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__ptr + 2)" ( (binary_expression "(long)__ptr + 2" (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "__n = (long)puVar8 - (long)__ptr;" (assignment_expression "__n = (long)puVar8 - (long)__ptr" identifier = (binary_expression "(long)puVar8 - (long)__ptr" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "plVar18 = __base + 1;" (assignment_expression "plVar18 = __base + 1" identifier = (binary_expression "__base + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }" if (parenthesized_expression "(puVar8 < (undefined1 *)(sVar4 + (long)__ptr))" ( (binary_expression "puVar8 < (undefined1 *)(sVar4 + (long)__ptr)" identifier < (cast_expression "(undefined1 *)(sVar4 + (long)__ptr)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(sVar4 + (long)__ptr)" ( (binary_expression "sVar4 + (long)__ptr" identifier + (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (compound_statement "{\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }" { (do_statement "do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );" do (compound_statement "{\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    }" { (expression_statement "bVar3 = puVar8[1];" (assignment_expression "bVar3 = puVar8[1]" identifier = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "plVar18[-1] = (long)puVar8;" (assignment_expression "plVar18[-1] = (long)puVar8" (subscript_expression "plVar18[-1]" identifier [ number_literal ]) = (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }" if (parenthesized_expression "((ulong)bVar3 < 0x80)" ( (binary_expression "(ulong)bVar3 < 0x80" (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        lVar13 = (ulong)bVar3 + 2;\n      }" { (expression_statement "lVar13 = (ulong)bVar3 + 2;" (assignment_expression "lVar13 = (ulong)bVar3 + 2" identifier = (binary_expression "(ulong)bVar3 + 2" (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal)) ;) }) (else_clause "else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }" else (compound_statement "{\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }" { (expression_statement "bVar16 = bVar3 & 0x7f;" (assignment_expression "bVar16 = bVar3 & 0x7f" identifier = (binary_expression "bVar3 & 0x7f" identifier & number_literal)) ;) (expression_statement "*plVar18 = 0;" (assignment_expression "*plVar18 = 0" (pointer_expression "*plVar18" * identifier) = number_literal) ;) (if_statement "if (bVar16 != 0) goto code_r0x00182af3;" if (parenthesized_expression "(bVar16 != 0)" ( (binary_expression "bVar16 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00182af3;" goto statement_identifier ;)) (expression_statement "lVar13 = 2;" (assignment_expression "lVar13 = 2" identifier = number_literal) ;) }))) (expression_statement "puVar8 = puVar8 + lVar13;" (assignment_expression "puVar8 = puVar8 + lVar13" identifier = (binary_expression "puVar8 + lVar13" identifier + identifier)) ;) (expression_statement "*plVar18 = lVar13;" (assignment_expression "*plVar18 = lVar13" (pointer_expression "*plVar18" * identifier) = identifier) ;) (expression_statement "plVar18 = plVar18 + 2;" (assignment_expression "plVar18 = plVar18 + 2" identifier = (binary_expression "plVar18 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;" if (parenthesized_expression "((undefined1 *)(sVar4 + (long)__ptr) <= puVar8)" ( (binary_expression "(undefined1 *)(sVar4 + (long)__ptr) <= puVar8" (cast_expression "(undefined1 *)(sVar4 + (long)__ptr)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(sVar4 + (long)__ptr)" ( (binary_expression "sVar4 + (long)__ptr" identifier + (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) <= identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "qsort(__base,param_2,0x10,FUN_00182650);" (call_expression "qsort(__base,param_2,0x10,FUN_00182650)" identifier (argument_list "(__base,param_2,0x10,FUN_00182650)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "memcpy(param_3,__ptr,__n);" (call_expression "memcpy(param_3,__ptr,__n)" identifier (argument_list "(param_3,__ptr,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar17 = __base + param_2 * 2;" (assignment_expression "puVar17 = __base + param_2 * 2" identifier = (binary_expression "__base + param_2 * 2" identifier + (binary_expression "param_2 * 2" identifier * number_literal))) ;) (if_statement "if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }" { (expression_statement "uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;" (assignment_expression "uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3" identifier = (binary_expression "(int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3" (binary_expression "(int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U" (cast_expression "(int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4)" ( (binary_expression "(ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4" (call_expression "(ulong)((long)puVar17 + (-0x10 - (long)__base))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)puVar17 + (-0x10 - (long)__base))" ( (binary_expression "(long)puVar17 + (-0x10 - (long)__base)" (cast_expression "(long)puVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x10 - (long)__base)" ( (binary_expression "-0x10 - (long)__base" number_literal - (cast_expression "(long)__base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) >> number_literal) ))) + number_literal) & number_literal)) ;) (expression_statement "puVar19 = __base;" (assignment_expression "puVar19 = __base" identifier = identifier) ;) (if_statement "if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }" { (expression_statement "puVar20 = __base;" (assignment_expression "puVar20 = __base" identifier = identifier) ;) (if_statement "if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }" if (parenthesized_expression "(uVar14 != 1)" ( (binary_expression "uVar14 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }" { (if_statement "if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }" if (parenthesized_expression "(uVar14 != 2)" ( (binary_expression "uVar14 != 2" identifier != number_literal) )) (compound_statement "{\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }" { (expression_statement "pvVar2 = (void *)((long)param_3 + __n);" (assignment_expression "pvVar2 = (void *)((long)param_3 + __n)" identifier = (cast_expression "(void *)((long)param_3 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + __n)" ( (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "puVar19 = __base + 2;" (assignment_expression "puVar19 = __base + 2" identifier = (binary_expression "__base + 2" identifier + number_literal)) ;) (expression_statement "__n = __n + __base[1];" (assignment_expression "__n = __n + __base[1]" identifier = (binary_expression "__n + __base[1]" identifier + (subscript_expression "__base[1]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(pvVar2,(void *)*__base,__base[1]);" (call_expression "memcpy(pvVar2,(void *)*__base,__base[1])" identifier (argument_list "(pvVar2,(void *)*__base,__base[1])" ( identifier , (cast_expression "(void *)*__base" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*__base" * identifier)) , (subscript_expression "__base[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "pvVar2 = (void *)((long)param_3 + __n);" (assignment_expression "pvVar2 = (void *)((long)param_3 + __n)" identifier = (cast_expression "(void *)((long)param_3 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + __n)" ( (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "puVar20 = puVar19 + 2;" (assignment_expression "puVar20 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (expression_statement "__n = __n + puVar19[1];" (assignment_expression "__n = __n + puVar19[1]" identifier = (binary_expression "__n + puVar19[1]" identifier + (subscript_expression "puVar19[1]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(pvVar2,(void *)*puVar19,puVar19[1]);" (call_expression "memcpy(pvVar2,(void *)*puVar19,puVar19[1])" identifier (argument_list "(pvVar2,(void *)*puVar19,puVar19[1])" ( identifier , (cast_expression "(void *)*puVar19" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier)) , (subscript_expression "puVar19[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "pvVar2 = (void *)((long)param_3 + __n);" (assignment_expression "pvVar2 = (void *)((long)param_3 + __n)" identifier = (cast_expression "(void *)((long)param_3 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + __n)" ( (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "__n = __n + puVar20[1];" (assignment_expression "__n = __n + puVar20[1]" identifier = (binary_expression "__n + puVar20[1]" identifier + (subscript_expression "puVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(pvVar2,(void *)*puVar20,puVar20[1]);" (call_expression "memcpy(pvVar2,(void *)*puVar20,puVar20[1])" identifier (argument_list "(pvVar2,(void *)*puVar20,puVar20[1])" ( identifier , (cast_expression "(void *)*puVar20" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar20" * identifier)) , (subscript_expression "puVar20[1]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar19 = puVar20 + 2;" (assignment_expression "puVar19 = puVar20 + 2" identifier = (binary_expression "puVar20 + 2" identifier + number_literal)) ;) (if_statement "if (puVar17 == puVar20 + 2) goto LAB_00182d4a;" if (parenthesized_expression "(puVar17 == puVar20 + 2)" ( (binary_expression "puVar17 == puVar20 + 2" identifier == (binary_expression "puVar20 + 2" identifier + number_literal)) )) (goto_statement "goto LAB_00182d4a;" goto statement_identifier ;)) })) (do_statement "do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);" do (compound_statement "{\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    }" { (expression_statement "puVar20 = puVar19 + 8;" (assignment_expression "puVar20 = puVar19 + 8" identifier = (binary_expression "puVar19 + 8" identifier + number_literal)) ;) (expression_statement "lVar13 = puVar19[1] + __n;" (assignment_expression "lVar13 = puVar19[1] + __n" identifier = (binary_expression "puVar19[1] + __n" (subscript_expression "puVar19[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);" (call_expression "memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1])" identifier (argument_list "((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1])" ( (cast_expression "(void *)((long)param_3 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + __n)" ( (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , (cast_expression "(void *)*puVar19" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier)) , (subscript_expression "puVar19[1]" identifier [ number_literal ]) ))) ;) (expression_statement "lVar9 = lVar13 + puVar19[3];" (assignment_expression "lVar9 = lVar13 + puVar19[3]" identifier = (binary_expression "lVar13 + puVar19[3]" identifier + (subscript_expression "puVar19[3]" identifier [ number_literal ]))) ;) (expression_statement "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);" (call_expression "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3])" identifier (argument_list "((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3])" ( (cast_expression "(void *)((long)param_3 + lVar13)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + lVar13)" ( (binary_expression "(long)param_3 + lVar13" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , (cast_expression "(void *)puVar19[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar19[2]" identifier [ number_literal ])) , (subscript_expression "puVar19[3]" identifier [ number_literal ]) ))) ;) (expression_statement "lVar13 = lVar9 + puVar19[5];" (assignment_expression "lVar13 = lVar9 + puVar19[5]" identifier = (binary_expression "lVar9 + puVar19[5]" identifier + (subscript_expression "puVar19[5]" identifier [ number_literal ]))) ;) (expression_statement "memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);" (call_expression "memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5])" identifier (argument_list "((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5])" ( (cast_expression "(void *)((long)param_3 + lVar9)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + lVar9)" ( (binary_expression "(long)param_3 + lVar9" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , (cast_expression "(void *)puVar19[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar19[4]" identifier [ number_literal ])) , (subscript_expression "puVar19[5]" identifier [ number_literal ]) ))) ;) (expression_statement "__n = puVar19[7] + lVar13;" (assignment_expression "__n = puVar19[7] + lVar13" identifier = (binary_expression "puVar19[7] + lVar13" (subscript_expression "puVar19[7]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);" (call_expression "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7])" identifier (argument_list "((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7])" ( (cast_expression "(void *)((long)param_3 + lVar13)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + lVar13)" ( (binary_expression "(long)param_3 + lVar13" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , (cast_expression "(void *)puVar19[6]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar19[6]" identifier [ number_literal ])) , (subscript_expression "puVar19[7]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar19 = puVar20;" (assignment_expression "puVar19 = puVar20" identifier = identifier) ;) }) while (parenthesized_expression "(puVar17 != puVar20)" ( (binary_expression "puVar17 != puVar20" identifier != identifier) )) ;) })) (labeled_statement "LAB_00182d4a:\n  free(__base);" statement_identifier : (expression_statement "free(__base);" (call_expression "free(__base)" identifier (argument_list "(__base)" ( identifier ))) ;)) (goto_statement "goto LAB_00182d53;" goto statement_identifier ;) (labeled_statement "code_r0x00182af3:\n  uVar15 = 0;" statement_identifier : (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;)) (expression_statement "bVar12 = bVar3 & 7;" (assignment_expression "bVar12 = bVar3 & 7" identifier = (binary_expression "bVar3 & 7" identifier & number_literal)) ;) (expression_statement "puVar6 = puVar8;" (assignment_expression "puVar6 = puVar8" identifier = identifier) ;) (if_statement "if ((bVar3 & 7) == 0) goto LAB_00182b97;" if (parenthesized_expression "((bVar3 & 7) == 0)" ( (binary_expression "(bVar3 & 7) == 0" (parenthesized_expression "(bVar3 & 7)" ( (binary_expression "bVar3 & 7" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00182b97;" goto statement_identifier ;)) (if_statement "if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }" if (parenthesized_expression "(bVar12 != 1)" ( (binary_expression "bVar12 != 1" identifier != number_literal) )) (compound_statement "{\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }" { (expression_statement "puVar7 = puVar8;" (assignment_expression "puVar7 = puVar8" identifier = identifier) ;) (if_statement "if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }" if (parenthesized_expression "(bVar12 != 2)" ( (binary_expression "bVar12 != 2" identifier != number_literal) )) (compound_statement "{\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }" { (if_statement "if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }" if (parenthesized_expression "(bVar12 != 3)" ( (binary_expression "bVar12 != 3" identifier != number_literal) )) (compound_statement "{\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }" { (if_statement "if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }" if (parenthesized_expression "(bVar12 != 4)" ( (binary_expression "bVar12 != 4" identifier != number_literal) )) (compound_statement "{\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }" { (if_statement "if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }" if (parenthesized_expression "(bVar12 != 5)" ( (binary_expression "bVar12 != 5" identifier != number_literal) )) (compound_statement "{\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }" { (if_statement "if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }" if (parenthesized_expression "(bVar12 != 6)" ( (binary_expression "bVar12 != 6" identifier != number_literal) )) (compound_statement "{\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }" { (expression_statement "uVar15 = (ulong)(byte)puVar8[2];" (assignment_expression "uVar15 = (ulong)(byte)puVar8[2]" identifier = (cast_expression "(ulong)(byte)puVar8[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar8[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar8[2]" identifier [ number_literal ])))) ;) (expression_statement "puVar7 = puVar8 + 1;" (assignment_expression "puVar7 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar7[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar7[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar7[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar6[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar6[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar6[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar7[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar7[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar7[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar6[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar6[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar6[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar7[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar7[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar7[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar6[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar6[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar6[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[2]" identifier [ number_literal ]))))) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (while_statement "while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }" while (parenthesized_expression "(puVar8 + bVar16 != puVar6)" ( (binary_expression "puVar8 + bVar16 != puVar6" (binary_expression "puVar8 + bVar16" identifier + identifier) != identifier) )) (compound_statement "{\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }" { (labeled_statement "LAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);" statement_identifier : (expression_statement "uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);" (assignment_expression "uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9])" identifier = (call_expression "CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9])" identifier (argument_list "(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9])" ( (call_expression "CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8])" identifier (argument_list "(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8])" ( (call_expression "CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7])" identifier (argument_list "(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7])" ( (call_expression "CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6])" identifier (argument_list "(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6])" ( (call_expression "CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5])" identifier (argument_list "(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5])" ( (call_expression "CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4])" identifier (argument_list "(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4])" ( (call_expression "CONCAT11(puVar6[2],puVar6[3])" identifier (argument_list "(puVar6[2],puVar6[3])" ( (subscript_expression "puVar6[2]" identifier [ number_literal ]) , (subscript_expression "puVar6[3]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[4]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[5]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[6]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[7]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[8]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[9]" identifier [ number_literal ]) )))) ;)) (expression_statement "puVar6 = puVar6 + 8;" (assignment_expression "puVar6 = puVar6 + 8" identifier = (binary_expression "puVar6 + 8" identifier + number_literal)) ;) })) (expression_statement "lVar13 = (ulong)bVar16 + 2 + uVar15;" (assignment_expression "lVar13 = (ulong)bVar16 + 2 + uVar15" identifier = (binary_expression "(ulong)bVar16 + 2 + uVar15" (binary_expression "(ulong)bVar16 + 2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) + identifier)) ;) (expression_statement "puVar8 = puVar8 + lVar13;" (assignment_expression "puVar8 = puVar8 + lVar13" identifier = (binary_expression "puVar8 + lVar13" identifier + identifier)) ;) (expression_statement "*plVar18 = lVar13;" (assignment_expression "*plVar18 = lVar13" (pointer_expression "*plVar18" * identifier) = identifier) ;) (expression_statement "plVar18 = plVar18 + 2;" (assignment_expression "plVar18 = plVar18 + 2" identifier = (binary_expression "plVar18 + 2" identifier + number_literal)) ;) (goto_statement "goto joined_r0x00182aa4;" goto statement_identifier ;) })))
(translation_unit "int der_encode_setof(ltc_asn1_list *list,ulong inlen,uchar *out,ulong *outlen)\n\n{\n  ltc_asn1_list *plVar1;\n  byte bVar2;\n  ulong uVar3;\n  int iVar4;\n  uchar *out_00;\n  undefined8 *__base;\n  uchar *puVar5;\n  uchar *puVar6;\n  uchar *puVar7;\n  long lVar8;\n  ltc_asn1_list *plVar9;\n  ltc_asn1_list *plVar10;\n  byte bVar11;\n  long lVar12;\n  uint uVar13;\n  ulong uVar14;\n  byte bVar15;\n  undefined8 *puVar16;\n  long *plVar17;\n  undefined8 *puVar18;\n  undefined8 *puVar19;\n  size_t __n;\n  \n  if (1 < inlen) {\n    if (list->type == list[1].type) {\n      lVar12 = 1;\n      uVar13 = ~(1U - (int)inlen) & 7;\n      plVar10 = list + 1;\n      if (uVar13 != 0) {\n        plVar10 = list + 2;\n        lVar12 = 2;\n        if (list[2].type != list[1].type) {\n          return 0x10;\n        }\n        if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (inlen == lVar12 + 1U) goto LAB_00182a10;\n        if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }\n        if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }\n        if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }\n        if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }\n        if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }\n        if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }\n        if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }\n        lVar12 = lVar12 + 8;\n        plVar9 = plVar10 + 7;\n        plVar1 = plVar10 + 8;\n        plVar10 = plVar10 + 8;\n      } while (plVar1->type == plVar9->type);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  out_00 = (uchar *)calloc(1,*outlen);\n  if (out_00 == (uchar *)0x0) {\n    return 0xd;\n  }\n  iVar4 = der_encode_sequence_ex(list,inlen,out_00,outlen,0xf);\n  if (iVar4 != 0) {\nLAB_00182d53:\n    free(out_00);\n    return iVar4;\n  }\n  __base = (undefined8 *)calloc(inlen,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(out_00);\n    return 0xd;\n  }\n  uVar3 = *outlen;\n  puVar7 = out_00 + 2 + (out_00[1] & 0x7f);\n  if (-1 < (char)out_00[1]) {\n    puVar7 = out_00 + 2;\n  }\n  __n = (long)puVar7 - (long)out_00;\n  plVar17 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar7 < out_00 + uVar3) {\n    do {\n      bVar2 = puVar7[1];\n      plVar17[-1] = (long)puVar7;\n      if ((ulong)bVar2 < 0x80) {\n        lVar12 = (ulong)bVar2 + 2;\n      }\n      else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }\n      puVar7 = puVar7 + lVar12;\n      *plVar17 = lVar12;\n      plVar17 = plVar17 + 2;\n      if (out_00 + uVar3 <= puVar7) break;\n    } while( true );\n  }\n  qsort(__base,inlen,0x10,_qsort_helper);\n  memcpy(out,out_00,__n);\n  puVar16 = __base + inlen * 2;\n  if (inlen != 0) {\n    uVar13 = (int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar18 = __base;\n    if (uVar13 != 0) {\n      puVar19 = __base;\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }\n        puVar7 = out + __n;\n        puVar19 = puVar18 + 2;\n        __n = __n + puVar18[1];\n        memcpy(puVar7,(void *)*puVar18,puVar18[1]);\n      }\n      puVar7 = out + __n;\n      __n = __n + puVar19[1];\n      memcpy(puVar7,(void *)*puVar19,puVar19[1]);\n      puVar18 = puVar19 + 2;\n      if (puVar16 == puVar19 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar19 = puVar18 + 8;\n      lVar12 = puVar18[1] + __n;\n      memcpy(out + __n,(void *)*puVar18,puVar18[1]);\n      lVar8 = lVar12 + puVar18[3];\n      memcpy(out + lVar12,(void *)puVar18[2],puVar18[3]);\n      lVar12 = lVar8 + puVar18[5];\n      memcpy(out + lVar8,(void *)puVar18[4],puVar18[5]);\n      __n = puVar18[7] + lVar12;\n      memcpy(out + lVar12,(void *)puVar18[6],puVar18[7]);\n      puVar18 = puVar19;\n    } while (puVar16 != puVar19);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar14 = 0;\n  bVar11 = bVar2 & 7;\n  puVar5 = puVar7;\n  if ((bVar2 & 7) == 0) goto LAB_00182b97;\n  if (bVar11 != 1) {\n    puVar6 = puVar7;\n    if (bVar11 != 2) {\n      if (bVar11 != 3) {\n        if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }\n        puVar5 = puVar6 + 1;\n        uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n      }\n      puVar6 = puVar5 + 1;\n      uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n    }\n    puVar5 = puVar6 + 1;\n    uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n  }\n  uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n  puVar5 = puVar5 + 1;\n  while (puVar7 + bVar15 != puVar5) {\nLAB_00182b97:\n    uVar14 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9]);\n    puVar5 = puVar5 + 8;\n  }\n  lVar12 = (ulong)bVar15 + 2 + uVar14;\n  puVar7 = puVar7 + lVar12;\n  *plVar17 = lVar12;\n  plVar17 = plVar17 + 2;\n  goto joined_r0x00182aa4;\n}\n\n" (function_definition "int der_encode_setof(ltc_asn1_list *list,ulong inlen,uchar *out,ulong *outlen)\n\n{\n  ltc_asn1_list *plVar1;\n  byte bVar2;\n  ulong uVar3;\n  int iVar4;\n  uchar *out_00;\n  undefined8 *__base;\n  uchar *puVar5;\n  uchar *puVar6;\n  uchar *puVar7;\n  long lVar8;\n  ltc_asn1_list *plVar9;\n  ltc_asn1_list *plVar10;\n  byte bVar11;\n  long lVar12;\n  uint uVar13;\n  ulong uVar14;\n  byte bVar15;\n  undefined8 *puVar16;\n  long *plVar17;\n  undefined8 *puVar18;\n  undefined8 *puVar19;\n  size_t __n;\n  \n  if (1 < inlen) {\n    if (list->type == list[1].type) {\n      lVar12 = 1;\n      uVar13 = ~(1U - (int)inlen) & 7;\n      plVar10 = list + 1;\n      if (uVar13 != 0) {\n        plVar10 = list + 2;\n        lVar12 = 2;\n        if (list[2].type != list[1].type) {\n          return 0x10;\n        }\n        if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (inlen == lVar12 + 1U) goto LAB_00182a10;\n        if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }\n        if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }\n        if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }\n        if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }\n        if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }\n        if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }\n        if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }\n        lVar12 = lVar12 + 8;\n        plVar9 = plVar10 + 7;\n        plVar1 = plVar10 + 8;\n        plVar10 = plVar10 + 8;\n      } while (plVar1->type == plVar9->type);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  out_00 = (uchar *)calloc(1,*outlen);\n  if (out_00 == (uchar *)0x0) {\n    return 0xd;\n  }\n  iVar4 = der_encode_sequence_ex(list,inlen,out_00,outlen,0xf);\n  if (iVar4 != 0) {\nLAB_00182d53:\n    free(out_00);\n    return iVar4;\n  }\n  __base = (undefined8 *)calloc(inlen,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(out_00);\n    return 0xd;\n  }\n  uVar3 = *outlen;\n  puVar7 = out_00 + 2 + (out_00[1] & 0x7f);\n  if (-1 < (char)out_00[1]) {\n    puVar7 = out_00 + 2;\n  }\n  __n = (long)puVar7 - (long)out_00;\n  plVar17 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar7 < out_00 + uVar3) {\n    do {\n      bVar2 = puVar7[1];\n      plVar17[-1] = (long)puVar7;\n      if ((ulong)bVar2 < 0x80) {\n        lVar12 = (ulong)bVar2 + 2;\n      }\n      else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }\n      puVar7 = puVar7 + lVar12;\n      *plVar17 = lVar12;\n      plVar17 = plVar17 + 2;\n      if (out_00 + uVar3 <= puVar7) break;\n    } while( true );\n  }\n  qsort(__base,inlen,0x10,_qsort_helper);\n  memcpy(out,out_00,__n);\n  puVar16 = __base + inlen * 2;\n  if (inlen != 0) {\n    uVar13 = (int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar18 = __base;\n    if (uVar13 != 0) {\n      puVar19 = __base;\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }\n        puVar7 = out + __n;\n        puVar19 = puVar18 + 2;\n        __n = __n + puVar18[1];\n        memcpy(puVar7,(void *)*puVar18,puVar18[1]);\n      }\n      puVar7 = out + __n;\n      __n = __n + puVar19[1];\n      memcpy(puVar7,(void *)*puVar19,puVar19[1]);\n      puVar18 = puVar19 + 2;\n      if (puVar16 == puVar19 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar19 = puVar18 + 8;\n      lVar12 = puVar18[1] + __n;\n      memcpy(out + __n,(void *)*puVar18,puVar18[1]);\n      lVar8 = lVar12 + puVar18[3];\n      memcpy(out + lVar12,(void *)puVar18[2],puVar18[3]);\n      lVar12 = lVar8 + puVar18[5];\n      memcpy(out + lVar8,(void *)puVar18[4],puVar18[5]);\n      __n = puVar18[7] + lVar12;\n      memcpy(out + lVar12,(void *)puVar18[6],puVar18[7]);\n      puVar18 = puVar19;\n    } while (puVar16 != puVar19);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar14 = 0;\n  bVar11 = bVar2 & 7;\n  puVar5 = puVar7;\n  if ((bVar2 & 7) == 0) goto LAB_00182b97;\n  if (bVar11 != 1) {\n    puVar6 = puVar7;\n    if (bVar11 != 2) {\n      if (bVar11 != 3) {\n        if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }\n        puVar5 = puVar6 + 1;\n        uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n      }\n      puVar6 = puVar5 + 1;\n      uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n    }\n    puVar5 = puVar6 + 1;\n    uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n  }\n  uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n  puVar5 = puVar5 + 1;\n  while (puVar7 + bVar15 != puVar5) {\nLAB_00182b97:\n    uVar14 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9]);\n    puVar5 = puVar5 + 8;\n  }\n  lVar12 = (ulong)bVar15 + 2 + uVar14;\n  puVar7 = puVar7 + lVar12;\n  *plVar17 = lVar12;\n  plVar17 = plVar17 + 2;\n  goto joined_r0x00182aa4;\n}" primitive_type (function_declarator "der_encode_setof(ltc_asn1_list *list,ulong inlen,uchar *out,ulong *outlen)" identifier (parameter_list "(ltc_asn1_list *list,ulong inlen,uchar *out,ulong *outlen)" ( (parameter_declaration "ltc_asn1_list *list" type_identifier (pointer_declarator "*list" * identifier)) , (parameter_declaration "ulong inlen" type_identifier identifier) , (parameter_declaration "uchar *out" type_identifier (pointer_declarator "*out" * identifier)) , (parameter_declaration "ulong *outlen" type_identifier (pointer_declarator "*outlen" * identifier)) ))) (compound_statement "{\n  ltc_asn1_list *plVar1;\n  byte bVar2;\n  ulong uVar3;\n  int iVar4;\n  uchar *out_00;\n  undefined8 *__base;\n  uchar *puVar5;\n  uchar *puVar6;\n  uchar *puVar7;\n  long lVar8;\n  ltc_asn1_list *plVar9;\n  ltc_asn1_list *plVar10;\n  byte bVar11;\n  long lVar12;\n  uint uVar13;\n  ulong uVar14;\n  byte bVar15;\n  undefined8 *puVar16;\n  long *plVar17;\n  undefined8 *puVar18;\n  undefined8 *puVar19;\n  size_t __n;\n  \n  if (1 < inlen) {\n    if (list->type == list[1].type) {\n      lVar12 = 1;\n      uVar13 = ~(1U - (int)inlen) & 7;\n      plVar10 = list + 1;\n      if (uVar13 != 0) {\n        plVar10 = list + 2;\n        lVar12 = 2;\n        if (list[2].type != list[1].type) {\n          return 0x10;\n        }\n        if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (inlen == lVar12 + 1U) goto LAB_00182a10;\n        if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }\n        if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }\n        if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }\n        if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }\n        if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }\n        if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }\n        if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }\n        lVar12 = lVar12 + 8;\n        plVar9 = plVar10 + 7;\n        plVar1 = plVar10 + 8;\n        plVar10 = plVar10 + 8;\n      } while (plVar1->type == plVar9->type);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  out_00 = (uchar *)calloc(1,*outlen);\n  if (out_00 == (uchar *)0x0) {\n    return 0xd;\n  }\n  iVar4 = der_encode_sequence_ex(list,inlen,out_00,outlen,0xf);\n  if (iVar4 != 0) {\nLAB_00182d53:\n    free(out_00);\n    return iVar4;\n  }\n  __base = (undefined8 *)calloc(inlen,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(out_00);\n    return 0xd;\n  }\n  uVar3 = *outlen;\n  puVar7 = out_00 + 2 + (out_00[1] & 0x7f);\n  if (-1 < (char)out_00[1]) {\n    puVar7 = out_00 + 2;\n  }\n  __n = (long)puVar7 - (long)out_00;\n  plVar17 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar7 < out_00 + uVar3) {\n    do {\n      bVar2 = puVar7[1];\n      plVar17[-1] = (long)puVar7;\n      if ((ulong)bVar2 < 0x80) {\n        lVar12 = (ulong)bVar2 + 2;\n      }\n      else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }\n      puVar7 = puVar7 + lVar12;\n      *plVar17 = lVar12;\n      plVar17 = plVar17 + 2;\n      if (out_00 + uVar3 <= puVar7) break;\n    } while( true );\n  }\n  qsort(__base,inlen,0x10,_qsort_helper);\n  memcpy(out,out_00,__n);\n  puVar16 = __base + inlen * 2;\n  if (inlen != 0) {\n    uVar13 = (int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar18 = __base;\n    if (uVar13 != 0) {\n      puVar19 = __base;\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }\n        puVar7 = out + __n;\n        puVar19 = puVar18 + 2;\n        __n = __n + puVar18[1];\n        memcpy(puVar7,(void *)*puVar18,puVar18[1]);\n      }\n      puVar7 = out + __n;\n      __n = __n + puVar19[1];\n      memcpy(puVar7,(void *)*puVar19,puVar19[1]);\n      puVar18 = puVar19 + 2;\n      if (puVar16 == puVar19 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar19 = puVar18 + 8;\n      lVar12 = puVar18[1] + __n;\n      memcpy(out + __n,(void *)*puVar18,puVar18[1]);\n      lVar8 = lVar12 + puVar18[3];\n      memcpy(out + lVar12,(void *)puVar18[2],puVar18[3]);\n      lVar12 = lVar8 + puVar18[5];\n      memcpy(out + lVar8,(void *)puVar18[4],puVar18[5]);\n      __n = puVar18[7] + lVar12;\n      memcpy(out + lVar12,(void *)puVar18[6],puVar18[7]);\n      puVar18 = puVar19;\n    } while (puVar16 != puVar19);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar14 = 0;\n  bVar11 = bVar2 & 7;\n  puVar5 = puVar7;\n  if ((bVar2 & 7) == 0) goto LAB_00182b97;\n  if (bVar11 != 1) {\n    puVar6 = puVar7;\n    if (bVar11 != 2) {\n      if (bVar11 != 3) {\n        if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }\n        puVar5 = puVar6 + 1;\n        uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n      }\n      puVar6 = puVar5 + 1;\n      uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n    }\n    puVar5 = puVar6 + 1;\n    uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n  }\n  uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n  puVar5 = puVar5 + 1;\n  while (puVar7 + bVar15 != puVar5) {\nLAB_00182b97:\n    uVar14 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9]);\n    puVar5 = puVar5 + 8;\n  }\n  lVar12 = (ulong)bVar15 + 2 + uVar14;\n  puVar7 = puVar7 + lVar12;\n  *plVar17 = lVar12;\n  plVar17 = plVar17 + 2;\n  goto joined_r0x00182aa4;\n}" { (declaration "ltc_asn1_list *plVar1;" type_identifier (pointer_declarator "*plVar1" * identifier) ;) (declaration "byte bVar2;" type_identifier identifier ;) (declaration "ulong uVar3;" type_identifier identifier ;) (declaration "int iVar4;" primitive_type identifier ;) (declaration "uchar *out_00;" type_identifier (pointer_declarator "*out_00" * identifier) ;) (declaration "undefined8 *__base;" type_identifier (pointer_declarator "*__base" * identifier) ;) (declaration "uchar *puVar5;" type_identifier (pointer_declarator "*puVar5" * identifier) ;) (declaration "uchar *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "uchar *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "long lVar8;" (sized_type_specifier "long" long) identifier ;) (declaration "ltc_asn1_list *plVar9;" type_identifier (pointer_declarator "*plVar9" * identifier) ;) (declaration "ltc_asn1_list *plVar10;" type_identifier (pointer_declarator "*plVar10" * identifier) ;) (declaration "byte bVar11;" type_identifier identifier ;) (declaration "long lVar12;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar13;" type_identifier identifier ;) (declaration "ulong uVar14;" type_identifier identifier ;) (declaration "byte bVar15;" type_identifier identifier ;) (declaration "undefined8 *puVar16;" type_identifier (pointer_declarator "*puVar16" * identifier) ;) (declaration "long *plVar17;" (sized_type_specifier "long" long) (pointer_declarator "*plVar17" * identifier) ;) (declaration "undefined8 *puVar18;" type_identifier (pointer_declarator "*puVar18" * identifier) ;) (declaration "undefined8 *puVar19;" type_identifier (pointer_declarator "*puVar19" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (if_statement "if (1 < inlen) {\n    if (list->type == list[1].type) {\n      lVar12 = 1;\n      uVar13 = ~(1U - (int)inlen) & 7;\n      plVar10 = list + 1;\n      if (uVar13 != 0) {\n        plVar10 = list + 2;\n        lVar12 = 2;\n        if (list[2].type != list[1].type) {\n          return 0x10;\n        }\n        if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (inlen == lVar12 + 1U) goto LAB_00182a10;\n        if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }\n        if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }\n        if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }\n        if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }\n        if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }\n        if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }\n        if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }\n        lVar12 = lVar12 + 8;\n        plVar9 = plVar10 + 7;\n        plVar1 = plVar10 + 8;\n        plVar10 = plVar10 + 8;\n      } while (plVar1->type == plVar9->type);\n    }\n    return 0x10;\n  }" if (parenthesized_expression "(1 < inlen)" ( (binary_expression "1 < inlen" number_literal < identifier) )) (compound_statement "{\n    if (list->type == list[1].type) {\n      lVar12 = 1;\n      uVar13 = ~(1U - (int)inlen) & 7;\n      plVar10 = list + 1;\n      if (uVar13 != 0) {\n        plVar10 = list + 2;\n        lVar12 = 2;\n        if (list[2].type != list[1].type) {\n          return 0x10;\n        }\n        if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (inlen == lVar12 + 1U) goto LAB_00182a10;\n        if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }\n        if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }\n        if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }\n        if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }\n        if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }\n        if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }\n        if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }\n        lVar12 = lVar12 + 8;\n        plVar9 = plVar10 + 7;\n        plVar1 = plVar10 + 8;\n        plVar10 = plVar10 + 8;\n      } while (plVar1->type == plVar9->type);\n    }\n    return 0x10;\n  }" { (if_statement "if (list->type == list[1].type) {\n      lVar12 = 1;\n      uVar13 = ~(1U - (int)inlen) & 7;\n      plVar10 = list + 1;\n      if (uVar13 != 0) {\n        plVar10 = list + 2;\n        lVar12 = 2;\n        if (list[2].type != list[1].type) {\n          return 0x10;\n        }\n        if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (inlen == lVar12 + 1U) goto LAB_00182a10;\n        if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }\n        if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }\n        if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }\n        if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }\n        if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }\n        if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }\n        if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }\n        lVar12 = lVar12 + 8;\n        plVar9 = plVar10 + 7;\n        plVar1 = plVar10 + 8;\n        plVar10 = plVar10 + 8;\n      } while (plVar1->type == plVar9->type);\n    }" if (parenthesized_expression "(list->type == list[1].type)" ( (binary_expression "list->type == list[1].type" (field_expression "list->type" identifier -> field_identifier) == (field_expression "list[1].type" (subscript_expression "list[1]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n      lVar12 = 1;\n      uVar13 = ~(1U - (int)inlen) & 7;\n      plVar10 = list + 1;\n      if (uVar13 != 0) {\n        plVar10 = list + 2;\n        lVar12 = 2;\n        if (list[2].type != list[1].type) {\n          return 0x10;\n        }\n        if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (inlen == lVar12 + 1U) goto LAB_00182a10;\n        if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }\n        if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }\n        if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }\n        if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }\n        if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }\n        if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }\n        if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }\n        lVar12 = lVar12 + 8;\n        plVar9 = plVar10 + 7;\n        plVar1 = plVar10 + 8;\n        plVar10 = plVar10 + 8;\n      } while (plVar1->type == plVar9->type);\n    }" { (expression_statement "lVar12 = 1;" (assignment_expression "lVar12 = 1" identifier = number_literal) ;) (expression_statement "uVar13 = ~(1U - (int)inlen) & 7;" (assignment_expression "uVar13 = ~(1U - (int)inlen) & 7" identifier = (binary_expression "~(1U - (int)inlen) & 7" (unary_expression "~(1U - (int)inlen)" ~ (parenthesized_expression "(1U - (int)inlen)" ( (binary_expression "1U - (int)inlen" number_literal - (cast_expression "(int)inlen" ( (type_descriptor "int" primitive_type) ) identifier)) ))) & number_literal)) ;) (expression_statement "plVar10 = list + 1;" (assignment_expression "plVar10 = list + 1" identifier = (binary_expression "list + 1" identifier + number_literal)) ;) (if_statement "if (uVar13 != 0) {\n        plVar10 = list + 2;\n        lVar12 = 2;\n        if (list[2].type != list[1].type) {\n          return 0x10;\n        }\n        if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }\n      }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n        plVar10 = list + 2;\n        lVar12 = 2;\n        if (list[2].type != list[1].type) {\n          return 0x10;\n        }\n        if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }\n      }" { (expression_statement "plVar10 = list + 2;" (assignment_expression "plVar10 = list + 2" identifier = (binary_expression "list + 2" identifier + number_literal)) ;) (expression_statement "lVar12 = 2;" (assignment_expression "lVar12 = 2" identifier = number_literal) ;) (if_statement "if (list[2].type != list[1].type) {\n          return 0x10;\n        }" if (parenthesized_expression "(list[2].type != list[1].type)" ( (binary_expression "list[2].type != list[1].type" (field_expression "list[2].type" (subscript_expression "list[2]" identifier [ number_literal ]) . field_identifier) != (field_expression "list[1].type" (subscript_expression "list[1]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (uVar13 != 1) {\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }" if (parenthesized_expression "(uVar13 != 1)" ( (binary_expression "uVar13 != 1" identifier != number_literal) )) (compound_statement "{\n          plVar9 = plVar10;\n          if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }\n          lVar12 = lVar12 + 1;\n          plVar10 = plVar9 + 1;\n          if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }\n        }" { (expression_statement "plVar9 = plVar10;" (assignment_expression "plVar9 = plVar10" identifier = identifier) ;) (if_statement "if (uVar13 != 2) {\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }" if (parenthesized_expression "(uVar13 != 2)" ( (binary_expression "uVar13 != 2" identifier != number_literal) )) (compound_statement "{\n            if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }\n            plVar9 = plVar10 + 1;\n            lVar12 = lVar12 + 1;\n            if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }\n          }" { (if_statement "if (uVar13 != 3) {\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }" if (parenthesized_expression "(uVar13 != 3)" ( (binary_expression "uVar13 != 3" identifier != number_literal) )) (compound_statement "{\n              if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }\n              plVar10 = plVar9 + 1;\n              lVar12 = lVar12 + 1;\n              if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }\n            }" { (if_statement "if (uVar13 != 4) {\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }" if (parenthesized_expression "(uVar13 != 4)" ( (binary_expression "uVar13 != 4" identifier != number_literal) )) (compound_statement "{\n                if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }\n                plVar9 = plVar10 + 1;\n                lVar12 = lVar12 + 1;\n                if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }\n              }" { (if_statement "if (uVar13 != 5) {\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }" if (parenthesized_expression "(uVar13 != 5)" ( (binary_expression "uVar13 != 5" identifier != number_literal) )) (compound_statement "{\n                  if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }\n                  plVar10 = plVar9 + 1;\n                  lVar12 = lVar12 + 1;\n                  if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }\n                }" { (if_statement "if (uVar13 != 6) {\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }" if (parenthesized_expression "(uVar13 != 6)" ( (binary_expression "uVar13 != 6" identifier != number_literal) )) (compound_statement "{\n                    plVar9 = list + 3;\n                    lVar12 = 3;\n                    if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }\n                  }" { (expression_statement "plVar9 = list + 3;" (assignment_expression "plVar9 = list + 3" identifier = (binary_expression "list + 3" identifier + number_literal)) ;) (expression_statement "lVar12 = 3;" (assignment_expression "lVar12 = 3" identifier = number_literal) ;) (if_statement "if (list[3].type != plVar10->type) {\n                      return 0x10;\n                    }" if (parenthesized_expression "(list[3].type != plVar10->type)" ( (binary_expression "list[3].type != plVar10->type" (field_expression "list[3].type" (subscript_expression "list[3]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10->type" identifier -> field_identifier)) )) (compound_statement "{\n                      return 0x10;\n                    }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "plVar10 = plVar9 + 1;" (assignment_expression "plVar10 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) (if_statement "if (plVar9[1].type != plVar9->type) {\n                    return 0x10;\n                  }" if (parenthesized_expression "(plVar9[1].type != plVar9->type)" ( (binary_expression "plVar9[1].type != plVar9->type" (field_expression "plVar9[1].type" (subscript_expression "plVar9[1]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar9->type" identifier -> field_identifier)) )) (compound_statement "{\n                    return 0x10;\n                  }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "plVar9 = plVar10 + 1;" (assignment_expression "plVar9 = plVar10 + 1" identifier = (binary_expression "plVar10 + 1" identifier + number_literal)) ;) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) (if_statement "if (plVar10[1].type != plVar10->type) {\n                  return 0x10;\n                }" if (parenthesized_expression "(plVar10[1].type != plVar10->type)" ( (binary_expression "plVar10[1].type != plVar10->type" (field_expression "plVar10[1].type" (subscript_expression "plVar10[1]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10->type" identifier -> field_identifier)) )) (compound_statement "{\n                  return 0x10;\n                }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "plVar10 = plVar9 + 1;" (assignment_expression "plVar10 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) (if_statement "if (plVar9[1].type != plVar9->type) {\n                return 0x10;\n              }" if (parenthesized_expression "(plVar9[1].type != plVar9->type)" ( (binary_expression "plVar9[1].type != plVar9->type" (field_expression "plVar9[1].type" (subscript_expression "plVar9[1]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar9->type" identifier -> field_identifier)) )) (compound_statement "{\n                return 0x10;\n              }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "plVar9 = plVar10 + 1;" (assignment_expression "plVar9 = plVar10 + 1" identifier = (binary_expression "plVar10 + 1" identifier + number_literal)) ;) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) (if_statement "if (plVar10[1].type != plVar10->type) {\n              return 0x10;\n            }" if (parenthesized_expression "(plVar10[1].type != plVar10->type)" ( (binary_expression "plVar10[1].type != plVar10->type" (field_expression "plVar10[1].type" (subscript_expression "plVar10[1]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10->type" identifier -> field_identifier)) )) (compound_statement "{\n              return 0x10;\n            }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "lVar12 = lVar12 + 1;" (assignment_expression "lVar12 = lVar12 + 1" identifier = (binary_expression "lVar12 + 1" identifier + number_literal)) ;) (expression_statement "plVar10 = plVar9 + 1;" (assignment_expression "plVar10 = plVar9 + 1" identifier = (binary_expression "plVar9 + 1" identifier + number_literal)) ;) (if_statement "if (plVar9[1].type != plVar9->type) {\n            return 0x10;\n          }" if (parenthesized_expression "(plVar9[1].type != plVar9->type)" ( (binary_expression "plVar9[1].type != plVar9->type" (field_expression "plVar9[1].type" (subscript_expression "plVar9[1]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar9->type" identifier -> field_identifier)) )) (compound_statement "{\n            return 0x10;\n          }" { (return_statement "return 0x10;" return number_literal ;) })) })) })) (do_statement "do {\n        if (inlen == lVar12 + 1U) goto LAB_00182a10;\n        if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }\n        if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }\n        if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }\n        if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }\n        if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }\n        if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }\n        if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }\n        lVar12 = lVar12 + 8;\n        plVar9 = plVar10 + 7;\n        plVar1 = plVar10 + 8;\n        plVar10 = plVar10 + 8;\n      } while (plVar1->type == plVar9->type);" do (compound_statement "{\n        if (inlen == lVar12 + 1U) goto LAB_00182a10;\n        if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }\n        if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }\n        if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }\n        if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }\n        if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }\n        if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }\n        if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }\n        lVar12 = lVar12 + 8;\n        plVar9 = plVar10 + 7;\n        plVar1 = plVar10 + 8;\n        plVar10 = plVar10 + 8;\n      }" { (if_statement "if (inlen == lVar12 + 1U) goto LAB_00182a10;" if (parenthesized_expression "(inlen == lVar12 + 1U)" ( (binary_expression "inlen == lVar12 + 1U" identifier == (binary_expression "lVar12 + 1U" identifier + number_literal)) )) (goto_statement "goto LAB_00182a10;" goto statement_identifier ;)) (if_statement "if (plVar10[1].type != plVar10->type) {\n          return 0x10;\n        }" if (parenthesized_expression "(plVar10[1].type != plVar10->type)" ( (binary_expression "plVar10[1].type != plVar10->type" (field_expression "plVar10[1].type" (subscript_expression "plVar10[1]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10->type" identifier -> field_identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (plVar10[2].type != plVar10[1].type) {\n          return 0x10;\n        }" if (parenthesized_expression "(plVar10[2].type != plVar10[1].type)" ( (binary_expression "plVar10[2].type != plVar10[1].type" (field_expression "plVar10[2].type" (subscript_expression "plVar10[2]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10[1].type" (subscript_expression "plVar10[1]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (plVar10[3].type != plVar10[2].type) {\n          return 0x10;\n        }" if (parenthesized_expression "(plVar10[3].type != plVar10[2].type)" ( (binary_expression "plVar10[3].type != plVar10[2].type" (field_expression "plVar10[3].type" (subscript_expression "plVar10[3]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10[2].type" (subscript_expression "plVar10[2]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (plVar10[4].type != plVar10[3].type) {\n          return 0x10;\n        }" if (parenthesized_expression "(plVar10[4].type != plVar10[3].type)" ( (binary_expression "plVar10[4].type != plVar10[3].type" (field_expression "plVar10[4].type" (subscript_expression "plVar10[4]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10[3].type" (subscript_expression "plVar10[3]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (plVar10[5].type != plVar10[4].type) {\n          return 0x10;\n        }" if (parenthesized_expression "(plVar10[5].type != plVar10[4].type)" ( (binary_expression "plVar10[5].type != plVar10[4].type" (field_expression "plVar10[5].type" (subscript_expression "plVar10[5]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10[4].type" (subscript_expression "plVar10[4]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (plVar10[6].type != plVar10[5].type) {\n          return 0x10;\n        }" if (parenthesized_expression "(plVar10[6].type != plVar10[5].type)" ( (binary_expression "plVar10[6].type != plVar10[5].type" (field_expression "plVar10[6].type" (subscript_expression "plVar10[6]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10[5].type" (subscript_expression "plVar10[5]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (plVar10[7].type != plVar10[6].type) {\n          return 0x10;\n        }" if (parenthesized_expression "(plVar10[7].type != plVar10[6].type)" ( (binary_expression "plVar10[7].type != plVar10[6].type" (field_expression "plVar10[7].type" (subscript_expression "plVar10[7]" identifier [ number_literal ]) . field_identifier) != (field_expression "plVar10[6].type" (subscript_expression "plVar10[6]" identifier [ number_literal ]) . field_identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "lVar12 = lVar12 + 8;" (assignment_expression "lVar12 = lVar12 + 8" identifier = (binary_expression "lVar12 + 8" identifier + number_literal)) ;) (expression_statement "plVar9 = plVar10 + 7;" (assignment_expression "plVar9 = plVar10 + 7" identifier = (binary_expression "plVar10 + 7" identifier + number_literal)) ;) (expression_statement "plVar1 = plVar10 + 8;" (assignment_expression "plVar1 = plVar10 + 8" identifier = (binary_expression "plVar10 + 8" identifier + number_literal)) ;) (expression_statement "plVar10 = plVar10 + 8;" (assignment_expression "plVar10 = plVar10 + 8" identifier = (binary_expression "plVar10 + 8" identifier + number_literal)) ;) }) while (parenthesized_expression "(plVar1->type == plVar9->type)" ( (binary_expression "plVar1->type == plVar9->type" (field_expression "plVar1->type" identifier -> field_identifier) == (field_expression "plVar9->type" identifier -> field_identifier)) )) ;) })) (return_statement "return 0x10;" return number_literal ;) })) (labeled_statement "LAB_00182a10:\n  out_00 = (uchar *)calloc(1,*outlen);" statement_identifier : (expression_statement "out_00 = (uchar *)calloc(1,*outlen);" (assignment_expression "out_00 = (uchar *)calloc(1,*outlen)" identifier = (cast_expression "(uchar *)calloc(1,*outlen)" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(1,*outlen)" identifier (argument_list "(1,*outlen)" ( number_literal , (pointer_expression "*outlen" * identifier) ))))) ;)) (if_statement "if (out_00 == (uchar *)0x0) {\n    return 0xd;\n  }" if (parenthesized_expression "(out_00 == (uchar *)0x0)" ( (binary_expression "out_00 == (uchar *)0x0" identifier == (cast_expression "(uchar *)0x0" ( (type_descriptor "uchar *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0xd;\n  }" { (return_statement "return 0xd;" return number_literal ;) })) (expression_statement "iVar4 = der_encode_sequence_ex(list,inlen,out_00,outlen,0xf);" (assignment_expression "iVar4 = der_encode_sequence_ex(list,inlen,out_00,outlen,0xf)" identifier = (call_expression "der_encode_sequence_ex(list,inlen,out_00,outlen,0xf)" identifier (argument_list "(list,inlen,out_00,outlen,0xf)" ( identifier , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar4 != 0) {\nLAB_00182d53:\n    free(out_00);\n    return iVar4;\n  }" if (parenthesized_expression "(iVar4 != 0)" ( (binary_expression "iVar4 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00182d53:\n    free(out_00);\n    return iVar4;\n  }" { (labeled_statement "LAB_00182d53:\n    free(out_00);" statement_identifier : (expression_statement "free(out_00);" (call_expression "free(out_00)" identifier (argument_list "(out_00)" ( identifier ))) ;)) (return_statement "return iVar4;" return identifier ;) })) (expression_statement "__base = (undefined8 *)calloc(inlen,0x10);" (assignment_expression "__base = (undefined8 *)calloc(inlen,0x10)" identifier = (cast_expression "(undefined8 *)calloc(inlen,0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(inlen,0x10)" identifier (argument_list "(inlen,0x10)" ( identifier , number_literal ))))) ;) (if_statement "if (__base == (undefined8 *)0x0) {\n    free(out_00);\n    return 0xd;\n  }" if (parenthesized_expression "(__base == (undefined8 *)0x0)" ( (binary_expression "__base == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(out_00);\n    return 0xd;\n  }" { (expression_statement "free(out_00);" (call_expression "free(out_00)" identifier (argument_list "(out_00)" ( identifier ))) ;) (return_statement "return 0xd;" return number_literal ;) })) (expression_statement "uVar3 = *outlen;" (assignment_expression "uVar3 = *outlen" identifier = (pointer_expression "*outlen" * identifier)) ;) (expression_statement "puVar7 = out_00 + 2 + (out_00[1] & 0x7f);" (assignment_expression "puVar7 = out_00 + 2 + (out_00[1] & 0x7f)" identifier = (binary_expression "out_00 + 2 + (out_00[1] & 0x7f)" (binary_expression "out_00 + 2" identifier + number_literal) + (parenthesized_expression "(out_00[1] & 0x7f)" ( (binary_expression "out_00[1] & 0x7f" (subscript_expression "out_00[1]" identifier [ number_literal ]) & number_literal) )))) ;) (if_statement "if (-1 < (char)out_00[1]) {\n    puVar7 = out_00 + 2;\n  }" if (parenthesized_expression "(-1 < (char)out_00[1])" ( (binary_expression "-1 < (char)out_00[1]" number_literal < (cast_expression "(char)out_00[1]" ( (type_descriptor "char" primitive_type) ) (subscript_expression "out_00[1]" identifier [ number_literal ]))) )) (compound_statement "{\n    puVar7 = out_00 + 2;\n  }" { (expression_statement "puVar7 = out_00 + 2;" (assignment_expression "puVar7 = out_00 + 2" identifier = (binary_expression "out_00 + 2" identifier + number_literal)) ;) })) (expression_statement "__n = (long)puVar7 - (long)out_00;" (assignment_expression "__n = (long)puVar7 - (long)out_00" identifier = (binary_expression "(long)puVar7 - (long)out_00" (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)out_00" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "plVar17 = __base + 1;" (assignment_expression "plVar17 = __base + 1" identifier = (binary_expression "__base + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00182aa4:\n  if (puVar7 < out_00 + uVar3) {\n    do {\n      bVar2 = puVar7[1];\n      plVar17[-1] = (long)puVar7;\n      if ((ulong)bVar2 < 0x80) {\n        lVar12 = (ulong)bVar2 + 2;\n      }\n      else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }\n      puVar7 = puVar7 + lVar12;\n      *plVar17 = lVar12;\n      plVar17 = plVar17 + 2;\n      if (out_00 + uVar3 <= puVar7) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (puVar7 < out_00 + uVar3) {\n    do {\n      bVar2 = puVar7[1];\n      plVar17[-1] = (long)puVar7;\n      if ((ulong)bVar2 < 0x80) {\n        lVar12 = (ulong)bVar2 + 2;\n      }\n      else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }\n      puVar7 = puVar7 + lVar12;\n      *plVar17 = lVar12;\n      plVar17 = plVar17 + 2;\n      if (out_00 + uVar3 <= puVar7) break;\n    } while( true );\n  }" if (parenthesized_expression "(puVar7 < out_00 + uVar3)" ( (binary_expression "puVar7 < out_00 + uVar3" identifier < (binary_expression "out_00 + uVar3" identifier + identifier)) )) (compound_statement "{\n    do {\n      bVar2 = puVar7[1];\n      plVar17[-1] = (long)puVar7;\n      if ((ulong)bVar2 < 0x80) {\n        lVar12 = (ulong)bVar2 + 2;\n      }\n      else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }\n      puVar7 = puVar7 + lVar12;\n      *plVar17 = lVar12;\n      plVar17 = plVar17 + 2;\n      if (out_00 + uVar3 <= puVar7) break;\n    } while( true );\n  }" { (do_statement "do {\n      bVar2 = puVar7[1];\n      plVar17[-1] = (long)puVar7;\n      if ((ulong)bVar2 < 0x80) {\n        lVar12 = (ulong)bVar2 + 2;\n      }\n      else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }\n      puVar7 = puVar7 + lVar12;\n      *plVar17 = lVar12;\n      plVar17 = plVar17 + 2;\n      if (out_00 + uVar3 <= puVar7) break;\n    } while( true );" do (compound_statement "{\n      bVar2 = puVar7[1];\n      plVar17[-1] = (long)puVar7;\n      if ((ulong)bVar2 < 0x80) {\n        lVar12 = (ulong)bVar2 + 2;\n      }\n      else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }\n      puVar7 = puVar7 + lVar12;\n      *plVar17 = lVar12;\n      plVar17 = plVar17 + 2;\n      if (out_00 + uVar3 <= puVar7) break;\n    }" { (expression_statement "bVar2 = puVar7[1];" (assignment_expression "bVar2 = puVar7[1]" identifier = (subscript_expression "puVar7[1]" identifier [ number_literal ])) ;) (expression_statement "plVar17[-1] = (long)puVar7;" (assignment_expression "plVar17[-1] = (long)puVar7" (subscript_expression "plVar17[-1]" identifier [ number_literal ]) = (cast_expression "(long)puVar7" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if ((ulong)bVar2 < 0x80) {\n        lVar12 = (ulong)bVar2 + 2;\n      }\n      else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }" if (parenthesized_expression "((ulong)bVar2 < 0x80)" ( (binary_expression "(ulong)bVar2 < 0x80" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        lVar12 = (ulong)bVar2 + 2;\n      }" { (expression_statement "lVar12 = (ulong)bVar2 + 2;" (assignment_expression "lVar12 = (ulong)bVar2 + 2" identifier = (binary_expression "(ulong)bVar2 + 2" (cast_expression "(ulong)bVar2" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal)) ;) }) (else_clause "else {\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }" else (compound_statement "{\n        bVar15 = bVar2 & 0x7f;\n        *plVar17 = 0;\n        if (bVar15 != 0) goto code_r0x00182af3;\n        lVar12 = 2;\n      }" { (expression_statement "bVar15 = bVar2 & 0x7f;" (assignment_expression "bVar15 = bVar2 & 0x7f" identifier = (binary_expression "bVar2 & 0x7f" identifier & number_literal)) ;) (expression_statement "*plVar17 = 0;" (assignment_expression "*plVar17 = 0" (pointer_expression "*plVar17" * identifier) = number_literal) ;) (if_statement "if (bVar15 != 0) goto code_r0x00182af3;" if (parenthesized_expression "(bVar15 != 0)" ( (binary_expression "bVar15 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00182af3;" goto statement_identifier ;)) (expression_statement "lVar12 = 2;" (assignment_expression "lVar12 = 2" identifier = number_literal) ;) }))) (expression_statement "puVar7 = puVar7 + lVar12;" (assignment_expression "puVar7 = puVar7 + lVar12" identifier = (binary_expression "puVar7 + lVar12" identifier + identifier)) ;) (expression_statement "*plVar17 = lVar12;" (assignment_expression "*plVar17 = lVar12" (pointer_expression "*plVar17" * identifier) = identifier) ;) (expression_statement "plVar17 = plVar17 + 2;" (assignment_expression "plVar17 = plVar17 + 2" identifier = (binary_expression "plVar17 + 2" identifier + number_literal)) ;) (if_statement "if (out_00 + uVar3 <= puVar7) break;" if (parenthesized_expression "(out_00 + uVar3 <= puVar7)" ( (binary_expression "out_00 + uVar3 <= puVar7" (binary_expression "out_00 + uVar3" identifier + identifier) <= identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "qsort(__base,inlen,0x10,_qsort_helper);" (call_expression "qsort(__base,inlen,0x10,_qsort_helper)" identifier (argument_list "(__base,inlen,0x10,_qsort_helper)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "memcpy(out,out_00,__n);" (call_expression "memcpy(out,out_00,__n)" identifier (argument_list "(out,out_00,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar16 = __base + inlen * 2;" (assignment_expression "puVar16 = __base + inlen * 2" identifier = (binary_expression "__base + inlen * 2" identifier + (binary_expression "inlen * 2" identifier * number_literal))) ;) (if_statement "if (inlen != 0) {\n    uVar13 = (int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar18 = __base;\n    if (uVar13 != 0) {\n      puVar19 = __base;\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }\n        puVar7 = out + __n;\n        puVar19 = puVar18 + 2;\n        __n = __n + puVar18[1];\n        memcpy(puVar7,(void *)*puVar18,puVar18[1]);\n      }\n      puVar7 = out + __n;\n      __n = __n + puVar19[1];\n      memcpy(puVar7,(void *)*puVar19,puVar19[1]);\n      puVar18 = puVar19 + 2;\n      if (puVar16 == puVar19 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar19 = puVar18 + 8;\n      lVar12 = puVar18[1] + __n;\n      memcpy(out + __n,(void *)*puVar18,puVar18[1]);\n      lVar8 = lVar12 + puVar18[3];\n      memcpy(out + lVar12,(void *)puVar18[2],puVar18[3]);\n      lVar12 = lVar8 + puVar18[5];\n      memcpy(out + lVar8,(void *)puVar18[4],puVar18[5]);\n      __n = puVar18[7] + lVar12;\n      memcpy(out + lVar12,(void *)puVar18[6],puVar18[7]);\n      puVar18 = puVar19;\n    } while (puVar16 != puVar19);\n  }" if (parenthesized_expression "(inlen != 0)" ( (binary_expression "inlen != 0" identifier != number_literal) )) (compound_statement "{\n    uVar13 = (int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar18 = __base;\n    if (uVar13 != 0) {\n      puVar19 = __base;\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }\n        puVar7 = out + __n;\n        puVar19 = puVar18 + 2;\n        __n = __n + puVar18[1];\n        memcpy(puVar7,(void *)*puVar18,puVar18[1]);\n      }\n      puVar7 = out + __n;\n      __n = __n + puVar19[1];\n      memcpy(puVar7,(void *)*puVar19,puVar19[1]);\n      puVar18 = puVar19 + 2;\n      if (puVar16 == puVar19 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar19 = puVar18 + 8;\n      lVar12 = puVar18[1] + __n;\n      memcpy(out + __n,(void *)*puVar18,puVar18[1]);\n      lVar8 = lVar12 + puVar18[3];\n      memcpy(out + lVar12,(void *)puVar18[2],puVar18[3]);\n      lVar12 = lVar8 + puVar18[5];\n      memcpy(out + lVar8,(void *)puVar18[4],puVar18[5]);\n      __n = puVar18[7] + lVar12;\n      memcpy(out + lVar12,(void *)puVar18[6],puVar18[7]);\n      puVar18 = puVar19;\n    } while (puVar16 != puVar19);\n  }" { (expression_statement "uVar13 = (int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U & 3;" (assignment_expression "uVar13 = (int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U & 3" identifier = (binary_expression "(int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U & 3" (binary_expression "(int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4) + 1U" (cast_expression "(int)((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4)" ( (binary_expression "(ulong)((long)puVar16 + (-0x10 - (long)__base)) >> 4" (call_expression "(ulong)((long)puVar16 + (-0x10 - (long)__base))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)puVar16 + (-0x10 - (long)__base))" ( (binary_expression "(long)puVar16 + (-0x10 - (long)__base)" (cast_expression "(long)puVar16" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x10 - (long)__base)" ( (binary_expression "-0x10 - (long)__base" number_literal - (cast_expression "(long)__base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) >> number_literal) ))) + number_literal) & number_literal)) ;) (expression_statement "puVar18 = __base;" (assignment_expression "puVar18 = __base" identifier = identifier) ;) (if_statement "if (uVar13 != 0) {\n      puVar19 = __base;\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }\n        puVar7 = out + __n;\n        puVar19 = puVar18 + 2;\n        __n = __n + puVar18[1];\n        memcpy(puVar7,(void *)*puVar18,puVar18[1]);\n      }\n      puVar7 = out + __n;\n      __n = __n + puVar19[1];\n      memcpy(puVar7,(void *)*puVar19,puVar19[1]);\n      puVar18 = puVar19 + 2;\n      if (puVar16 == puVar19 + 2) goto LAB_00182d4a;\n    }" if (parenthesized_expression "(uVar13 != 0)" ( (binary_expression "uVar13 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar19 = __base;\n      if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }\n        puVar7 = out + __n;\n        puVar19 = puVar18 + 2;\n        __n = __n + puVar18[1];\n        memcpy(puVar7,(void *)*puVar18,puVar18[1]);\n      }\n      puVar7 = out + __n;\n      __n = __n + puVar19[1];\n      memcpy(puVar7,(void *)*puVar19,puVar19[1]);\n      puVar18 = puVar19 + 2;\n      if (puVar16 == puVar19 + 2) goto LAB_00182d4a;\n    }" { (expression_statement "puVar19 = __base;" (assignment_expression "puVar19 = __base" identifier = identifier) ;) (if_statement "if (uVar13 != 1) {\n        if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }\n        puVar7 = out + __n;\n        puVar19 = puVar18 + 2;\n        __n = __n + puVar18[1];\n        memcpy(puVar7,(void *)*puVar18,puVar18[1]);\n      }" if (parenthesized_expression "(uVar13 != 1)" ( (binary_expression "uVar13 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }\n        puVar7 = out + __n;\n        puVar19 = puVar18 + 2;\n        __n = __n + puVar18[1];\n        memcpy(puVar7,(void *)*puVar18,puVar18[1]);\n      }" { (if_statement "if (uVar13 != 2) {\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }" if (parenthesized_expression "(uVar13 != 2)" ( (binary_expression "uVar13 != 2" identifier != number_literal) )) (compound_statement "{\n          puVar7 = out + __n;\n          puVar18 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(puVar7,(void *)*__base,__base[1]);\n        }" { (expression_statement "puVar7 = out + __n;" (assignment_expression "puVar7 = out + __n" identifier = (binary_expression "out + __n" identifier + identifier)) ;) (expression_statement "puVar18 = __base + 2;" (assignment_expression "puVar18 = __base + 2" identifier = (binary_expression "__base + 2" identifier + number_literal)) ;) (expression_statement "__n = __n + __base[1];" (assignment_expression "__n = __n + __base[1]" identifier = (binary_expression "__n + __base[1]" identifier + (subscript_expression "__base[1]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(puVar7,(void *)*__base,__base[1]);" (call_expression "memcpy(puVar7,(void *)*__base,__base[1])" identifier (argument_list "(puVar7,(void *)*__base,__base[1])" ( identifier , (cast_expression "(void *)*__base" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*__base" * identifier)) , (subscript_expression "__base[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "puVar7 = out + __n;" (assignment_expression "puVar7 = out + __n" identifier = (binary_expression "out + __n" identifier + identifier)) ;) (expression_statement "puVar19 = puVar18 + 2;" (assignment_expression "puVar19 = puVar18 + 2" identifier = (binary_expression "puVar18 + 2" identifier + number_literal)) ;) (expression_statement "__n = __n + puVar18[1];" (assignment_expression "__n = __n + puVar18[1]" identifier = (binary_expression "__n + puVar18[1]" identifier + (subscript_expression "puVar18[1]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(puVar7,(void *)*puVar18,puVar18[1]);" (call_expression "memcpy(puVar7,(void *)*puVar18,puVar18[1])" identifier (argument_list "(puVar7,(void *)*puVar18,puVar18[1])" ( identifier , (cast_expression "(void *)*puVar18" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier)) , (subscript_expression "puVar18[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "puVar7 = out + __n;" (assignment_expression "puVar7 = out + __n" identifier = (binary_expression "out + __n" identifier + identifier)) ;) (expression_statement "__n = __n + puVar19[1];" (assignment_expression "__n = __n + puVar19[1]" identifier = (binary_expression "__n + puVar19[1]" identifier + (subscript_expression "puVar19[1]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(puVar7,(void *)*puVar19,puVar19[1]);" (call_expression "memcpy(puVar7,(void *)*puVar19,puVar19[1])" identifier (argument_list "(puVar7,(void *)*puVar19,puVar19[1])" ( identifier , (cast_expression "(void *)*puVar19" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier)) , (subscript_expression "puVar19[1]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar18 = puVar19 + 2;" (assignment_expression "puVar18 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (if_statement "if (puVar16 == puVar19 + 2) goto LAB_00182d4a;" if (parenthesized_expression "(puVar16 == puVar19 + 2)" ( (binary_expression "puVar16 == puVar19 + 2" identifier == (binary_expression "puVar19 + 2" identifier + number_literal)) )) (goto_statement "goto LAB_00182d4a;" goto statement_identifier ;)) })) (do_statement "do {\n      puVar19 = puVar18 + 8;\n      lVar12 = puVar18[1] + __n;\n      memcpy(out + __n,(void *)*puVar18,puVar18[1]);\n      lVar8 = lVar12 + puVar18[3];\n      memcpy(out + lVar12,(void *)puVar18[2],puVar18[3]);\n      lVar12 = lVar8 + puVar18[5];\n      memcpy(out + lVar8,(void *)puVar18[4],puVar18[5]);\n      __n = puVar18[7] + lVar12;\n      memcpy(out + lVar12,(void *)puVar18[6],puVar18[7]);\n      puVar18 = puVar19;\n    } while (puVar16 != puVar19);" do (compound_statement "{\n      puVar19 = puVar18 + 8;\n      lVar12 = puVar18[1] + __n;\n      memcpy(out + __n,(void *)*puVar18,puVar18[1]);\n      lVar8 = lVar12 + puVar18[3];\n      memcpy(out + lVar12,(void *)puVar18[2],puVar18[3]);\n      lVar12 = lVar8 + puVar18[5];\n      memcpy(out + lVar8,(void *)puVar18[4],puVar18[5]);\n      __n = puVar18[7] + lVar12;\n      memcpy(out + lVar12,(void *)puVar18[6],puVar18[7]);\n      puVar18 = puVar19;\n    }" { (expression_statement "puVar19 = puVar18 + 8;" (assignment_expression "puVar19 = puVar18 + 8" identifier = (binary_expression "puVar18 + 8" identifier + number_literal)) ;) (expression_statement "lVar12 = puVar18[1] + __n;" (assignment_expression "lVar12 = puVar18[1] + __n" identifier = (binary_expression "puVar18[1] + __n" (subscript_expression "puVar18[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "memcpy(out + __n,(void *)*puVar18,puVar18[1]);" (call_expression "memcpy(out + __n,(void *)*puVar18,puVar18[1])" identifier (argument_list "(out + __n,(void *)*puVar18,puVar18[1])" ( (binary_expression "out + __n" identifier + identifier) , (cast_expression "(void *)*puVar18" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar18" * identifier)) , (subscript_expression "puVar18[1]" identifier [ number_literal ]) ))) ;) (expression_statement "lVar8 = lVar12 + puVar18[3];" (assignment_expression "lVar8 = lVar12 + puVar18[3]" identifier = (binary_expression "lVar12 + puVar18[3]" identifier + (subscript_expression "puVar18[3]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(out + lVar12,(void *)puVar18[2],puVar18[3]);" (call_expression "memcpy(out + lVar12,(void *)puVar18[2],puVar18[3])" identifier (argument_list "(out + lVar12,(void *)puVar18[2],puVar18[3])" ( (binary_expression "out + lVar12" identifier + identifier) , (cast_expression "(void *)puVar18[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar18[2]" identifier [ number_literal ])) , (subscript_expression "puVar18[3]" identifier [ number_literal ]) ))) ;) (expression_statement "lVar12 = lVar8 + puVar18[5];" (assignment_expression "lVar12 = lVar8 + puVar18[5]" identifier = (binary_expression "lVar8 + puVar18[5]" identifier + (subscript_expression "puVar18[5]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(out + lVar8,(void *)puVar18[4],puVar18[5]);" (call_expression "memcpy(out + lVar8,(void *)puVar18[4],puVar18[5])" identifier (argument_list "(out + lVar8,(void *)puVar18[4],puVar18[5])" ( (binary_expression "out + lVar8" identifier + identifier) , (cast_expression "(void *)puVar18[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar18[4]" identifier [ number_literal ])) , (subscript_expression "puVar18[5]" identifier [ number_literal ]) ))) ;) (expression_statement "__n = puVar18[7] + lVar12;" (assignment_expression "__n = puVar18[7] + lVar12" identifier = (binary_expression "puVar18[7] + lVar12" (subscript_expression "puVar18[7]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "memcpy(out + lVar12,(void *)puVar18[6],puVar18[7]);" (call_expression "memcpy(out + lVar12,(void *)puVar18[6],puVar18[7])" identifier (argument_list "(out + lVar12,(void *)puVar18[6],puVar18[7])" ( (binary_expression "out + lVar12" identifier + identifier) , (cast_expression "(void *)puVar18[6]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar18[6]" identifier [ number_literal ])) , (subscript_expression "puVar18[7]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar18 = puVar19;" (assignment_expression "puVar18 = puVar19" identifier = identifier) ;) }) while (parenthesized_expression "(puVar16 != puVar19)" ( (binary_expression "puVar16 != puVar19" identifier != identifier) )) ;) })) (labeled_statement "LAB_00182d4a:\n  free(__base);" statement_identifier : (expression_statement "free(__base);" (call_expression "free(__base)" identifier (argument_list "(__base)" ( identifier ))) ;)) (goto_statement "goto LAB_00182d53;" goto statement_identifier ;) (labeled_statement "code_r0x00182af3:\n  uVar14 = 0;" statement_identifier : (expression_statement "uVar14 = 0;" (assignment_expression "uVar14 = 0" identifier = number_literal) ;)) (expression_statement "bVar11 = bVar2 & 7;" (assignment_expression "bVar11 = bVar2 & 7" identifier = (binary_expression "bVar2 & 7" identifier & number_literal)) ;) (expression_statement "puVar5 = puVar7;" (assignment_expression "puVar5 = puVar7" identifier = identifier) ;) (if_statement "if ((bVar2 & 7) == 0) goto LAB_00182b97;" if (parenthesized_expression "((bVar2 & 7) == 0)" ( (binary_expression "(bVar2 & 7) == 0" (parenthesized_expression "(bVar2 & 7)" ( (binary_expression "bVar2 & 7" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00182b97;" goto statement_identifier ;)) (if_statement "if (bVar11 != 1) {\n    puVar6 = puVar7;\n    if (bVar11 != 2) {\n      if (bVar11 != 3) {\n        if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }\n        puVar5 = puVar6 + 1;\n        uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n      }\n      puVar6 = puVar5 + 1;\n      uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n    }\n    puVar5 = puVar6 + 1;\n    uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n  }" if (parenthesized_expression "(bVar11 != 1)" ( (binary_expression "bVar11 != 1" identifier != number_literal) )) (compound_statement "{\n    puVar6 = puVar7;\n    if (bVar11 != 2) {\n      if (bVar11 != 3) {\n        if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }\n        puVar5 = puVar6 + 1;\n        uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n      }\n      puVar6 = puVar5 + 1;\n      uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n    }\n    puVar5 = puVar6 + 1;\n    uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n  }" { (expression_statement "puVar6 = puVar7;" (assignment_expression "puVar6 = puVar7" identifier = identifier) ;) (if_statement "if (bVar11 != 2) {\n      if (bVar11 != 3) {\n        if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }\n        puVar5 = puVar6 + 1;\n        uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n      }\n      puVar6 = puVar5 + 1;\n      uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n    }" if (parenthesized_expression "(bVar11 != 2)" ( (binary_expression "bVar11 != 2" identifier != number_literal) )) (compound_statement "{\n      if (bVar11 != 3) {\n        if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }\n        puVar5 = puVar6 + 1;\n        uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n      }\n      puVar6 = puVar5 + 1;\n      uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n    }" { (if_statement "if (bVar11 != 3) {\n        if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }\n        puVar5 = puVar6 + 1;\n        uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n      }" if (parenthesized_expression "(bVar11 != 3)" ( (binary_expression "bVar11 != 3" identifier != number_literal) )) (compound_statement "{\n        if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }\n        puVar5 = puVar6 + 1;\n        uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n      }" { (if_statement "if (bVar11 != 4) {\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }" if (parenthesized_expression "(bVar11 != 4)" ( (binary_expression "bVar11 != 4" identifier != number_literal) )) (compound_statement "{\n          if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }\n          puVar6 = puVar5 + 1;\n          uVar14 = uVar14 << 8 | (ulong)puVar5[2];\n        }" { (if_statement "if (bVar11 != 5) {\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }" if (parenthesized_expression "(bVar11 != 5)" ( (binary_expression "bVar11 != 5" identifier != number_literal) )) (compound_statement "{\n            if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }\n            puVar5 = puVar6 + 1;\n            uVar14 = uVar14 << 8 | (ulong)puVar6[2];\n          }" { (if_statement "if (bVar11 != 6) {\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }" if (parenthesized_expression "(bVar11 != 6)" ( (binary_expression "bVar11 != 6" identifier != number_literal) )) (compound_statement "{\n              uVar14 = (ulong)puVar7[2];\n              puVar6 = puVar7 + 1;\n            }" { (expression_statement "uVar14 = (ulong)puVar7[2];" (assignment_expression "uVar14 = (ulong)puVar7[2]" identifier = (cast_expression "(ulong)puVar7[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))) ;) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar5 = puVar6 + 1;" (assignment_expression "puVar5 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 << 8 | (ulong)puVar6[2];" (assignment_expression "uVar14 = uVar14 << 8 | (ulong)puVar6[2]" identifier = (binary_expression "uVar14 << 8 | (ulong)puVar6[2]" (binary_expression "uVar14 << 8" identifier << number_literal) | (cast_expression "(ulong)puVar6[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar6[2]" identifier [ number_literal ])))) ;) })) (expression_statement "puVar6 = puVar5 + 1;" (assignment_expression "puVar6 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 << 8 | (ulong)puVar5[2];" (assignment_expression "uVar14 = uVar14 << 8 | (ulong)puVar5[2]" identifier = (binary_expression "uVar14 << 8 | (ulong)puVar5[2]" (binary_expression "uVar14 << 8" identifier << number_literal) | (cast_expression "(ulong)puVar5[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar5[2]" identifier [ number_literal ])))) ;) })) (expression_statement "puVar5 = puVar6 + 1;" (assignment_expression "puVar5 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 << 8 | (ulong)puVar6[2];" (assignment_expression "uVar14 = uVar14 << 8 | (ulong)puVar6[2]" identifier = (binary_expression "uVar14 << 8 | (ulong)puVar6[2]" (binary_expression "uVar14 << 8" identifier << number_literal) | (cast_expression "(ulong)puVar6[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar6[2]" identifier [ number_literal ])))) ;) })) (expression_statement "puVar6 = puVar5 + 1;" (assignment_expression "puVar6 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 << 8 | (ulong)puVar5[2];" (assignment_expression "uVar14 = uVar14 << 8 | (ulong)puVar5[2]" identifier = (binary_expression "uVar14 << 8 | (ulong)puVar5[2]" (binary_expression "uVar14 << 8" identifier << number_literal) | (cast_expression "(ulong)puVar5[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar5[2]" identifier [ number_literal ])))) ;) })) (expression_statement "puVar5 = puVar6 + 1;" (assignment_expression "puVar5 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar14 = uVar14 << 8 | (ulong)puVar6[2];" (assignment_expression "uVar14 = uVar14 << 8 | (ulong)puVar6[2]" identifier = (binary_expression "uVar14 << 8 | (ulong)puVar6[2]" (binary_expression "uVar14 << 8" identifier << number_literal) | (cast_expression "(ulong)puVar6[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar6[2]" identifier [ number_literal ])))) ;) })) (expression_statement "uVar14 = uVar14 << 8 | (ulong)puVar5[2];" (assignment_expression "uVar14 = uVar14 << 8 | (ulong)puVar5[2]" identifier = (binary_expression "uVar14 << 8 | (ulong)puVar5[2]" (binary_expression "uVar14 << 8" identifier << number_literal) | (cast_expression "(ulong)puVar5[2]" ( (type_descriptor "ulong" type_identifier) ) (subscript_expression "puVar5[2]" identifier [ number_literal ])))) ;) (expression_statement "puVar5 = puVar5 + 1;" (assignment_expression "puVar5 = puVar5 + 1" identifier = (binary_expression "puVar5 + 1" identifier + number_literal)) ;) (while_statement "while (puVar7 + bVar15 != puVar5) {\nLAB_00182b97:\n    uVar14 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9]);\n    puVar5 = puVar5 + 8;\n  }" while (parenthesized_expression "(puVar7 + bVar15 != puVar5)" ( (binary_expression "puVar7 + bVar15 != puVar5" (binary_expression "puVar7 + bVar15" identifier + identifier) != identifier) )) (compound_statement "{\nLAB_00182b97:\n    uVar14 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9]);\n    puVar5 = puVar5 + 8;\n  }" { (labeled_statement "LAB_00182b97:\n    uVar14 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9]);" statement_identifier : (expression_statement "uVar14 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9]);" (assignment_expression "uVar14 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9])" identifier = (call_expression "CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9])" identifier (argument_list "(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8]),puVar5[9])" ( (call_expression "CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8])" identifier (argument_list "(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7]),puVar5[8])" ( (call_expression "CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7])" identifier (argument_list "(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6]),\n                                        puVar5[7])" ( (call_expression "CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6])" identifier (argument_list "(CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5]),puVar5[6])" ( (call_expression "CONCAT31(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5])" identifier (argument_list "(CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4]),puVar5[5])" ( (call_expression "CONCAT21(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4])" identifier (argument_list "(CONCAT11(puVar5[2],puVar5[3]),\n                                                                   puVar5[4])" ( (call_expression "CONCAT11(puVar5[2],puVar5[3])" identifier (argument_list "(puVar5[2],puVar5[3])" ( (subscript_expression "puVar5[2]" identifier [ number_literal ]) , (subscript_expression "puVar5[3]" identifier [ number_literal ]) ))) , (subscript_expression "puVar5[4]" identifier [ number_literal ]) ))) , (subscript_expression "puVar5[5]" identifier [ number_literal ]) ))) , (subscript_expression "puVar5[6]" identifier [ number_literal ]) ))) , (subscript_expression "puVar5[7]" identifier [ number_literal ]) ))) , (subscript_expression "puVar5[8]" identifier [ number_literal ]) ))) , (subscript_expression "puVar5[9]" identifier [ number_literal ]) )))) ;)) (expression_statement "puVar5 = puVar5 + 8;" (assignment_expression "puVar5 = puVar5 + 8" identifier = (binary_expression "puVar5 + 8" identifier + number_literal)) ;) })) (expression_statement "lVar12 = (ulong)bVar15 + 2 + uVar14;" (assignment_expression "lVar12 = (ulong)bVar15 + 2 + uVar14" identifier = (binary_expression "(ulong)bVar15 + 2 + uVar14" (binary_expression "(ulong)bVar15 + 2" (cast_expression "(ulong)bVar15" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) + identifier)) ;) (expression_statement "puVar7 = puVar7 + lVar12;" (assignment_expression "puVar7 = puVar7 + lVar12" identifier = (binary_expression "puVar7 + lVar12" identifier + identifier)) ;) (expression_statement "*plVar17 = lVar12;" (assignment_expression "*plVar17 = lVar12" (pointer_expression "*plVar17" * identifier) = identifier) ;) (expression_statement "plVar17 = plVar17 + 2;" (assignment_expression "plVar17 = plVar17 + 2" identifier = (binary_expression "plVar17 + 2" identifier + number_literal)) ;) (goto_statement "goto joined_r0x00182aa4;" goto statement_identifier ;) })))
(translation_unit "int der_encode_setof(int *param_1,ulong param_2,void *param_3,size_t *param_4)\n\n{\n  int *piVar1;\n  void *pvVar2;\n  byte bVar3;\n  size_t sVar4;\n  int iVar5;\n  void *__ptr;\n  undefined8 *__base;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  int *piVar10;\n  int *piVar11;\n  byte bVar12;\n  long lVar13;\n  uint uVar14;\n  ulong uVar15;\n  byte bVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  undefined8 *puVar20;\n  size_t __n;\n  \n  if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  __ptr = calloc(1,*param_4);\n  if (__ptr == (void *)0x0) {\n    return 0xd;\n  }\n  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);\n  if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }\n  __base = (undefined8 *)calloc(param_2,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }\n  sVar4 = *param_4;\n  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);\n  if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }\n  __n = (long)puVar8 - (long)__ptr;\n  plVar18 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }\n  qsort(__base,param_2,0x10,FUN_00182650);\n  memcpy(param_3,__ptr,__n);\n  puVar17 = __base + param_2 * 2;\n  if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar15 = 0;\n  bVar12 = bVar3 & 7;\n  puVar6 = puVar8;\n  if ((bVar3 & 7) == 0) goto LAB_00182b97;\n  if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }\n  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n  puVar6 = puVar6 + 1;\n  while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }\n  lVar13 = (ulong)bVar16 + 2 + uVar15;\n  puVar8 = puVar8 + lVar13;\n  *plVar18 = lVar13;\n  plVar18 = plVar18 + 2;\n  goto joined_r0x00182aa4;\n}\n\n" (function_definition "int der_encode_setof(int *param_1,ulong param_2,void *param_3,size_t *param_4)\n\n{\n  int *piVar1;\n  void *pvVar2;\n  byte bVar3;\n  size_t sVar4;\n  int iVar5;\n  void *__ptr;\n  undefined8 *__base;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  int *piVar10;\n  int *piVar11;\n  byte bVar12;\n  long lVar13;\n  uint uVar14;\n  ulong uVar15;\n  byte bVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  undefined8 *puVar20;\n  size_t __n;\n  \n  if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  __ptr = calloc(1,*param_4);\n  if (__ptr == (void *)0x0) {\n    return 0xd;\n  }\n  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);\n  if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }\n  __base = (undefined8 *)calloc(param_2,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }\n  sVar4 = *param_4;\n  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);\n  if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }\n  __n = (long)puVar8 - (long)__ptr;\n  plVar18 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }\n  qsort(__base,param_2,0x10,FUN_00182650);\n  memcpy(param_3,__ptr,__n);\n  puVar17 = __base + param_2 * 2;\n  if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar15 = 0;\n  bVar12 = bVar3 & 7;\n  puVar6 = puVar8;\n  if ((bVar3 & 7) == 0) goto LAB_00182b97;\n  if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }\n  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n  puVar6 = puVar6 + 1;\n  while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }\n  lVar13 = (ulong)bVar16 + 2 + uVar15;\n  puVar8 = puVar8 + lVar13;\n  *plVar18 = lVar13;\n  plVar18 = plVar18 + 2;\n  goto joined_r0x00182aa4;\n}" primitive_type (function_declarator "der_encode_setof(int *param_1,ulong param_2,void *param_3,size_t *param_4)" identifier (parameter_list "(int *param_1,ulong param_2,void *param_3,size_t *param_4)" ( (parameter_declaration "int *param_1" primitive_type (pointer_declarator "*param_1" * identifier)) , (parameter_declaration "ulong param_2" type_identifier identifier) , (parameter_declaration "void *param_3" primitive_type (pointer_declarator "*param_3" * identifier)) , (parameter_declaration "size_t *param_4" primitive_type (pointer_declarator "*param_4" * identifier)) ))) (compound_statement "{\n  int *piVar1;\n  void *pvVar2;\n  byte bVar3;\n  size_t sVar4;\n  int iVar5;\n  void *__ptr;\n  undefined8 *__base;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  int *piVar10;\n  int *piVar11;\n  byte bVar12;\n  long lVar13;\n  uint uVar14;\n  ulong uVar15;\n  byte bVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  undefined8 *puVar20;\n  size_t __n;\n  \n  if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  __ptr = calloc(1,*param_4);\n  if (__ptr == (void *)0x0) {\n    return 0xd;\n  }\n  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);\n  if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }\n  __base = (undefined8 *)calloc(param_2,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }\n  sVar4 = *param_4;\n  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);\n  if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }\n  __n = (long)puVar8 - (long)__ptr;\n  plVar18 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }\n  qsort(__base,param_2,0x10,FUN_00182650);\n  memcpy(param_3,__ptr,__n);\n  puVar17 = __base + param_2 * 2;\n  if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar15 = 0;\n  bVar12 = bVar3 & 7;\n  puVar6 = puVar8;\n  if ((bVar3 & 7) == 0) goto LAB_00182b97;\n  if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }\n  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n  puVar6 = puVar6 + 1;\n  while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }\n  lVar13 = (ulong)bVar16 + 2 + uVar15;\n  puVar8 = puVar8 + lVar13;\n  *plVar18 = lVar13;\n  plVar18 = plVar18 + 2;\n  goto joined_r0x00182aa4;\n}" { (declaration "int *piVar1;" primitive_type (pointer_declarator "*piVar1" * identifier) ;) (declaration "void *pvVar2;" primitive_type (pointer_declarator "*pvVar2" * identifier) ;) (declaration "byte bVar3;" type_identifier identifier ;) (declaration "size_t sVar4;" primitive_type identifier ;) (declaration "int iVar5;" primitive_type identifier ;) (declaration "void *__ptr;" primitive_type (pointer_declarator "*__ptr" * identifier) ;) (declaration "undefined8 *__base;" type_identifier (pointer_declarator "*__base" * identifier) ;) (declaration "undefined1 *puVar6;" type_identifier (pointer_declarator "*puVar6" * identifier) ;) (declaration "undefined1 *puVar7;" type_identifier (pointer_declarator "*puVar7" * identifier) ;) (declaration "undefined1 *puVar8;" type_identifier (pointer_declarator "*puVar8" * identifier) ;) (declaration "long lVar9;" (sized_type_specifier "long" long) identifier ;) (declaration "int *piVar10;" primitive_type (pointer_declarator "*piVar10" * identifier) ;) (declaration "int *piVar11;" primitive_type (pointer_declarator "*piVar11" * identifier) ;) (declaration "byte bVar12;" type_identifier identifier ;) (declaration "long lVar13;" (sized_type_specifier "long" long) identifier ;) (declaration "uint uVar14;" type_identifier identifier ;) (declaration "ulong uVar15;" type_identifier identifier ;) (declaration "byte bVar16;" type_identifier 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 "undefined8 *puVar20;" type_identifier (pointer_declarator "*puVar20" * identifier) ;) (declaration "size_t __n;" primitive_type identifier ;) (if_statement "if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }" if (parenthesized_expression "(1 < param_2)" ( (binary_expression "1 < param_2" number_literal < identifier) )) (compound_statement "{\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }" { (if_statement "if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }" if (parenthesized_expression "(*param_1 == param_1[0x10])" ( (binary_expression "*param_1 == param_1[0x10]" (pointer_expression "*param_1" * identifier) == (subscript_expression "param_1[0x10]" identifier [ number_literal ])) )) (compound_statement "{\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }" { (expression_statement "lVar13 = 1;" (assignment_expression "lVar13 = 1" identifier = number_literal) ;) (expression_statement "uVar14 = ~(1U - (int)param_2) & 7;" (assignment_expression "uVar14 = ~(1U - (int)param_2) & 7" identifier = (binary_expression "~(1U - (int)param_2) & 7" (unary_expression "~(1U - (int)param_2)" ~ (parenthesized_expression "(1U - (int)param_2)" ( (binary_expression "1U - (int)param_2" number_literal - (cast_expression "(int)param_2" ( (type_descriptor "int" primitive_type) ) identifier)) ))) & number_literal)) ;) (expression_statement "piVar11 = param_1 + 0x10;" (assignment_expression "piVar11 = param_1 + 0x10" identifier = (binary_expression "param_1 + 0x10" identifier + number_literal)) ;) (if_statement "if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }" { (expression_statement "piVar11 = param_1 + 0x20;" (assignment_expression "piVar11 = param_1 + 0x20" identifier = (binary_expression "param_1 + 0x20" identifier + number_literal)) ;) (expression_statement "lVar13 = 2;" (assignment_expression "lVar13 = 2" identifier = number_literal) ;) (if_statement "if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }" if (parenthesized_expression "(param_1[0x20] != param_1[0x10])" ( (binary_expression "param_1[0x20] != param_1[0x10]" (subscript_expression "param_1[0x20]" identifier [ number_literal ]) != (subscript_expression "param_1[0x10]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }" if (parenthesized_expression "(uVar14 != 1)" ( (binary_expression "uVar14 != 1" identifier != number_literal) )) (compound_statement "{\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }" { (expression_statement "piVar10 = piVar11;" (assignment_expression "piVar10 = piVar11" identifier = identifier) ;) (if_statement "if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }" if (parenthesized_expression "(uVar14 != 2)" ( (binary_expression "uVar14 != 2" identifier != number_literal) )) (compound_statement "{\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }" { (if_statement "if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }" if (parenthesized_expression "(uVar14 != 3)" ( (binary_expression "uVar14 != 3" identifier != number_literal) )) (compound_statement "{\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }" { (if_statement "if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }" if (parenthesized_expression "(uVar14 != 4)" ( (binary_expression "uVar14 != 4" identifier != number_literal) )) (compound_statement "{\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }" { (if_statement "if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }" if (parenthesized_expression "(uVar14 != 5)" ( (binary_expression "uVar14 != 5" identifier != number_literal) )) (compound_statement "{\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }" { (if_statement "if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }" if (parenthesized_expression "(uVar14 != 6)" ( (binary_expression "uVar14 != 6" identifier != number_literal) )) (compound_statement "{\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }" { (expression_statement "piVar10 = param_1 + 0x30;" (assignment_expression "piVar10 = param_1 + 0x30" identifier = (binary_expression "param_1 + 0x30" identifier + number_literal)) ;) (expression_statement "lVar13 = 3;" (assignment_expression "lVar13 = 3" identifier = number_literal) ;) (if_statement "if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }" if (parenthesized_expression "(param_1[0x30] != *piVar11)" ( (binary_expression "param_1[0x30] != *piVar11" (subscript_expression "param_1[0x30]" identifier [ number_literal ]) != (pointer_expression "*piVar11" * identifier)) )) (compound_statement "{\n                      return 0x10;\n                    }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "piVar11 = piVar10 + 0x10;" (assignment_expression "piVar11 = piVar10 + 0x10" identifier = (binary_expression "piVar10 + 0x10" identifier + number_literal)) ;) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (if_statement "if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }" if (parenthesized_expression "(piVar10[0x10] != *piVar10)" ( (binary_expression "piVar10[0x10] != *piVar10" (subscript_expression "piVar10[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n                    return 0x10;\n                  }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "piVar10 = piVar11 + 0x10;" (assignment_expression "piVar10 = piVar11 + 0x10" identifier = (binary_expression "piVar11 + 0x10" identifier + number_literal)) ;) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (if_statement "if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }" if (parenthesized_expression "(piVar11[0x10] != *piVar11)" ( (binary_expression "piVar11[0x10] != *piVar11" (subscript_expression "piVar11[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar11" * identifier)) )) (compound_statement "{\n                  return 0x10;\n                }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "piVar11 = piVar10 + 0x10;" (assignment_expression "piVar11 = piVar10 + 0x10" identifier = (binary_expression "piVar10 + 0x10" identifier + number_literal)) ;) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (if_statement "if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }" if (parenthesized_expression "(piVar10[0x10] != *piVar10)" ( (binary_expression "piVar10[0x10] != *piVar10" (subscript_expression "piVar10[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n                return 0x10;\n              }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "piVar10 = piVar11 + 0x10;" (assignment_expression "piVar10 = piVar11 + 0x10" identifier = (binary_expression "piVar11 + 0x10" identifier + number_literal)) ;) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (if_statement "if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }" if (parenthesized_expression "(piVar11[0x10] != *piVar11)" ( (binary_expression "piVar11[0x10] != *piVar11" (subscript_expression "piVar11[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar11" * identifier)) )) (compound_statement "{\n              return 0x10;\n            }" { (return_statement "return 0x10;" return number_literal ;) })) })) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" identifier = (binary_expression "lVar13 + 1" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar10 + 0x10;" (assignment_expression "piVar11 = piVar10 + 0x10" identifier = (binary_expression "piVar10 + 0x10" identifier + number_literal)) ;) (if_statement "if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }" if (parenthesized_expression "(piVar10[0x10] != *piVar10)" ( (binary_expression "piVar10[0x10] != *piVar10" (subscript_expression "piVar10[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar10" * identifier)) )) (compound_statement "{\n            return 0x10;\n          }" { (return_statement "return 0x10;" return number_literal ;) })) })) })) (do_statement "do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);" do (compound_statement "{\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      }" { (if_statement "if (param_2 == lVar13 + 1U) goto LAB_00182a10;" if (parenthesized_expression "(param_2 == lVar13 + 1U)" ( (binary_expression "param_2 == lVar13 + 1U" identifier == (binary_expression "lVar13 + 1U" identifier + number_literal)) )) (goto_statement "goto LAB_00182a10;" goto statement_identifier ;)) (if_statement "if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x10] != *piVar11)" ( (binary_expression "piVar11[0x10] != *piVar11" (subscript_expression "piVar11[0x10]" identifier [ number_literal ]) != (pointer_expression "*piVar11" * identifier)) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x20] != piVar11[0x10])" ( (binary_expression "piVar11[0x20] != piVar11[0x10]" (subscript_expression "piVar11[0x20]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x10]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x30] != piVar11[0x20])" ( (binary_expression "piVar11[0x30] != piVar11[0x20]" (subscript_expression "piVar11[0x30]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x20]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x40] != piVar11[0x30])" ( (binary_expression "piVar11[0x40] != piVar11[0x30]" (subscript_expression "piVar11[0x40]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x30]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x50] != piVar11[0x40])" ( (binary_expression "piVar11[0x50] != piVar11[0x40]" (subscript_expression "piVar11[0x50]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x40]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x60] != piVar11[0x50])" ( (binary_expression "piVar11[0x60] != piVar11[0x50]" (subscript_expression "piVar11[0x60]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x50]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (if_statement "if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }" if (parenthesized_expression "(piVar11[0x70] != piVar11[0x60])" ( (binary_expression "piVar11[0x70] != piVar11[0x60]" (subscript_expression "piVar11[0x70]" identifier [ number_literal ]) != (subscript_expression "piVar11[0x60]" identifier [ number_literal ])) )) (compound_statement "{\n          return 0x10;\n        }" { (return_statement "return 0x10;" return number_literal ;) })) (expression_statement "lVar13 = lVar13 + 8;" (assignment_expression "lVar13 = lVar13 + 8" identifier = (binary_expression "lVar13 + 8" identifier + number_literal)) ;) (expression_statement "piVar10 = piVar11 + 0x70;" (assignment_expression "piVar10 = piVar11 + 0x70" identifier = (binary_expression "piVar11 + 0x70" identifier + number_literal)) ;) (expression_statement "piVar1 = piVar11 + 0x80;" (assignment_expression "piVar1 = piVar11 + 0x80" identifier = (binary_expression "piVar11 + 0x80" identifier + number_literal)) ;) (expression_statement "piVar11 = piVar11 + 0x80;" (assignment_expression "piVar11 = piVar11 + 0x80" identifier = (binary_expression "piVar11 + 0x80" identifier + number_literal)) ;) }) while (parenthesized_expression "(*piVar1 == *piVar10)" ( (binary_expression "*piVar1 == *piVar10" (pointer_expression "*piVar1" * identifier) == (pointer_expression "*piVar10" * identifier)) )) ;) })) (return_statement "return 0x10;" return number_literal ;) })) (labeled_statement "LAB_00182a10:\n  __ptr = calloc(1,*param_4);" statement_identifier : (expression_statement "__ptr = calloc(1,*param_4);" (assignment_expression "__ptr = calloc(1,*param_4)" identifier = (call_expression "calloc(1,*param_4)" identifier (argument_list "(1,*param_4)" ( number_literal , (pointer_expression "*param_4" * identifier) )))) ;)) (if_statement "if (__ptr == (void *)0x0) {\n    return 0xd;\n  }" if (parenthesized_expression "(__ptr == (void *)0x0)" ( (binary_expression "__ptr == (void *)0x0" identifier == (cast_expression "(void *)0x0" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    return 0xd;\n  }" { (return_statement "return 0xd;" return number_literal ;) })) (expression_statement "iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);" (assignment_expression "iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf)" identifier = (call_expression "der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf)" identifier (argument_list "(param_1,param_2,__ptr,param_4,0xf)" ( identifier , identifier , identifier , identifier , number_literal )))) ;) (if_statement "if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }" if (parenthesized_expression "(iVar5 != 0)" ( (binary_expression "iVar5 != 0" identifier != number_literal) )) (compound_statement "{\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }" { (labeled_statement "LAB_00182d53:\n    free(__ptr);" statement_identifier : (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;)) (return_statement "return iVar5;" return identifier ;) })) (expression_statement "__base = (undefined8 *)calloc(param_2,0x10);" (assignment_expression "__base = (undefined8 *)calloc(param_2,0x10)" identifier = (cast_expression "(undefined8 *)calloc(param_2,0x10)" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) (call_expression "calloc(param_2,0x10)" identifier (argument_list "(param_2,0x10)" ( identifier , number_literal ))))) ;) (if_statement "if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }" if (parenthesized_expression "(__base == (undefined8 *)0x0)" ( (binary_expression "__base == (undefined8 *)0x0" identifier == (cast_expression "(undefined8 *)0x0" ( (type_descriptor "undefined8 *" type_identifier (abstract_pointer_declarator "*" *)) ) number_literal)) )) (compound_statement "{\n    free(__ptr);\n    return 0xd;\n  }" { (expression_statement "free(__ptr);" (call_expression "free(__ptr)" identifier (argument_list "(__ptr)" ( identifier ))) ;) (return_statement "return 0xd;" return number_literal ;) })) (expression_statement "sVar4 = *param_4;" (assignment_expression "sVar4 = *param_4" identifier = (pointer_expression "*param_4" * identifier)) ;) (expression_statement "puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);" (assignment_expression "puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f)" identifier = (binary_expression "(undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f)" (cast_expression "(undefined1 *)((long)__ptr + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__ptr + 2)" ( (binary_expression "(long)__ptr + 2" (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) ))) + (parenthesized_expression "(*(byte *)((long)__ptr + 1) & 0x7f)" ( (binary_expression "*(byte *)((long)__ptr + 1) & 0x7f" (pointer_expression "*(byte *)((long)__ptr + 1)" * (cast_expression "(byte *)((long)__ptr + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__ptr + 1)" ( (binary_expression "(long)__ptr + 1" (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) & number_literal) )))) ;) (if_statement "if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }" if (parenthesized_expression "(-1 < (char)*(byte *)((long)__ptr + 1))" ( (binary_expression "-1 < (char)*(byte *)((long)__ptr + 1)" number_literal < (cast_expression "(char)*(byte *)((long)__ptr + 1)" ( (type_descriptor "char" primitive_type) ) (pointer_expression "*(byte *)((long)__ptr + 1)" * (cast_expression "(byte *)((long)__ptr + 1)" ( (type_descriptor "byte *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__ptr + 1)" ( (binary_expression "(long)__ptr + 1" (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))))) )) (compound_statement "{\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }" { (expression_statement "puVar8 = (undefined1 *)((long)__ptr + 2);" (assignment_expression "puVar8 = (undefined1 *)((long)__ptr + 2)" identifier = (cast_expression "(undefined1 *)((long)__ptr + 2)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)__ptr + 2)" ( (binary_expression "(long)__ptr + 2" (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + number_literal) )))) ;) })) (expression_statement "__n = (long)puVar8 - (long)__ptr;" (assignment_expression "__n = (long)puVar8 - (long)__ptr" identifier = (binary_expression "(long)puVar8 - (long)__ptr" (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) - (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier))) ;) (expression_statement "plVar18 = __base + 1;" (assignment_expression "plVar18 = __base + 1" identifier = (binary_expression "__base + 1" identifier + number_literal)) ;) (labeled_statement "joined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }" statement_identifier : (if_statement "if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }" if (parenthesized_expression "(puVar8 < (undefined1 *)(sVar4 + (long)__ptr))" ( (binary_expression "puVar8 < (undefined1 *)(sVar4 + (long)__ptr)" identifier < (cast_expression "(undefined1 *)(sVar4 + (long)__ptr)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(sVar4 + (long)__ptr)" ( (binary_expression "sVar4 + (long)__ptr" identifier + (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) )))) )) (compound_statement "{\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }" { (do_statement "do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );" do (compound_statement "{\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    }" { (expression_statement "bVar3 = puVar8[1];" (assignment_expression "bVar3 = puVar8[1]" identifier = (subscript_expression "puVar8[1]" identifier [ number_literal ])) ;) (expression_statement "plVar18[-1] = (long)puVar8;" (assignment_expression "plVar18[-1] = (long)puVar8" (subscript_expression "plVar18[-1]" identifier [ number_literal ]) = (cast_expression "(long)puVar8" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ;) (if_statement "if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }" if (parenthesized_expression "((ulong)bVar3 < 0x80)" ( (binary_expression "(ulong)bVar3 < 0x80" (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) < number_literal) )) (compound_statement "{\n        lVar13 = (ulong)bVar3 + 2;\n      }" { (expression_statement "lVar13 = (ulong)bVar3 + 2;" (assignment_expression "lVar13 = (ulong)bVar3 + 2" identifier = (binary_expression "(ulong)bVar3 + 2" (cast_expression "(ulong)bVar3" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal)) ;) }) (else_clause "else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }" else (compound_statement "{\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }" { (expression_statement "bVar16 = bVar3 & 0x7f;" (assignment_expression "bVar16 = bVar3 & 0x7f" identifier = (binary_expression "bVar3 & 0x7f" identifier & number_literal)) ;) (expression_statement "*plVar18 = 0;" (assignment_expression "*plVar18 = 0" (pointer_expression "*plVar18" * identifier) = number_literal) ;) (if_statement "if (bVar16 != 0) goto code_r0x00182af3;" if (parenthesized_expression "(bVar16 != 0)" ( (binary_expression "bVar16 != 0" identifier != number_literal) )) (goto_statement "goto code_r0x00182af3;" goto statement_identifier ;)) (expression_statement "lVar13 = 2;" (assignment_expression "lVar13 = 2" identifier = number_literal) ;) }))) (expression_statement "puVar8 = puVar8 + lVar13;" (assignment_expression "puVar8 = puVar8 + lVar13" identifier = (binary_expression "puVar8 + lVar13" identifier + identifier)) ;) (expression_statement "*plVar18 = lVar13;" (assignment_expression "*plVar18 = lVar13" (pointer_expression "*plVar18" * identifier) = identifier) ;) (expression_statement "plVar18 = plVar18 + 2;" (assignment_expression "plVar18 = plVar18 + 2" identifier = (binary_expression "plVar18 + 2" identifier + number_literal)) ;) (if_statement "if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;" if (parenthesized_expression "((undefined1 *)(sVar4 + (long)__ptr) <= puVar8)" ( (binary_expression "(undefined1 *)(sVar4 + (long)__ptr) <= puVar8" (cast_expression "(undefined1 *)(sVar4 + (long)__ptr)" ( (type_descriptor "undefined1 *" type_identifier (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "(sVar4 + (long)__ptr)" ( (binary_expression "sVar4 + (long)__ptr" identifier + (cast_expression "(long)__ptr" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) <= identifier) )) (break_statement "break;" break ;)) }) while (parenthesized_expression "( true )" ( true )) ;) }))) (expression_statement "qsort(__base,param_2,0x10,FUN_00182650);" (call_expression "qsort(__base,param_2,0x10,FUN_00182650)" identifier (argument_list "(__base,param_2,0x10,FUN_00182650)" ( identifier , identifier , number_literal , identifier ))) ;) (expression_statement "memcpy(param_3,__ptr,__n);" (call_expression "memcpy(param_3,__ptr,__n)" identifier (argument_list "(param_3,__ptr,__n)" ( identifier , identifier , identifier ))) ;) (expression_statement "puVar17 = __base + param_2 * 2;" (assignment_expression "puVar17 = __base + param_2 * 2" identifier = (binary_expression "__base + param_2 * 2" identifier + (binary_expression "param_2 * 2" identifier * number_literal))) ;) (if_statement "if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }" if (parenthesized_expression "(param_2 != 0)" ( (binary_expression "param_2 != 0" identifier != number_literal) )) (compound_statement "{\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }" { (expression_statement "uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;" (assignment_expression "uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3" identifier = (binary_expression "(int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3" (binary_expression "(int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U" (cast_expression "(int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4)" ( (type_descriptor "int" primitive_type) ) (parenthesized_expression "((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4)" ( (binary_expression "(ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4" (call_expression "(ulong)((long)puVar17 + (-0x10 - (long)__base))" (parenthesized_expression "(ulong)" ( identifier )) (argument_list "((long)puVar17 + (-0x10 - (long)__base))" ( (binary_expression "(long)puVar17 + (-0x10 - (long)__base)" (cast_expression "(long)puVar17" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + (parenthesized_expression "(-0x10 - (long)__base)" ( (binary_expression "-0x10 - (long)__base" number_literal - (cast_expression "(long)__base" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier)) ))) ))) >> number_literal) ))) + number_literal) & number_literal)) ;) (expression_statement "puVar19 = __base;" (assignment_expression "puVar19 = __base" identifier = identifier) ;) (if_statement "if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }" if (parenthesized_expression "(uVar14 != 0)" ( (binary_expression "uVar14 != 0" identifier != number_literal) )) (compound_statement "{\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }" { (expression_statement "puVar20 = __base;" (assignment_expression "puVar20 = __base" identifier = identifier) ;) (if_statement "if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }" if (parenthesized_expression "(uVar14 != 1)" ( (binary_expression "uVar14 != 1" identifier != number_literal) )) (compound_statement "{\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }" { (if_statement "if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }" if (parenthesized_expression "(uVar14 != 2)" ( (binary_expression "uVar14 != 2" identifier != number_literal) )) (compound_statement "{\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }" { (expression_statement "pvVar2 = (void *)((long)param_3 + __n);" (assignment_expression "pvVar2 = (void *)((long)param_3 + __n)" identifier = (cast_expression "(void *)((long)param_3 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + __n)" ( (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "puVar19 = __base + 2;" (assignment_expression "puVar19 = __base + 2" identifier = (binary_expression "__base + 2" identifier + number_literal)) ;) (expression_statement "__n = __n + __base[1];" (assignment_expression "__n = __n + __base[1]" identifier = (binary_expression "__n + __base[1]" identifier + (subscript_expression "__base[1]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(pvVar2,(void *)*__base,__base[1]);" (call_expression "memcpy(pvVar2,(void *)*__base,__base[1])" identifier (argument_list "(pvVar2,(void *)*__base,__base[1])" ( identifier , (cast_expression "(void *)*__base" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*__base" * identifier)) , (subscript_expression "__base[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "pvVar2 = (void *)((long)param_3 + __n);" (assignment_expression "pvVar2 = (void *)((long)param_3 + __n)" identifier = (cast_expression "(void *)((long)param_3 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + __n)" ( (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "puVar20 = puVar19 + 2;" (assignment_expression "puVar20 = puVar19 + 2" identifier = (binary_expression "puVar19 + 2" identifier + number_literal)) ;) (expression_statement "__n = __n + puVar19[1];" (assignment_expression "__n = __n + puVar19[1]" identifier = (binary_expression "__n + puVar19[1]" identifier + (subscript_expression "puVar19[1]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(pvVar2,(void *)*puVar19,puVar19[1]);" (call_expression "memcpy(pvVar2,(void *)*puVar19,puVar19[1])" identifier (argument_list "(pvVar2,(void *)*puVar19,puVar19[1])" ( identifier , (cast_expression "(void *)*puVar19" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier)) , (subscript_expression "puVar19[1]" identifier [ number_literal ]) ))) ;) })) (expression_statement "pvVar2 = (void *)((long)param_3 + __n);" (assignment_expression "pvVar2 = (void *)((long)param_3 + __n)" identifier = (cast_expression "(void *)((long)param_3 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + __n)" ( (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) )))) ;) (expression_statement "__n = __n + puVar20[1];" (assignment_expression "__n = __n + puVar20[1]" identifier = (binary_expression "__n + puVar20[1]" identifier + (subscript_expression "puVar20[1]" identifier [ number_literal ]))) ;) (expression_statement "memcpy(pvVar2,(void *)*puVar20,puVar20[1]);" (call_expression "memcpy(pvVar2,(void *)*puVar20,puVar20[1])" identifier (argument_list "(pvVar2,(void *)*puVar20,puVar20[1])" ( identifier , (cast_expression "(void *)*puVar20" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar20" * identifier)) , (subscript_expression "puVar20[1]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar19 = puVar20 + 2;" (assignment_expression "puVar19 = puVar20 + 2" identifier = (binary_expression "puVar20 + 2" identifier + number_literal)) ;) (if_statement "if (puVar17 == puVar20 + 2) goto LAB_00182d4a;" if (parenthesized_expression "(puVar17 == puVar20 + 2)" ( (binary_expression "puVar17 == puVar20 + 2" identifier == (binary_expression "puVar20 + 2" identifier + number_literal)) )) (goto_statement "goto LAB_00182d4a;" goto statement_identifier ;)) })) (do_statement "do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);" do (compound_statement "{\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    }" { (expression_statement "puVar20 = puVar19 + 8;" (assignment_expression "puVar20 = puVar19 + 8" identifier = (binary_expression "puVar19 + 8" identifier + number_literal)) ;) (expression_statement "lVar13 = puVar19[1] + __n;" (assignment_expression "lVar13 = puVar19[1] + __n" identifier = (binary_expression "puVar19[1] + __n" (subscript_expression "puVar19[1]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);" (call_expression "memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1])" identifier (argument_list "((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1])" ( (cast_expression "(void *)((long)param_3 + __n)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + __n)" ( (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , (cast_expression "(void *)*puVar19" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (pointer_expression "*puVar19" * identifier)) , (subscript_expression "puVar19[1]" identifier [ number_literal ]) ))) ;) (expression_statement "lVar9 = lVar13 + puVar19[3];" (assignment_expression "lVar9 = lVar13 + puVar19[3]" identifier = (binary_expression "lVar13 + puVar19[3]" identifier + (subscript_expression "puVar19[3]" identifier [ number_literal ]))) ;) (expression_statement "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);" (call_expression "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3])" identifier (argument_list "((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3])" ( (cast_expression "(void *)((long)param_3 + lVar13)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + lVar13)" ( (binary_expression "(long)param_3 + lVar13" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , (cast_expression "(void *)puVar19[2]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar19[2]" identifier [ number_literal ])) , (subscript_expression "puVar19[3]" identifier [ number_literal ]) ))) ;) (expression_statement "lVar13 = lVar9 + puVar19[5];" (assignment_expression "lVar13 = lVar9 + puVar19[5]" identifier = (binary_expression "lVar9 + puVar19[5]" identifier + (subscript_expression "puVar19[5]" identifier [ number_literal ]))) ;) (expression_statement "memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);" (call_expression "memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5])" identifier (argument_list "((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5])" ( (cast_expression "(void *)((long)param_3 + lVar9)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + lVar9)" ( (binary_expression "(long)param_3 + lVar9" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , (cast_expression "(void *)puVar19[4]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar19[4]" identifier [ number_literal ])) , (subscript_expression "puVar19[5]" identifier [ number_literal ]) ))) ;) (expression_statement "__n = puVar19[7] + lVar13;" (assignment_expression "__n = puVar19[7] + lVar13" identifier = (binary_expression "puVar19[7] + lVar13" (subscript_expression "puVar19[7]" identifier [ number_literal ]) + identifier)) ;) (expression_statement "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);" (call_expression "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7])" identifier (argument_list "((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7])" ( (cast_expression "(void *)((long)param_3 + lVar13)" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (parenthesized_expression "((long)param_3 + lVar13)" ( (binary_expression "(long)param_3 + lVar13" (cast_expression "(long)param_3" ( (type_descriptor "long" (sized_type_specifier "long" long)) ) identifier) + identifier) ))) , (cast_expression "(void *)puVar19[6]" ( (type_descriptor "void *" primitive_type (abstract_pointer_declarator "*" *)) ) (subscript_expression "puVar19[6]" identifier [ number_literal ])) , (subscript_expression "puVar19[7]" identifier [ number_literal ]) ))) ;) (expression_statement "puVar19 = puVar20;" (assignment_expression "puVar19 = puVar20" identifier = identifier) ;) }) while (parenthesized_expression "(puVar17 != puVar20)" ( (binary_expression "puVar17 != puVar20" identifier != identifier) )) ;) })) (labeled_statement "LAB_00182d4a:\n  free(__base);" statement_identifier : (expression_statement "free(__base);" (call_expression "free(__base)" identifier (argument_list "(__base)" ( identifier ))) ;)) (goto_statement "goto LAB_00182d53;" goto statement_identifier ;) (labeled_statement "code_r0x00182af3:\n  uVar15 = 0;" statement_identifier : (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" identifier = number_literal) ;)) (expression_statement "bVar12 = bVar3 & 7;" (assignment_expression "bVar12 = bVar3 & 7" identifier = (binary_expression "bVar3 & 7" identifier & number_literal)) ;) (expression_statement "puVar6 = puVar8;" (assignment_expression "puVar6 = puVar8" identifier = identifier) ;) (if_statement "if ((bVar3 & 7) == 0) goto LAB_00182b97;" if (parenthesized_expression "((bVar3 & 7) == 0)" ( (binary_expression "(bVar3 & 7) == 0" (parenthesized_expression "(bVar3 & 7)" ( (binary_expression "bVar3 & 7" identifier & number_literal) )) == number_literal) )) (goto_statement "goto LAB_00182b97;" goto statement_identifier ;)) (if_statement "if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }" if (parenthesized_expression "(bVar12 != 1)" ( (binary_expression "bVar12 != 1" identifier != number_literal) )) (compound_statement "{\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }" { (expression_statement "puVar7 = puVar8;" (assignment_expression "puVar7 = puVar8" identifier = identifier) ;) (if_statement "if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }" if (parenthesized_expression "(bVar12 != 2)" ( (binary_expression "bVar12 != 2" identifier != number_literal) )) (compound_statement "{\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }" { (if_statement "if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }" if (parenthesized_expression "(bVar12 != 3)" ( (binary_expression "bVar12 != 3" identifier != number_literal) )) (compound_statement "{\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }" { (if_statement "if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }" if (parenthesized_expression "(bVar12 != 4)" ( (binary_expression "bVar12 != 4" identifier != number_literal) )) (compound_statement "{\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }" { (if_statement "if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }" if (parenthesized_expression "(bVar12 != 5)" ( (binary_expression "bVar12 != 5" identifier != number_literal) )) (compound_statement "{\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }" { (if_statement "if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }" if (parenthesized_expression "(bVar12 != 6)" ( (binary_expression "bVar12 != 6" identifier != number_literal) )) (compound_statement "{\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }" { (expression_statement "uVar15 = (ulong)(byte)puVar8[2];" (assignment_expression "uVar15 = (ulong)(byte)puVar8[2]" identifier = (cast_expression "(ulong)(byte)puVar8[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar8[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar8[2]" identifier [ number_literal ])))) ;) (expression_statement "puVar7 = puVar8 + 1;" (assignment_expression "puVar7 = puVar8 + 1" identifier = (binary_expression "puVar8 + 1" identifier + number_literal)) ;) })) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar7[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar7[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar7[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar6[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar6[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar6[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar7[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar7[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar7[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar6[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar6[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar6[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" identifier = (binary_expression "puVar7 + 1" identifier + number_literal)) ;) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar7[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar7[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar7[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar7[2]" identifier [ number_literal ]))))) ;) })) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2]" identifier = (binary_expression "uVar15 << 8 | (ulong)(byte)puVar6[2]" (binary_expression "uVar15 << 8" identifier << number_literal) | (cast_expression "(ulong)(byte)puVar6[2]" ( (type_descriptor "ulong" type_identifier) ) (cast_expression "(byte)puVar6[2]" ( (type_descriptor "byte" type_identifier) ) (subscript_expression "puVar6[2]" identifier [ number_literal ]))))) ;) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" identifier = (binary_expression "puVar6 + 1" identifier + number_literal)) ;) (while_statement "while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }" while (parenthesized_expression "(puVar8 + bVar16 != puVar6)" ( (binary_expression "puVar8 + bVar16 != puVar6" (binary_expression "puVar8 + bVar16" identifier + identifier) != identifier) )) (compound_statement "{\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }" { (labeled_statement "LAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);" statement_identifier : (expression_statement "uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);" (assignment_expression "uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9])" identifier = (call_expression "CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9])" identifier (argument_list "(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9])" ( (call_expression "CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8])" identifier (argument_list "(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8])" ( (call_expression "CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7])" identifier (argument_list "(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7])" ( (call_expression "CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6])" identifier (argument_list "(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6])" ( (call_expression "CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5])" identifier (argument_list "(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5])" ( (call_expression "CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4])" identifier (argument_list "(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4])" ( (call_expression "CONCAT11(puVar6[2],puVar6[3])" identifier (argument_list "(puVar6[2],puVar6[3])" ( (subscript_expression "puVar6[2]" identifier [ number_literal ]) , (subscript_expression "puVar6[3]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[4]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[5]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[6]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[7]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[8]" identifier [ number_literal ]) ))) , (subscript_expression "puVar6[9]" identifier [ number_literal ]) )))) ;)) (expression_statement "puVar6 = puVar6 + 8;" (assignment_expression "puVar6 = puVar6 + 8" identifier = (binary_expression "puVar6 + 8" identifier + number_literal)) ;) })) (expression_statement "lVar13 = (ulong)bVar16 + 2 + uVar15;" (assignment_expression "lVar13 = (ulong)bVar16 + 2 + uVar15" identifier = (binary_expression "(ulong)bVar16 + 2 + uVar15" (binary_expression "(ulong)bVar16 + 2" (cast_expression "(ulong)bVar16" ( (type_descriptor "ulong" type_identifier) ) identifier) + number_literal) + identifier)) ;) (expression_statement "puVar8 = puVar8 + lVar13;" (assignment_expression "puVar8 = puVar8 + lVar13" identifier = (binary_expression "puVar8 + lVar13" identifier + identifier)) ;) (expression_statement "*plVar18 = lVar13;" (assignment_expression "*plVar18 = lVar13" (pointer_expression "*plVar18" * identifier) = identifier) ;) (expression_statement "plVar18 = plVar18 + 2;" (assignment_expression "plVar18 = plVar18 + 2" identifier = (binary_expression "plVar18 + 2" identifier + number_literal)) ;) (goto_statement "goto joined_r0x00182aa4;" goto statement_identifier ;) })))
(translation_unit (function_definition TYPE (function_declarator IDENT (parameter_list ( (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE IDENT) , (parameter_declaration TYPE (pointer_declarator * IDENT)) , (parameter_declaration TYPE (pointer_declarator * IDENT)) ))) (compound_statement { (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (declaration (sized_type_specifier long) IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE IDENT ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration (sized_type_specifier long) (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE (pointer_declarator * IDENT) ;) (declaration TYPE IDENT ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < IDENT) )) (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (subscript_expression IDENT [ LIT ])) )) (compound_statement { (expression_statement (assignment_expression IDENT = LIT) ;) (expression_statement (assignment_expression IDENT = (binary_expression (unary_expression ~ (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor TYPE) ) IDENT)) ))) & LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * IDENT)) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * IDENT)) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * IDENT)) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * IDENT)) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * IDENT)) )) (compound_statement { (return_statement return LIT ;) })) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * IDENT)) )) (compound_statement { (return_statement return LIT ;) })) })) })) (do_statement do (compound_statement { (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (pointer_expression * IDENT)) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return LIT ;) })) (if_statement if (parenthesized_expression ( (binary_expression (subscript_expression IDENT [ LIT ]) != (subscript_expression IDENT [ LIT ])) )) (compound_statement { (return_statement return LIT ;) })) (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 = (binary_expression IDENT + LIT)) ;) }) while (parenthesized_expression ( (binary_expression (pointer_expression * IDENT) == (pointer_expression * IDENT)) )) ;) })) (return_statement return LIT ;) })) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( LIT , (pointer_expression * IDENT) )))) ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT , IDENT , LIT )))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (return_statement return IDENT ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (call_expression IDENT (argument_list ( IDENT , LIT ))))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) LIT)) )) (compound_statement { (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;) (return_statement return LIT ;) })) (expression_statement (assignment_expression IDENT = (pointer_expression * IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_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) )))) & LIT) )))) ;) (if_statement if (parenthesized_expression ( (binary_expression LIT < (cast_expression ( (type_descriptor TYPE) ) (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + LIT) )))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (labeled_statement statement_identifier : (if_statement if (parenthesized_expression ( (binary_expression IDENT < (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) )))) )) (compound_statement { (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (subscript_expression IDENT [ LIT ])) ;) (expression_statement (assignment_expression (subscript_expression IDENT [ LIT ]) = (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) < LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT)) ;) }) (else_clause else (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = LIT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (goto_statement goto statement_identifier ;)) (expression_statement (assignment_expression IDENT = LIT) ;) }))) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression IDENT + (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) <= IDENT) )) (break_statement break ;)) }) while (parenthesized_expression ( BOOL )) ;) }))) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , LIT , IDENT ))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , IDENT , IDENT ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (binary_expression IDENT * LIT))) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) (parenthesized_expression ( (binary_expression (call_expression (parenthesized_expression ( IDENT )) (argument_list ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + (parenthesized_expression ( (binary_expression LIT - (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT)) ))) ))) >> LIT) ))) + LIT) & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (subscript_expression IDENT [ LIT ]) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (subscript_expression IDENT [ LIT ]) ))) ;) })) (expression_statement (assignment_expression IDENT = (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) )))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression IDENT (argument_list ( IDENT , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (if_statement if (parenthesized_expression ( (binary_expression IDENT == (binary_expression IDENT + LIT)) )) (goto_statement goto statement_identifier ;)) })) (do_statement do (compound_statement { (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (pointer_expression * IDENT)) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + (subscript_expression IDENT [ LIT ]))) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = (binary_expression (subscript_expression IDENT [ LIT ]) + IDENT)) ;) (expression_statement (call_expression IDENT (argument_list ( (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (parenthesized_expression ( (binary_expression (cast_expression ( (type_descriptor (sized_type_specifier long)) ) IDENT) + IDENT) ))) , (cast_expression ( (type_descriptor TYPE (abstract_pointer_declarator *)) ) (subscript_expression IDENT [ LIT ])) , (subscript_expression IDENT [ LIT ]) ))) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) }) while (parenthesized_expression ( (binary_expression IDENT != IDENT) )) ;) })) (labeled_statement statement_identifier : (expression_statement (call_expression IDENT (argument_list ( IDENT ))) ;)) (goto_statement goto statement_identifier ;) (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = LIT) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT & LIT)) ;) (expression_statement (assignment_expression IDENT = IDENT) ;) (if_statement if (parenthesized_expression ( (binary_expression (parenthesized_expression ( (binary_expression IDENT & LIT) )) == LIT) )) (goto_statement goto statement_identifier ;)) (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 { (if_statement if (parenthesized_expression ( (binary_expression IDENT != LIT) )) (compound_statement { (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 = (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_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 = (binary_expression (binary_expression IDENT << LIT) | (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression IDENT << LIT) | (cast_expression ( (type_descriptor TYPE) ) (cast_expression ( (type_descriptor TYPE) ) (subscript_expression IDENT [ LIT ]))))) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (while_statement while (parenthesized_expression ( (binary_expression (binary_expression IDENT + IDENT) != IDENT) )) (compound_statement { (labeled_statement statement_identifier : (expression_statement (assignment_expression IDENT = (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (call_expression IDENT (argument_list ( (subscript_expression IDENT [ LIT ]) , (subscript_expression IDENT [ LIT ]) ))) , (subscript_expression IDENT [ LIT ]) ))) , (subscript_expression IDENT [ LIT ]) ))) , (subscript_expression IDENT [ LIT ]) ))) , (subscript_expression IDENT [ LIT ]) ))) , (subscript_expression IDENT [ LIT ]) ))) , (subscript_expression IDENT [ LIT ]) )))) ;)) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) })) (expression_statement (assignment_expression IDENT = (binary_expression (binary_expression (cast_expression ( (type_descriptor TYPE) ) IDENT) + LIT) + IDENT)) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + IDENT)) ;) (expression_statement (assignment_expression (pointer_expression * IDENT) = IDENT) ;) (expression_statement (assignment_expression IDENT = (binary_expression IDENT + LIT)) ;) (goto_statement goto statement_identifier ;) })))
(function_definition "int der_encode_setof(int *param_1,ulong param_2,void *param_3,size_t *param_4)\n\n{\n  int *piVar1;\n  void *pvVar2;\n  byte bVar3;\n  size_t sVar4;\n  int iVar5;\n  void *__ptr;\n  undefined8 *__base;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  int *piVar10;\n  int *piVar11;\n  byte bVar12;\n  long lVar13;\n  uint uVar14;\n  ulong uVar15;\n  byte bVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  undefined8 *puVar20;\n  size_t __n;\n  \n  if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  __ptr = calloc(1,*param_4);\n  if (__ptr == (void *)0x0) {\n    return 0xd;\n  }\n  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);\n  if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }\n  __base = (undefined8 *)calloc(param_2,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }\n  sVar4 = *param_4;\n  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);\n  if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }\n  __n = (long)puVar8 - (long)__ptr;\n  plVar18 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }\n  qsort(__base,param_2,0x10,FUN_00182650);\n  memcpy(param_3,__ptr,__n);\n  puVar17 = __base + param_2 * 2;\n  if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar15 = 0;\n  bVar12 = bVar3 & 7;\n  puVar6 = puVar8;\n  if ((bVar3 & 7) == 0) goto LAB_00182b97;\n  if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }\n  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n  puVar6 = puVar6 + 1;\n  while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }\n  lVar13 = (ulong)bVar16 + 2 + uVar15;\n  puVar8 = puVar8 + lVar13;\n  *plVar18 = lVar13;\n  plVar18 = plVar18 + 2;\n  goto joined_r0x00182aa4;\n}" (primitive_type "int") (function_declarator "der_encode_setof(int *param_1,ulong param_2,void *param_3,size_t *param_4)" (identifier "der_encode_setof") (parameter_list "(int *param_1,ulong param_2,void *param_3,size_t *param_4)" (( "(") (parameter_declaration "int *param_1" (primitive_type "int") (pointer_declarator "*param_1" (* "*") (identifier "param_1"))) (, ",") (parameter_declaration "ulong param_2" (type_identifier "ulong") (identifier "param_2")) (, ",") (parameter_declaration "void *param_3" (primitive_type "void") (pointer_declarator "*param_3" (* "*") (identifier "param_3"))) (, ",") (parameter_declaration "size_t *param_4" (primitive_type "size_t") (pointer_declarator "*param_4" (* "*") (identifier "param_4"))) () ")"))) (compound_statement "{\n  int *piVar1;\n  void *pvVar2;\n  byte bVar3;\n  size_t sVar4;\n  int iVar5;\n  void *__ptr;\n  undefined8 *__base;\n  undefined1 *puVar6;\n  undefined1 *puVar7;\n  undefined1 *puVar8;\n  long lVar9;\n  int *piVar10;\n  int *piVar11;\n  byte bVar12;\n  long lVar13;\n  uint uVar14;\n  ulong uVar15;\n  byte bVar16;\n  undefined8 *puVar17;\n  long *plVar18;\n  undefined8 *puVar19;\n  undefined8 *puVar20;\n  size_t __n;\n  \n  if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }\nLAB_00182a10:\n  __ptr = calloc(1,*param_4);\n  if (__ptr == (void *)0x0) {\n    return 0xd;\n  }\n  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);\n  if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }\n  __base = (undefined8 *)calloc(param_2,0x10);\n  if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }\n  sVar4 = *param_4;\n  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);\n  if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }\n  __n = (long)puVar8 - (long)__ptr;\n  plVar18 = __base + 1;\njoined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }\n  qsort(__base,param_2,0x10,FUN_00182650);\n  memcpy(param_3,__ptr,__n);\n  puVar17 = __base + param_2 * 2;\n  if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }\nLAB_00182d4a:\n  free(__base);\n  goto LAB_00182d53;\ncode_r0x00182af3:\n  uVar15 = 0;\n  bVar12 = bVar3 & 7;\n  puVar6 = puVar8;\n  if ((bVar3 & 7) == 0) goto LAB_00182b97;\n  if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }\n  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n  puVar6 = puVar6 + 1;\n  while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }\n  lVar13 = (ulong)bVar16 + 2 + uVar15;\n  puVar8 = puVar8 + lVar13;\n  *plVar18 = lVar13;\n  plVar18 = plVar18 + 2;\n  goto joined_r0x00182aa4;\n}" ({ "{") (declaration "int *piVar1;" (primitive_type "int") (pointer_declarator "*piVar1" (* "*") (identifier "piVar1")) (; ";")) (declaration "void *pvVar2;" (primitive_type "void") (pointer_declarator "*pvVar2" (* "*") (identifier "pvVar2")) (; ";")) (declaration "byte bVar3;" (type_identifier "byte") (identifier "bVar3") (; ";")) (declaration "size_t sVar4;" (primitive_type "size_t") (identifier "sVar4") (; ";")) (declaration "int iVar5;" (primitive_type "int") (identifier "iVar5") (; ";")) (declaration "void *__ptr;" (primitive_type "void") (pointer_declarator "*__ptr" (* "*") (identifier "__ptr")) (; ";")) (declaration "undefined8 *__base;" (type_identifier "undefined8") (pointer_declarator "*__base" (* "*") (identifier "__base")) (; ";")) (declaration "undefined1 *puVar6;" (type_identifier "undefined1") (pointer_declarator "*puVar6" (* "*") (identifier "puVar6")) (; ";")) (declaration "undefined1 *puVar7;" (type_identifier "undefined1") (pointer_declarator "*puVar7" (* "*") (identifier "puVar7")) (; ";")) (declaration "undefined1 *puVar8;" (type_identifier "undefined1") (pointer_declarator "*puVar8" (* "*") (identifier "puVar8")) (; ";")) (declaration "long lVar9;" (sized_type_specifier "long" (long "long")) (identifier "lVar9") (; ";")) (declaration "int *piVar10;" (primitive_type "int") (pointer_declarator "*piVar10" (* "*") (identifier "piVar10")) (; ";")) (declaration "int *piVar11;" (primitive_type "int") (pointer_declarator "*piVar11" (* "*") (identifier "piVar11")) (; ";")) (declaration "byte bVar12;" (type_identifier "byte") (identifier "bVar12") (; ";")) (declaration "long lVar13;" (sized_type_specifier "long" (long "long")) (identifier "lVar13") (; ";")) (declaration "uint uVar14;" (type_identifier "uint") (identifier "uVar14") (; ";")) (declaration "ulong uVar15;" (type_identifier "ulong") (identifier "uVar15") (; ";")) (declaration "byte bVar16;" (type_identifier "byte") (identifier "bVar16") (; ";")) (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 "undefined8 *puVar20;" (type_identifier "undefined8") (pointer_declarator "*puVar20" (* "*") (identifier "puVar20")) (; ";")) (declaration "size_t __n;" (primitive_type "size_t") (identifier "__n") (; ";")) (if_statement "if (1 < param_2) {\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }" (if "if") (parenthesized_expression "(1 < param_2)" (( "(") (binary_expression "1 < param_2" (number_literal "1") (< "<") (identifier "param_2")) () ")")) (compound_statement "{\n    if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }\n    return 0x10;\n  }" ({ "{") (if_statement "if (*param_1 == param_1[0x10]) {\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }" (if "if") (parenthesized_expression "(*param_1 == param_1[0x10])" (( "(") (binary_expression "*param_1 == param_1[0x10]" (pointer_expression "*param_1" (* "*") (identifier "param_1")) (== "==") (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]"))) () ")")) (compound_statement "{\n      lVar13 = 1;\n      uVar14 = ~(1U - (int)param_2) & 7;\n      piVar11 = param_1 + 0x10;\n      if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }\n      do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);\n    }" ({ "{") (expression_statement "lVar13 = 1;" (assignment_expression "lVar13 = 1" (identifier "lVar13") (= "=") (number_literal "1")) (; ";")) (expression_statement "uVar14 = ~(1U - (int)param_2) & 7;" (assignment_expression "uVar14 = ~(1U - (int)param_2) & 7" (identifier "uVar14") (= "=") (binary_expression "~(1U - (int)param_2) & 7" (unary_expression "~(1U - (int)param_2)" (~ "~") (parenthesized_expression "(1U - (int)param_2)" (( "(") (binary_expression "1U - (int)param_2" (number_literal "1U") (- "-") (cast_expression "(int)param_2" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (identifier "param_2"))) () ")"))) (& "&") (number_literal "7"))) (; ";")) (expression_statement "piVar11 = param_1 + 0x10;" (assignment_expression "piVar11 = param_1 + 0x10" (identifier "piVar11") (= "=") (binary_expression "param_1 + 0x10" (identifier "param_1") (+ "+") (number_literal "0x10"))) (; ";")) (if_statement "if (uVar14 != 0) {\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }" (if "if") (parenthesized_expression "(uVar14 != 0)" (( "(") (binary_expression "uVar14 != 0" (identifier "uVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n        piVar11 = param_1 + 0x20;\n        lVar13 = 2;\n        if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }\n        if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }\n      }" ({ "{") (expression_statement "piVar11 = param_1 + 0x20;" (assignment_expression "piVar11 = param_1 + 0x20" (identifier "piVar11") (= "=") (binary_expression "param_1 + 0x20" (identifier "param_1") (+ "+") (number_literal "0x20"))) (; ";")) (expression_statement "lVar13 = 2;" (assignment_expression "lVar13 = 2" (identifier "lVar13") (= "=") (number_literal "2")) (; ";")) (if_statement "if (param_1[0x20] != param_1[0x10]) {\n          return 0x10;\n        }" (if "if") (parenthesized_expression "(param_1[0x20] != param_1[0x10])" (( "(") (binary_expression "param_1[0x20] != param_1[0x10]" (subscript_expression "param_1[0x20]" (identifier "param_1") ([ "[") (number_literal "0x20") (] "]")) (!= "!=") (subscript_expression "param_1[0x10]" (identifier "param_1") ([ "[") (number_literal "0x10") (] "]"))) () ")")) (compound_statement "{\n          return 0x10;\n        }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (if_statement "if (uVar14 != 1) {\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }" (if "if") (parenthesized_expression "(uVar14 != 1)" (( "(") (binary_expression "uVar14 != 1" (identifier "uVar14") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n          piVar10 = piVar11;\n          if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }\n          lVar13 = lVar13 + 1;\n          piVar11 = piVar10 + 0x10;\n          if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }\n        }" ({ "{") (expression_statement "piVar10 = piVar11;" (assignment_expression "piVar10 = piVar11" (identifier "piVar10") (= "=") (identifier "piVar11")) (; ";")) (if_statement "if (uVar14 != 2) {\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }" (if "if") (parenthesized_expression "(uVar14 != 2)" (( "(") (binary_expression "uVar14 != 2" (identifier "uVar14") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n            if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }\n            piVar10 = piVar11 + 0x10;\n            lVar13 = lVar13 + 1;\n            if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }\n          }" ({ "{") (if_statement "if (uVar14 != 3) {\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }" (if "if") (parenthesized_expression "(uVar14 != 3)" (( "(") (binary_expression "uVar14 != 3" (identifier "uVar14") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n              if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }\n              piVar11 = piVar10 + 0x10;\n              lVar13 = lVar13 + 1;\n              if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }\n            }" ({ "{") (if_statement "if (uVar14 != 4) {\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }" (if "if") (parenthesized_expression "(uVar14 != 4)" (( "(") (binary_expression "uVar14 != 4" (identifier "uVar14") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n                if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }\n                piVar10 = piVar11 + 0x10;\n                lVar13 = lVar13 + 1;\n                if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }\n              }" ({ "{") (if_statement "if (uVar14 != 5) {\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }" (if "if") (parenthesized_expression "(uVar14 != 5)" (( "(") (binary_expression "uVar14 != 5" (identifier "uVar14") (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n                  if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }\n                  piVar11 = piVar10 + 0x10;\n                  lVar13 = lVar13 + 1;\n                  if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }\n                }" ({ "{") (if_statement "if (uVar14 != 6) {\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }" (if "if") (parenthesized_expression "(uVar14 != 6)" (( "(") (binary_expression "uVar14 != 6" (identifier "uVar14") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n                    piVar10 = param_1 + 0x30;\n                    lVar13 = 3;\n                    if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }\n                  }" ({ "{") (expression_statement "piVar10 = param_1 + 0x30;" (assignment_expression "piVar10 = param_1 + 0x30" (identifier "piVar10") (= "=") (binary_expression "param_1 + 0x30" (identifier "param_1") (+ "+") (number_literal "0x30"))) (; ";")) (expression_statement "lVar13 = 3;" (assignment_expression "lVar13 = 3" (identifier "lVar13") (= "=") (number_literal "3")) (; ";")) (if_statement "if (param_1[0x30] != *piVar11) {\n                      return 0x10;\n                    }" (if "if") (parenthesized_expression "(param_1[0x30] != *piVar11)" (( "(") (binary_expression "param_1[0x30] != *piVar11" (subscript_expression "param_1[0x30]" (identifier "param_1") ([ "[") (number_literal "0x30") (] "]")) (!= "!=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) () ")")) (compound_statement "{\n                      return 0x10;\n                    }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar11 = piVar10 + 0x10;" (assignment_expression "piVar11 = piVar10 + 0x10" (identifier "piVar11") (= "=") (binary_expression "piVar10 + 0x10" (identifier "piVar10") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" (identifier "lVar13") (= "=") (binary_expression "lVar13 + 1" (identifier "lVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar10[0x10] != *piVar10) {\n                    return 0x10;\n                  }" (if "if") (parenthesized_expression "(piVar10[0x10] != *piVar10)" (( "(") (binary_expression "piVar10[0x10] != *piVar10" (subscript_expression "piVar10[0x10]" (identifier "piVar10") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) () ")")) (compound_statement "{\n                    return 0x10;\n                  }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar10 = piVar11 + 0x10;" (assignment_expression "piVar10 = piVar11 + 0x10" (identifier "piVar10") (= "=") (binary_expression "piVar11 + 0x10" (identifier "piVar11") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" (identifier "lVar13") (= "=") (binary_expression "lVar13 + 1" (identifier "lVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar11[0x10] != *piVar11) {\n                  return 0x10;\n                }" (if "if") (parenthesized_expression "(piVar11[0x10] != *piVar11)" (( "(") (binary_expression "piVar11[0x10] != *piVar11" (subscript_expression "piVar11[0x10]" (identifier "piVar11") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) () ")")) (compound_statement "{\n                  return 0x10;\n                }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar11 = piVar10 + 0x10;" (assignment_expression "piVar11 = piVar10 + 0x10" (identifier "piVar11") (= "=") (binary_expression "piVar10 + 0x10" (identifier "piVar10") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" (identifier "lVar13") (= "=") (binary_expression "lVar13 + 1" (identifier "lVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar10[0x10] != *piVar10) {\n                return 0x10;\n              }" (if "if") (parenthesized_expression "(piVar10[0x10] != *piVar10)" (( "(") (binary_expression "piVar10[0x10] != *piVar10" (subscript_expression "piVar10[0x10]" (identifier "piVar10") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) () ")")) (compound_statement "{\n                return 0x10;\n              }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (} "}"))) (expression_statement "piVar10 = piVar11 + 0x10;" (assignment_expression "piVar10 = piVar11 + 0x10" (identifier "piVar10") (= "=") (binary_expression "piVar11 + 0x10" (identifier "piVar11") (+ "+") (number_literal "0x10"))) (; ";")) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" (identifier "lVar13") (= "=") (binary_expression "lVar13 + 1" (identifier "lVar13") (+ "+") (number_literal "1"))) (; ";")) (if_statement "if (piVar11[0x10] != *piVar11) {\n              return 0x10;\n            }" (if "if") (parenthesized_expression "(piVar11[0x10] != *piVar11)" (( "(") (binary_expression "piVar11[0x10] != *piVar11" (subscript_expression "piVar11[0x10]" (identifier "piVar11") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) () ")")) (compound_statement "{\n              return 0x10;\n            }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (} "}"))) (expression_statement "lVar13 = lVar13 + 1;" (assignment_expression "lVar13 = lVar13 + 1" (identifier "lVar13") (= "=") (binary_expression "lVar13 + 1" (identifier "lVar13") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "piVar11 = piVar10 + 0x10;" (assignment_expression "piVar11 = piVar10 + 0x10" (identifier "piVar11") (= "=") (binary_expression "piVar10 + 0x10" (identifier "piVar10") (+ "+") (number_literal "0x10"))) (; ";")) (if_statement "if (piVar10[0x10] != *piVar10) {\n            return 0x10;\n          }" (if "if") (parenthesized_expression "(piVar10[0x10] != *piVar10)" (( "(") (binary_expression "piVar10[0x10] != *piVar10" (subscript_expression "piVar10[0x10]" (identifier "piVar10") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) () ")")) (compound_statement "{\n            return 0x10;\n          }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (} "}"))) (} "}"))) (do_statement "do {\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      } while (*piVar1 == *piVar10);" (do "do") (compound_statement "{\n        if (param_2 == lVar13 + 1U) goto LAB_00182a10;\n        if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }\n        if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }\n        if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }\n        if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }\n        if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }\n        if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }\n        if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }\n        lVar13 = lVar13 + 8;\n        piVar10 = piVar11 + 0x70;\n        piVar1 = piVar11 + 0x80;\n        piVar11 = piVar11 + 0x80;\n      }" ({ "{") (if_statement "if (param_2 == lVar13 + 1U) goto LAB_00182a10;" (if "if") (parenthesized_expression "(param_2 == lVar13 + 1U)" (( "(") (binary_expression "param_2 == lVar13 + 1U" (identifier "param_2") (== "==") (binary_expression "lVar13 + 1U" (identifier "lVar13") (+ "+") (number_literal "1U"))) () ")")) (goto_statement "goto LAB_00182a10;" (goto "goto") (statement_identifier "LAB_00182a10") (; ";"))) (if_statement "if (piVar11[0x10] != *piVar11) {\n          return 0x10;\n        }" (if "if") (parenthesized_expression "(piVar11[0x10] != *piVar11)" (( "(") (binary_expression "piVar11[0x10] != *piVar11" (subscript_expression "piVar11[0x10]" (identifier "piVar11") ([ "[") (number_literal "0x10") (] "]")) (!= "!=") (pointer_expression "*piVar11" (* "*") (identifier "piVar11"))) () ")")) (compound_statement "{\n          return 0x10;\n        }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (if_statement "if (piVar11[0x20] != piVar11[0x10]) {\n          return 0x10;\n        }" (if "if") (parenthesized_expression "(piVar11[0x20] != piVar11[0x10])" (( "(") (binary_expression "piVar11[0x20] != piVar11[0x10]" (subscript_expression "piVar11[0x20]" (identifier "piVar11") ([ "[") (number_literal "0x20") (] "]")) (!= "!=") (subscript_expression "piVar11[0x10]" (identifier "piVar11") ([ "[") (number_literal "0x10") (] "]"))) () ")")) (compound_statement "{\n          return 0x10;\n        }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (if_statement "if (piVar11[0x30] != piVar11[0x20]) {\n          return 0x10;\n        }" (if "if") (parenthesized_expression "(piVar11[0x30] != piVar11[0x20])" (( "(") (binary_expression "piVar11[0x30] != piVar11[0x20]" (subscript_expression "piVar11[0x30]" (identifier "piVar11") ([ "[") (number_literal "0x30") (] "]")) (!= "!=") (subscript_expression "piVar11[0x20]" (identifier "piVar11") ([ "[") (number_literal "0x20") (] "]"))) () ")")) (compound_statement "{\n          return 0x10;\n        }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (if_statement "if (piVar11[0x40] != piVar11[0x30]) {\n          return 0x10;\n        }" (if "if") (parenthesized_expression "(piVar11[0x40] != piVar11[0x30])" (( "(") (binary_expression "piVar11[0x40] != piVar11[0x30]" (subscript_expression "piVar11[0x40]" (identifier "piVar11") ([ "[") (number_literal "0x40") (] "]")) (!= "!=") (subscript_expression "piVar11[0x30]" (identifier "piVar11") ([ "[") (number_literal "0x30") (] "]"))) () ")")) (compound_statement "{\n          return 0x10;\n        }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (if_statement "if (piVar11[0x50] != piVar11[0x40]) {\n          return 0x10;\n        }" (if "if") (parenthesized_expression "(piVar11[0x50] != piVar11[0x40])" (( "(") (binary_expression "piVar11[0x50] != piVar11[0x40]" (subscript_expression "piVar11[0x50]" (identifier "piVar11") ([ "[") (number_literal "0x50") (] "]")) (!= "!=") (subscript_expression "piVar11[0x40]" (identifier "piVar11") ([ "[") (number_literal "0x40") (] "]"))) () ")")) (compound_statement "{\n          return 0x10;\n        }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (if_statement "if (piVar11[0x60] != piVar11[0x50]) {\n          return 0x10;\n        }" (if "if") (parenthesized_expression "(piVar11[0x60] != piVar11[0x50])" (( "(") (binary_expression "piVar11[0x60] != piVar11[0x50]" (subscript_expression "piVar11[0x60]" (identifier "piVar11") ([ "[") (number_literal "0x60") (] "]")) (!= "!=") (subscript_expression "piVar11[0x50]" (identifier "piVar11") ([ "[") (number_literal "0x50") (] "]"))) () ")")) (compound_statement "{\n          return 0x10;\n        }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (if_statement "if (piVar11[0x70] != piVar11[0x60]) {\n          return 0x10;\n        }" (if "if") (parenthesized_expression "(piVar11[0x70] != piVar11[0x60])" (( "(") (binary_expression "piVar11[0x70] != piVar11[0x60]" (subscript_expression "piVar11[0x70]" (identifier "piVar11") ([ "[") (number_literal "0x70") (] "]")) (!= "!=") (subscript_expression "piVar11[0x60]" (identifier "piVar11") ([ "[") (number_literal "0x60") (] "]"))) () ")")) (compound_statement "{\n          return 0x10;\n        }" ({ "{") (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (expression_statement "lVar13 = lVar13 + 8;" (assignment_expression "lVar13 = lVar13 + 8" (identifier "lVar13") (= "=") (binary_expression "lVar13 + 8" (identifier "lVar13") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "piVar10 = piVar11 + 0x70;" (assignment_expression "piVar10 = piVar11 + 0x70" (identifier "piVar10") (= "=") (binary_expression "piVar11 + 0x70" (identifier "piVar11") (+ "+") (number_literal "0x70"))) (; ";")) (expression_statement "piVar1 = piVar11 + 0x80;" (assignment_expression "piVar1 = piVar11 + 0x80" (identifier "piVar1") (= "=") (binary_expression "piVar11 + 0x80" (identifier "piVar11") (+ "+") (number_literal "0x80"))) (; ";")) (expression_statement "piVar11 = piVar11 + 0x80;" (assignment_expression "piVar11 = piVar11 + 0x80" (identifier "piVar11") (= "=") (binary_expression "piVar11 + 0x80" (identifier "piVar11") (+ "+") (number_literal "0x80"))) (; ";")) (} "}")) (while "while") (parenthesized_expression "(*piVar1 == *piVar10)" (( "(") (binary_expression "*piVar1 == *piVar10" (pointer_expression "*piVar1" (* "*") (identifier "piVar1")) (== "==") (pointer_expression "*piVar10" (* "*") (identifier "piVar10"))) () ")")) (; ";")) (} "}"))) (return_statement "return 0x10;" (return "return") (number_literal "0x10") (; ";")) (} "}"))) (labeled_statement "LAB_00182a10:\n  __ptr = calloc(1,*param_4);" (statement_identifier "LAB_00182a10") (: ":") (expression_statement "__ptr = calloc(1,*param_4);" (assignment_expression "__ptr = calloc(1,*param_4)" (identifier "__ptr") (= "=") (call_expression "calloc(1,*param_4)" (identifier "calloc") (argument_list "(1,*param_4)" (( "(") (number_literal "1") (, ",") (pointer_expression "*param_4" (* "*") (identifier "param_4")) () ")")))) (; ";"))) (if_statement "if (__ptr == (void *)0x0) {\n    return 0xd;\n  }" (if "if") (parenthesized_expression "(__ptr == (void *)0x0)" (( "(") (binary_expression "__ptr == (void *)0x0" (identifier "__ptr") (== "==") (cast_expression "(void *)0x0" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    return 0xd;\n  }" ({ "{") (return_statement "return 0xd;" (return "return") (number_literal "0xd") (; ";")) (} "}"))) (expression_statement "iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);" (assignment_expression "iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf)" (identifier "iVar5") (= "=") (call_expression "der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf)" (identifier "der_encode_sequence_ex") (argument_list "(param_1,param_2,__ptr,param_4,0xf)" (( "(") (identifier "param_1") (, ",") (identifier "param_2") (, ",") (identifier "__ptr") (, ",") (identifier "param_4") (, ",") (number_literal "0xf") () ")")))) (; ";")) (if_statement "if (iVar5 != 0) {\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }" (if "if") (parenthesized_expression "(iVar5 != 0)" (( "(") (binary_expression "iVar5 != 0" (identifier "iVar5") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\nLAB_00182d53:\n    free(__ptr);\n    return iVar5;\n  }" ({ "{") (labeled_statement "LAB_00182d53:\n    free(__ptr);" (statement_identifier "LAB_00182d53") (: ":") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";"))) (return_statement "return iVar5;" (return "return") (identifier "iVar5") (; ";")) (} "}"))) (expression_statement "__base = (undefined8 *)calloc(param_2,0x10);" (assignment_expression "__base = (undefined8 *)calloc(param_2,0x10)" (identifier "__base") (= "=") (cast_expression "(undefined8 *)calloc(param_2,0x10)" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (call_expression "calloc(param_2,0x10)" (identifier "calloc") (argument_list "(param_2,0x10)" (( "(") (identifier "param_2") (, ",") (number_literal "0x10") () ")"))))) (; ";")) (if_statement "if (__base == (undefined8 *)0x0) {\n    free(__ptr);\n    return 0xd;\n  }" (if "if") (parenthesized_expression "(__base == (undefined8 *)0x0)" (( "(") (binary_expression "__base == (undefined8 *)0x0" (identifier "__base") (== "==") (cast_expression "(undefined8 *)0x0" (( "(") (type_descriptor "undefined8 *" (type_identifier "undefined8") (abstract_pointer_declarator "*" (* "*"))) () ")") (number_literal "0x0"))) () ")")) (compound_statement "{\n    free(__ptr);\n    return 0xd;\n  }" ({ "{") (expression_statement "free(__ptr);" (call_expression "free(__ptr)" (identifier "free") (argument_list "(__ptr)" (( "(") (identifier "__ptr") () ")"))) (; ";")) (return_statement "return 0xd;" (return "return") (number_literal "0xd") (; ";")) (} "}"))) (expression_statement "sVar4 = *param_4;" (assignment_expression "sVar4 = *param_4" (identifier "sVar4") (= "=") (pointer_expression "*param_4" (* "*") (identifier "param_4"))) (; ";")) (expression_statement "puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);" (assignment_expression "puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f)" (identifier "puVar8") (= "=") (binary_expression "(undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f)" (cast_expression "(undefined1 *)((long)__ptr + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__ptr + 2)" (( "(") (binary_expression "(long)__ptr + 2" (cast_expression "(long)__ptr" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__ptr")) (+ "+") (number_literal "2")) () ")"))) (+ "+") (parenthesized_expression "(*(byte *)((long)__ptr + 1) & 0x7f)" (( "(") (binary_expression "*(byte *)((long)__ptr + 1) & 0x7f" (pointer_expression "*(byte *)((long)__ptr + 1)" (* "*") (cast_expression "(byte *)((long)__ptr + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__ptr + 1)" (( "(") (binary_expression "(long)__ptr + 1" (cast_expression "(long)__ptr" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__ptr")) (+ "+") (number_literal "1")) () ")")))) (& "&") (number_literal "0x7f")) () ")")))) (; ";")) (if_statement "if (-1 < (char)*(byte *)((long)__ptr + 1)) {\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }" (if "if") (parenthesized_expression "(-1 < (char)*(byte *)((long)__ptr + 1))" (( "(") (binary_expression "-1 < (char)*(byte *)((long)__ptr + 1)" (number_literal "-1") (< "<") (cast_expression "(char)*(byte *)((long)__ptr + 1)" (( "(") (type_descriptor "char" (primitive_type "char")) () ")") (pointer_expression "*(byte *)((long)__ptr + 1)" (* "*") (cast_expression "(byte *)((long)__ptr + 1)" (( "(") (type_descriptor "byte *" (type_identifier "byte") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__ptr + 1)" (( "(") (binary_expression "(long)__ptr + 1" (cast_expression "(long)__ptr" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__ptr")) (+ "+") (number_literal "1")) () ")")))))) () ")")) (compound_statement "{\n    puVar8 = (undefined1 *)((long)__ptr + 2);\n  }" ({ "{") (expression_statement "puVar8 = (undefined1 *)((long)__ptr + 2);" (assignment_expression "puVar8 = (undefined1 *)((long)__ptr + 2)" (identifier "puVar8") (= "=") (cast_expression "(undefined1 *)((long)__ptr + 2)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)__ptr + 2)" (( "(") (binary_expression "(long)__ptr + 2" (cast_expression "(long)__ptr" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__ptr")) (+ "+") (number_literal "2")) () ")")))) (; ";")) (} "}"))) (expression_statement "__n = (long)puVar8 - (long)__ptr;" (assignment_expression "__n = (long)puVar8 - (long)__ptr" (identifier "__n") (= "=") (binary_expression "(long)puVar8 - (long)__ptr" (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8")) (- "-") (cast_expression "(long)__ptr" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__ptr")))) (; ";")) (expression_statement "plVar18 = __base + 1;" (assignment_expression "plVar18 = __base + 1" (identifier "plVar18") (= "=") (binary_expression "__base + 1" (identifier "__base") (+ "+") (number_literal "1"))) (; ";")) (labeled_statement "joined_r0x00182aa4:\n  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }" (statement_identifier "joined_r0x00182aa4") (: ":") (if_statement "if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }" (if "if") (parenthesized_expression "(puVar8 < (undefined1 *)(sVar4 + (long)__ptr))" (( "(") (binary_expression "puVar8 < (undefined1 *)(sVar4 + (long)__ptr)" (identifier "puVar8") (< "<") (cast_expression "(undefined1 *)(sVar4 + (long)__ptr)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(sVar4 + (long)__ptr)" (( "(") (binary_expression "sVar4 + (long)__ptr" (identifier "sVar4") (+ "+") (cast_expression "(long)__ptr" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__ptr"))) () ")")))) () ")")) (compound_statement "{\n    do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );\n  }" ({ "{") (do_statement "do {\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    } while( true );" (do "do") (compound_statement "{\n      bVar3 = puVar8[1];\n      plVar18[-1] = (long)puVar8;\n      if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }\n      puVar8 = puVar8 + lVar13;\n      *plVar18 = lVar13;\n      plVar18 = plVar18 + 2;\n      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;\n    }" ({ "{") (expression_statement "bVar3 = puVar8[1];" (assignment_expression "bVar3 = puVar8[1]" (identifier "bVar3") (= "=") (subscript_expression "puVar8[1]" (identifier "puVar8") ([ "[") (number_literal "1") (] "]"))) (; ";")) (expression_statement "plVar18[-1] = (long)puVar8;" (assignment_expression "plVar18[-1] = (long)puVar8" (subscript_expression "plVar18[-1]" (identifier "plVar18") ([ "[") (number_literal "-1") (] "]")) (= "=") (cast_expression "(long)puVar8" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar8"))) (; ";")) (if_statement "if ((ulong)bVar3 < 0x80) {\n        lVar13 = (ulong)bVar3 + 2;\n      }\n      else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }" (if "if") (parenthesized_expression "((ulong)bVar3 < 0x80)" (( "(") (binary_expression "(ulong)bVar3 < 0x80" (cast_expression "(ulong)bVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar3")) (< "<") (number_literal "0x80")) () ")")) (compound_statement "{\n        lVar13 = (ulong)bVar3 + 2;\n      }" ({ "{") (expression_statement "lVar13 = (ulong)bVar3 + 2;" (assignment_expression "lVar13 = (ulong)bVar3 + 2" (identifier "lVar13") (= "=") (binary_expression "(ulong)bVar3 + 2" (cast_expression "(ulong)bVar3" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar3")) (+ "+") (number_literal "2"))) (; ";")) (} "}")) (else_clause "else {\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }" (else "else") (compound_statement "{\n        bVar16 = bVar3 & 0x7f;\n        *plVar18 = 0;\n        if (bVar16 != 0) goto code_r0x00182af3;\n        lVar13 = 2;\n      }" ({ "{") (expression_statement "bVar16 = bVar3 & 0x7f;" (assignment_expression "bVar16 = bVar3 & 0x7f" (identifier "bVar16") (= "=") (binary_expression "bVar3 & 0x7f" (identifier "bVar3") (& "&") (number_literal "0x7f"))) (; ";")) (expression_statement "*plVar18 = 0;" (assignment_expression "*plVar18 = 0" (pointer_expression "*plVar18" (* "*") (identifier "plVar18")) (= "=") (number_literal "0")) (; ";")) (if_statement "if (bVar16 != 0) goto code_r0x00182af3;" (if "if") (parenthesized_expression "(bVar16 != 0)" (( "(") (binary_expression "bVar16 != 0" (identifier "bVar16") (!= "!=") (number_literal "0")) () ")")) (goto_statement "goto code_r0x00182af3;" (goto "goto") (statement_identifier "code_r0x00182af3") (; ";"))) (expression_statement "lVar13 = 2;" (assignment_expression "lVar13 = 2" (identifier "lVar13") (= "=") (number_literal "2")) (; ";")) (} "}")))) (expression_statement "puVar8 = puVar8 + lVar13;" (assignment_expression "puVar8 = puVar8 + lVar13" (identifier "puVar8") (= "=") (binary_expression "puVar8 + lVar13" (identifier "puVar8") (+ "+") (identifier "lVar13"))) (; ";")) (expression_statement "*plVar18 = lVar13;" (assignment_expression "*plVar18 = lVar13" (pointer_expression "*plVar18" (* "*") (identifier "plVar18")) (= "=") (identifier "lVar13")) (; ";")) (expression_statement "plVar18 = plVar18 + 2;" (assignment_expression "plVar18 = plVar18 + 2" (identifier "plVar18") (= "=") (binary_expression "plVar18 + 2" (identifier "plVar18") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;" (if "if") (parenthesized_expression "((undefined1 *)(sVar4 + (long)__ptr) <= puVar8)" (( "(") (binary_expression "(undefined1 *)(sVar4 + (long)__ptr) <= puVar8" (cast_expression "(undefined1 *)(sVar4 + (long)__ptr)" (( "(") (type_descriptor "undefined1 *" (type_identifier "undefined1") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "(sVar4 + (long)__ptr)" (( "(") (binary_expression "sVar4 + (long)__ptr" (identifier "sVar4") (+ "+") (cast_expression "(long)__ptr" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__ptr"))) () ")"))) (<= "<=") (identifier "puVar8")) () ")")) (break_statement "break;" (break "break") (; ";"))) (} "}")) (while "while") (parenthesized_expression "( true )" (( "(") (true "true") () ")")) (; ";")) (} "}")))) (expression_statement "qsort(__base,param_2,0x10,FUN_00182650);" (call_expression "qsort(__base,param_2,0x10,FUN_00182650)" (identifier "qsort") (argument_list "(__base,param_2,0x10,FUN_00182650)" (( "(") (identifier "__base") (, ",") (identifier "param_2") (, ",") (number_literal "0x10") (, ",") (identifier "FUN_00182650") () ")"))) (; ";")) (expression_statement "memcpy(param_3,__ptr,__n);" (call_expression "memcpy(param_3,__ptr,__n)" (identifier "memcpy") (argument_list "(param_3,__ptr,__n)" (( "(") (identifier "param_3") (, ",") (identifier "__ptr") (, ",") (identifier "__n") () ")"))) (; ";")) (expression_statement "puVar17 = __base + param_2 * 2;" (assignment_expression "puVar17 = __base + param_2 * 2" (identifier "puVar17") (= "=") (binary_expression "__base + param_2 * 2" (identifier "__base") (+ "+") (binary_expression "param_2 * 2" (identifier "param_2") (* "*") (number_literal "2")))) (; ";")) (if_statement "if (param_2 != 0) {\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }" (if "if") (parenthesized_expression "(param_2 != 0)" (( "(") (binary_expression "param_2 != 0" (identifier "param_2") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;\n    puVar19 = __base;\n    if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }\n    do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);\n  }" ({ "{") (expression_statement "uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;" (assignment_expression "uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3" (identifier "uVar14") (= "=") (binary_expression "(int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3" (binary_expression "(int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U" (cast_expression "(int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4)" (( "(") (type_descriptor "int" (primitive_type "int")) () ")") (parenthesized_expression "((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4)" (( "(") (binary_expression "(ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4" (call_expression "(ulong)((long)puVar17 + (-0x10 - (long)__base))" (parenthesized_expression "(ulong)" (( "(") (identifier "ulong") () ")")) (argument_list "((long)puVar17 + (-0x10 - (long)__base))" (( "(") (binary_expression "(long)puVar17 + (-0x10 - (long)__base)" (cast_expression "(long)puVar17" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "puVar17")) (+ "+") (parenthesized_expression "(-0x10 - (long)__base)" (( "(") (binary_expression "-0x10 - (long)__base" (number_literal "-0x10") (- "-") (cast_expression "(long)__base" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "__base"))) () ")"))) () ")"))) (>> ">>") (number_literal "4")) () ")"))) (+ "+") (number_literal "1U")) (& "&") (number_literal "3"))) (; ";")) (expression_statement "puVar19 = __base;" (assignment_expression "puVar19 = __base" (identifier "puVar19") (= "=") (identifier "__base")) (; ";")) (if_statement "if (uVar14 != 0) {\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }" (if "if") (parenthesized_expression "(uVar14 != 0)" (( "(") (binary_expression "uVar14 != 0" (identifier "uVar14") (!= "!=") (number_literal "0")) () ")")) (compound_statement "{\n      puVar20 = __base;\n      if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }\n      pvVar2 = (void *)((long)param_3 + __n);\n      __n = __n + puVar20[1];\n      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);\n      puVar19 = puVar20 + 2;\n      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;\n    }" ({ "{") (expression_statement "puVar20 = __base;" (assignment_expression "puVar20 = __base" (identifier "puVar20") (= "=") (identifier "__base")) (; ";")) (if_statement "if (uVar14 != 1) {\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }" (if "if") (parenthesized_expression "(uVar14 != 1)" (( "(") (binary_expression "uVar14 != 1" (identifier "uVar14") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n        if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }\n        pvVar2 = (void *)((long)param_3 + __n);\n        puVar20 = puVar19 + 2;\n        __n = __n + puVar19[1];\n        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);\n      }" ({ "{") (if_statement "if (uVar14 != 2) {\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }" (if "if") (parenthesized_expression "(uVar14 != 2)" (( "(") (binary_expression "uVar14 != 2" (identifier "uVar14") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n          pvVar2 = (void *)((long)param_3 + __n);\n          puVar19 = __base + 2;\n          __n = __n + __base[1];\n          memcpy(pvVar2,(void *)*__base,__base[1]);\n        }" ({ "{") (expression_statement "pvVar2 = (void *)((long)param_3 + __n);" (assignment_expression "pvVar2 = (void *)((long)param_3 + __n)" (identifier "pvVar2") (= "=") (cast_expression "(void *)((long)param_3 + __n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + __n)" (( "(") (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (identifier "__n")) () ")")))) (; ";")) (expression_statement "puVar19 = __base + 2;" (assignment_expression "puVar19 = __base + 2" (identifier "puVar19") (= "=") (binary_expression "__base + 2" (identifier "__base") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "__n = __n + __base[1];" (assignment_expression "__n = __n + __base[1]" (identifier "__n") (= "=") (binary_expression "__n + __base[1]" (identifier "__n") (+ "+") (subscript_expression "__base[1]" (identifier "__base") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "memcpy(pvVar2,(void *)*__base,__base[1]);" (call_expression "memcpy(pvVar2,(void *)*__base,__base[1])" (identifier "memcpy") (argument_list "(pvVar2,(void *)*__base,__base[1])" (( "(") (identifier "pvVar2") (, ",") (cast_expression "(void *)*__base" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*__base" (* "*") (identifier "__base"))) (, ",") (subscript_expression "__base[1]" (identifier "__base") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "pvVar2 = (void *)((long)param_3 + __n);" (assignment_expression "pvVar2 = (void *)((long)param_3 + __n)" (identifier "pvVar2") (= "=") (cast_expression "(void *)((long)param_3 + __n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + __n)" (( "(") (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (identifier "__n")) () ")")))) (; ";")) (expression_statement "puVar20 = puVar19 + 2;" (assignment_expression "puVar20 = puVar19 + 2" (identifier "puVar20") (= "=") (binary_expression "puVar19 + 2" (identifier "puVar19") (+ "+") (number_literal "2"))) (; ";")) (expression_statement "__n = __n + puVar19[1];" (assignment_expression "__n = __n + puVar19[1]" (identifier "__n") (= "=") (binary_expression "__n + puVar19[1]" (identifier "__n") (+ "+") (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "memcpy(pvVar2,(void *)*puVar19,puVar19[1]);" (call_expression "memcpy(pvVar2,(void *)*puVar19,puVar19[1])" (identifier "memcpy") (argument_list "(pvVar2,(void *)*puVar19,puVar19[1])" (( "(") (identifier "pvVar2") (, ",") (cast_expression "(void *)*puVar19" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (, ",") (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (} "}"))) (expression_statement "pvVar2 = (void *)((long)param_3 + __n);" (assignment_expression "pvVar2 = (void *)((long)param_3 + __n)" (identifier "pvVar2") (= "=") (cast_expression "(void *)((long)param_3 + __n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + __n)" (( "(") (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (identifier "__n")) () ")")))) (; ";")) (expression_statement "__n = __n + puVar20[1];" (assignment_expression "__n = __n + puVar20[1]" (identifier "__n") (= "=") (binary_expression "__n + puVar20[1]" (identifier "__n") (+ "+") (subscript_expression "puVar20[1]" (identifier "puVar20") ([ "[") (number_literal "1") (] "]")))) (; ";")) (expression_statement "memcpy(pvVar2,(void *)*puVar20,puVar20[1]);" (call_expression "memcpy(pvVar2,(void *)*puVar20,puVar20[1])" (identifier "memcpy") (argument_list "(pvVar2,(void *)*puVar20,puVar20[1])" (( "(") (identifier "pvVar2") (, ",") (cast_expression "(void *)*puVar20" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar20" (* "*") (identifier "puVar20"))) (, ",") (subscript_expression "puVar20[1]" (identifier "puVar20") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "puVar19 = puVar20 + 2;" (assignment_expression "puVar19 = puVar20 + 2" (identifier "puVar19") (= "=") (binary_expression "puVar20 + 2" (identifier "puVar20") (+ "+") (number_literal "2"))) (; ";")) (if_statement "if (puVar17 == puVar20 + 2) goto LAB_00182d4a;" (if "if") (parenthesized_expression "(puVar17 == puVar20 + 2)" (( "(") (binary_expression "puVar17 == puVar20 + 2" (identifier "puVar17") (== "==") (binary_expression "puVar20 + 2" (identifier "puVar20") (+ "+") (number_literal "2"))) () ")")) (goto_statement "goto LAB_00182d4a;" (goto "goto") (statement_identifier "LAB_00182d4a") (; ";"))) (} "}"))) (do_statement "do {\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    } while (puVar17 != puVar20);" (do "do") (compound_statement "{\n      puVar20 = puVar19 + 8;\n      lVar13 = puVar19[1] + __n;\n      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);\n      lVar9 = lVar13 + puVar19[3];\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);\n      lVar13 = lVar9 + puVar19[5];\n      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);\n      __n = puVar19[7] + lVar13;\n      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);\n      puVar19 = puVar20;\n    }" ({ "{") (expression_statement "puVar20 = puVar19 + 8;" (assignment_expression "puVar20 = puVar19 + 8" (identifier "puVar20") (= "=") (binary_expression "puVar19 + 8" (identifier "puVar19") (+ "+") (number_literal "8"))) (; ";")) (expression_statement "lVar13 = puVar19[1] + __n;" (assignment_expression "lVar13 = puVar19[1] + __n" (identifier "lVar13") (= "=") (binary_expression "puVar19[1] + __n" (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")) (+ "+") (identifier "__n"))) (; ";")) (expression_statement "memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);" (call_expression "memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1])" (identifier "memcpy") (argument_list "((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1])" (( "(") (cast_expression "(void *)((long)param_3 + __n)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + __n)" (( "(") (binary_expression "(long)param_3 + __n" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (identifier "__n")) () ")"))) (, ",") (cast_expression "(void *)*puVar19" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (pointer_expression "*puVar19" (* "*") (identifier "puVar19"))) (, ",") (subscript_expression "puVar19[1]" (identifier "puVar19") ([ "[") (number_literal "1") (] "]")) () ")"))) (; ";")) (expression_statement "lVar9 = lVar13 + puVar19[3];" (assignment_expression "lVar9 = lVar13 + puVar19[3]" (identifier "lVar9") (= "=") (binary_expression "lVar13 + puVar19[3]" (identifier "lVar13") (+ "+") (subscript_expression "puVar19[3]" (identifier "puVar19") ([ "[") (number_literal "3") (] "]")))) (; ";")) (expression_statement "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);" (call_expression "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3])" (identifier "memcpy") (argument_list "((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3])" (( "(") (cast_expression "(void *)((long)param_3 + lVar13)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + lVar13)" (( "(") (binary_expression "(long)param_3 + lVar13" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (identifier "lVar13")) () ")"))) (, ",") (cast_expression "(void *)puVar19[2]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar19[2]" (identifier "puVar19") ([ "[") (number_literal "2") (] "]"))) (, ",") (subscript_expression "puVar19[3]" (identifier "puVar19") ([ "[") (number_literal "3") (] "]")) () ")"))) (; ";")) (expression_statement "lVar13 = lVar9 + puVar19[5];" (assignment_expression "lVar13 = lVar9 + puVar19[5]" (identifier "lVar13") (= "=") (binary_expression "lVar9 + puVar19[5]" (identifier "lVar9") (+ "+") (subscript_expression "puVar19[5]" (identifier "puVar19") ([ "[") (number_literal "5") (] "]")))) (; ";")) (expression_statement "memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);" (call_expression "memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5])" (identifier "memcpy") (argument_list "((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5])" (( "(") (cast_expression "(void *)((long)param_3 + lVar9)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + lVar9)" (( "(") (binary_expression "(long)param_3 + lVar9" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (identifier "lVar9")) () ")"))) (, ",") (cast_expression "(void *)puVar19[4]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar19[4]" (identifier "puVar19") ([ "[") (number_literal "4") (] "]"))) (, ",") (subscript_expression "puVar19[5]" (identifier "puVar19") ([ "[") (number_literal "5") (] "]")) () ")"))) (; ";")) (expression_statement "__n = puVar19[7] + lVar13;" (assignment_expression "__n = puVar19[7] + lVar13" (identifier "__n") (= "=") (binary_expression "puVar19[7] + lVar13" (subscript_expression "puVar19[7]" (identifier "puVar19") ([ "[") (number_literal "7") (] "]")) (+ "+") (identifier "lVar13"))) (; ";")) (expression_statement "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);" (call_expression "memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7])" (identifier "memcpy") (argument_list "((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7])" (( "(") (cast_expression "(void *)((long)param_3 + lVar13)" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (parenthesized_expression "((long)param_3 + lVar13)" (( "(") (binary_expression "(long)param_3 + lVar13" (cast_expression "(long)param_3" (( "(") (type_descriptor "long" (sized_type_specifier "long" (long "long"))) () ")") (identifier "param_3")) (+ "+") (identifier "lVar13")) () ")"))) (, ",") (cast_expression "(void *)puVar19[6]" (( "(") (type_descriptor "void *" (primitive_type "void") (abstract_pointer_declarator "*" (* "*"))) () ")") (subscript_expression "puVar19[6]" (identifier "puVar19") ([ "[") (number_literal "6") (] "]"))) (, ",") (subscript_expression "puVar19[7]" (identifier "puVar19") ([ "[") (number_literal "7") (] "]")) () ")"))) (; ";")) (expression_statement "puVar19 = puVar20;" (assignment_expression "puVar19 = puVar20" (identifier "puVar19") (= "=") (identifier "puVar20")) (; ";")) (} "}")) (while "while") (parenthesized_expression "(puVar17 != puVar20)" (( "(") (binary_expression "puVar17 != puVar20" (identifier "puVar17") (!= "!=") (identifier "puVar20")) () ")")) (; ";")) (} "}"))) (labeled_statement "LAB_00182d4a:\n  free(__base);" (statement_identifier "LAB_00182d4a") (: ":") (expression_statement "free(__base);" (call_expression "free(__base)" (identifier "free") (argument_list "(__base)" (( "(") (identifier "__base") () ")"))) (; ";"))) (goto_statement "goto LAB_00182d53;" (goto "goto") (statement_identifier "LAB_00182d53") (; ";")) (labeled_statement "code_r0x00182af3:\n  uVar15 = 0;" (statement_identifier "code_r0x00182af3") (: ":") (expression_statement "uVar15 = 0;" (assignment_expression "uVar15 = 0" (identifier "uVar15") (= "=") (number_literal "0")) (; ";"))) (expression_statement "bVar12 = bVar3 & 7;" (assignment_expression "bVar12 = bVar3 & 7" (identifier "bVar12") (= "=") (binary_expression "bVar3 & 7" (identifier "bVar3") (& "&") (number_literal "7"))) (; ";")) (expression_statement "puVar6 = puVar8;" (assignment_expression "puVar6 = puVar8" (identifier "puVar6") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if ((bVar3 & 7) == 0) goto LAB_00182b97;" (if "if") (parenthesized_expression "((bVar3 & 7) == 0)" (( "(") (binary_expression "(bVar3 & 7) == 0" (parenthesized_expression "(bVar3 & 7)" (( "(") (binary_expression "bVar3 & 7" (identifier "bVar3") (& "&") (number_literal "7")) () ")")) (== "==") (number_literal "0")) () ")")) (goto_statement "goto LAB_00182b97;" (goto "goto") (statement_identifier "LAB_00182b97") (; ";"))) (if_statement "if (bVar12 != 1) {\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }" (if "if") (parenthesized_expression "(bVar12 != 1)" (( "(") (binary_expression "bVar12 != 1" (identifier "bVar12") (!= "!=") (number_literal "1")) () ")")) (compound_statement "{\n    puVar7 = puVar8;\n    if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }\n    puVar6 = puVar7 + 1;\n    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n  }" ({ "{") (expression_statement "puVar7 = puVar8;" (assignment_expression "puVar7 = puVar8" (identifier "puVar7") (= "=") (identifier "puVar8")) (; ";")) (if_statement "if (bVar12 != 2) {\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }" (if "if") (parenthesized_expression "(bVar12 != 2)" (( "(") (binary_expression "bVar12 != 2" (identifier "bVar12") (!= "!=") (number_literal "2")) () ")")) (compound_statement "{\n      if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }\n      puVar7 = puVar6 + 1;\n      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n    }" ({ "{") (if_statement "if (bVar12 != 3) {\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }" (if "if") (parenthesized_expression "(bVar12 != 3)" (( "(") (binary_expression "bVar12 != 3" (identifier "bVar12") (!= "!=") (number_literal "3")) () ")")) (compound_statement "{\n        if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }\n        puVar6 = puVar7 + 1;\n        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n      }" ({ "{") (if_statement "if (bVar12 != 4) {\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }" (if "if") (parenthesized_expression "(bVar12 != 4)" (( "(") (binary_expression "bVar12 != 4" (identifier "bVar12") (!= "!=") (number_literal "4")) () ")")) (compound_statement "{\n          if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }\n          puVar7 = puVar6 + 1;\n          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];\n        }" ({ "{") (if_statement "if (bVar12 != 5) {\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }" (if "if") (parenthesized_expression "(bVar12 != 5)" (( "(") (binary_expression "bVar12 != 5" (identifier "bVar12") (!= "!=") (number_literal "5")) () ")")) (compound_statement "{\n            if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }\n            puVar6 = puVar7 + 1;\n            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];\n          }" ({ "{") (if_statement "if (bVar12 != 6) {\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }" (if "if") (parenthesized_expression "(bVar12 != 6)" (( "(") (binary_expression "bVar12 != 6" (identifier "bVar12") (!= "!=") (number_literal "6")) () ")")) (compound_statement "{\n              uVar15 = (ulong)(byte)puVar8[2];\n              puVar7 = puVar8 + 1;\n            }" ({ "{") (expression_statement "uVar15 = (ulong)(byte)puVar8[2];" (assignment_expression "uVar15 = (ulong)(byte)puVar8[2]" (identifier "uVar15") (= "=") (cast_expression "(ulong)(byte)puVar8[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)puVar8[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar8[2]" (identifier "puVar8") ([ "[") (number_literal "2") (] "]"))))) (; ";")) (expression_statement "puVar7 = puVar8 + 1;" (assignment_expression "puVar7 = puVar8 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar8 + 1" (identifier "puVar8") (+ "+") (number_literal "1"))) (; ";")) (} "}"))) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2]" (identifier "uVar15") (= "=") (binary_expression "uVar15 << 8 | (ulong)(byte)puVar7[2]" (binary_expression "uVar15 << 8" (identifier "uVar15") (<< "<<") (number_literal "8")) (| "|") (cast_expression "(ulong)(byte)puVar7[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)puVar7[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")))))) (; ";")) (} "}"))) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2]" (identifier "uVar15") (= "=") (binary_expression "uVar15 << 8 | (ulong)(byte)puVar6[2]" (binary_expression "uVar15 << 8" (identifier "uVar15") (<< "<<") (number_literal "8")) (| "|") (cast_expression "(ulong)(byte)puVar6[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)puVar6[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")))))) (; ";")) (} "}"))) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2]" (identifier "uVar15") (= "=") (binary_expression "uVar15 << 8 | (ulong)(byte)puVar7[2]" (binary_expression "uVar15 << 8" (identifier "uVar15") (<< "<<") (number_literal "8")) (| "|") (cast_expression "(ulong)(byte)puVar7[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)puVar7[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")))))) (; ";")) (} "}"))) (expression_statement "puVar7 = puVar6 + 1;" (assignment_expression "puVar7 = puVar6 + 1" (identifier "puVar7") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2]" (identifier "uVar15") (= "=") (binary_expression "uVar15 << 8 | (ulong)(byte)puVar6[2]" (binary_expression "uVar15 << 8" (identifier "uVar15") (<< "<<") (number_literal "8")) (| "|") (cast_expression "(ulong)(byte)puVar6[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)puVar6[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")))))) (; ";")) (} "}"))) (expression_statement "puVar6 = puVar7 + 1;" (assignment_expression "puVar6 = puVar7 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar7 + 1" (identifier "puVar7") (+ "+") (number_literal "1"))) (; ";")) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2]" (identifier "uVar15") (= "=") (binary_expression "uVar15 << 8 | (ulong)(byte)puVar7[2]" (binary_expression "uVar15 << 8" (identifier "uVar15") (<< "<<") (number_literal "8")) (| "|") (cast_expression "(ulong)(byte)puVar7[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)puVar7[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar7[2]" (identifier "puVar7") ([ "[") (number_literal "2") (] "]")))))) (; ";")) (} "}"))) (expression_statement "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];" (assignment_expression "uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2]" (identifier "uVar15") (= "=") (binary_expression "uVar15 << 8 | (ulong)(byte)puVar6[2]" (binary_expression "uVar15 << 8" (identifier "uVar15") (<< "<<") (number_literal "8")) (| "|") (cast_expression "(ulong)(byte)puVar6[2]" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (cast_expression "(byte)puVar6[2]" (( "(") (type_descriptor "byte" (type_identifier "byte")) () ")") (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")))))) (; ";")) (expression_statement "puVar6 = puVar6 + 1;" (assignment_expression "puVar6 = puVar6 + 1" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 1" (identifier "puVar6") (+ "+") (number_literal "1"))) (; ";")) (while_statement "while (puVar8 + bVar16 != puVar6) {\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }" (while "while") (parenthesized_expression "(puVar8 + bVar16 != puVar6)" (( "(") (binary_expression "puVar8 + bVar16 != puVar6" (binary_expression "puVar8 + bVar16" (identifier "puVar8") (+ "+") (identifier "bVar16")) (!= "!=") (identifier "puVar6")) () ")")) (compound_statement "{\nLAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);\n    puVar6 = puVar6 + 8;\n  }" ({ "{") (labeled_statement "LAB_00182b97:\n    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);" (statement_identifier "LAB_00182b97") (: ":") (expression_statement "uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9]);" (assignment_expression "uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9])" (identifier "uVar15") (= "=") (call_expression "CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9])" (identifier "CONCAT71") (argument_list "(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8]),puVar6[9])" (( "(") (call_expression "CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8])" (identifier "CONCAT61") (argument_list "(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7]),puVar6[8])" (( "(") (call_expression "CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7])" (identifier "CONCAT51") (argument_list "(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6]),\n                                        puVar6[7])" (( "(") (call_expression "CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6])" (identifier "CONCAT41") (argument_list "(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5]),puVar6[6])" (( "(") (call_expression "CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5])" (identifier "CONCAT31") (argument_list "(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4]),puVar6[5])" (( "(") (call_expression "CONCAT21(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4])" (identifier "CONCAT21") (argument_list "(CONCAT11(puVar6[2],puVar6[3]),\n                                                                   puVar6[4])" (( "(") (call_expression "CONCAT11(puVar6[2],puVar6[3])" (identifier "CONCAT11") (argument_list "(puVar6[2],puVar6[3])" (( "(") (subscript_expression "puVar6[2]" (identifier "puVar6") ([ "[") (number_literal "2") (] "]")) (, ",") (subscript_expression "puVar6[3]" (identifier "puVar6") ([ "[") (number_literal "3") (] "]")) () ")"))) (, ",") (subscript_expression "puVar6[4]" (identifier "puVar6") ([ "[") (number_literal "4") (] "]")) () ")"))) (, ",") (subscript_expression "puVar6[5]" (identifier "puVar6") ([ "[") (number_literal "5") (] "]")) () ")"))) (, ",") (subscript_expression "puVar6[6]" (identifier "puVar6") ([ "[") (number_literal "6") (] "]")) () ")"))) (, ",") (subscript_expression "puVar6[7]" (identifier "puVar6") ([ "[") (number_literal "7") (] "]")) () ")"))) (, ",") (subscript_expression "puVar6[8]" (identifier "puVar6") ([ "[") (number_literal "8") (] "]")) () ")"))) (, ",") (subscript_expression "puVar6[9]" (identifier "puVar6") ([ "[") (number_literal "9") (] "]")) () ")")))) (; ";"))) (expression_statement "puVar6 = puVar6 + 8;" (assignment_expression "puVar6 = puVar6 + 8" (identifier "puVar6") (= "=") (binary_expression "puVar6 + 8" (identifier "puVar6") (+ "+") (number_literal "8"))) (; ";")) (} "}"))) (expression_statement "lVar13 = (ulong)bVar16 + 2 + uVar15;" (assignment_expression "lVar13 = (ulong)bVar16 + 2 + uVar15" (identifier "lVar13") (= "=") (binary_expression "(ulong)bVar16 + 2 + uVar15" (binary_expression "(ulong)bVar16 + 2" (cast_expression "(ulong)bVar16" (( "(") (type_descriptor "ulong" (type_identifier "ulong")) () ")") (identifier "bVar16")) (+ "+") (number_literal "2")) (+ "+") (identifier "uVar15"))) (; ";")) (expression_statement "puVar8 = puVar8 + lVar13;" (assignment_expression "puVar8 = puVar8 + lVar13" (identifier "puVar8") (= "=") (binary_expression "puVar8 + lVar13" (identifier "puVar8") (+ "+") (identifier "lVar13"))) (; ";")) (expression_statement "*plVar18 = lVar13;" (assignment_expression "*plVar18 = lVar13" (pointer_expression "*plVar18" (* "*") (identifier "plVar18")) (= "=") (identifier "lVar13")) (; ";")) (expression_statement "plVar18 = plVar18 + 2;" (assignment_expression "plVar18 = plVar18 + 2" (identifier "plVar18") (= "=") (binary_expression "plVar18 + 2" (identifier "plVar18") (+ "+") (number_literal "2"))) (; ";")) (goto_statement "goto joined_r0x00182aa4;" (goto "goto") (statement_identifier "joined_r0x00182aa4") (; ";")) (} "}")))

int function_1(type_1 *var_2,type_2 var_1,type_3 *var_20,type_2 *outlen)

{
  type_1 *plVar1;
  type_4 var_15;
  type_2 var_14;
  int var_10;
  type_3 *var_8;
  type_5 *var_12;
  type_3 *var_29;
  type_3 *var_27;
  type_3 *var_13;
  long var_25;
  type_1 *var_4;
  type_1 *var_6;
  type_4 var_26;
  long var_5;
  type_6 var_3;
  type_2 var_28;
  type_4 var_16;
  type_5 *var_24;
  long *var_17;
  type_5 *var_22;
  type_5 *var_23;
  size_t var_21;
  
  if (1 < var_1) {
    if (var_2->type == var_2[1].type) {
      var_5 = 1;
      var_3 = ~(1U - (int)var_1) & 7;
      var_6 = var_2 + 1;
      if (var_3 != 0) {
        var_6 = var_2 + 2;
        var_5 = 2;
        if (var_2[2].type != var_2[1].type) {
          return 0x10;
        }
        if (var_3 != 1) {
          var_4 = var_6;
          if (var_3 != 2) {
            if (var_3 != 3) {
              if (var_3 != 4) {
                if (var_3 != 5) {
                  if (var_3 != 6) {
                    var_4 = var_2 + 3;
                    var_5 = 3;
                    if (var_2[3].type != var_6->type) {
                      return 0x10;
                    }
                  }
                  var_6 = var_4 + 1;
                  var_5 = var_5 + 1;
                  if (var_4[1].type != var_4->type) {
                    return 0x10;
                  }
                }
                var_4 = var_6 + 1;
                var_5 = var_5 + 1;
                if (var_6[1].type != var_6->type) {
                  return 0x10;
                }
              }
              var_6 = var_4 + 1;
              var_5 = var_5 + 1;
              if (var_4[1].type != var_4->type) {
                return 0x10;
              }
            }
            var_4 = var_6 + 1;
            var_5 = var_5 + 1;
            if (var_6[1].type != var_6->type) {
              return 0x10;
            }
          }
          var_5 = var_5 + 1;
          var_6 = var_4 + 1;
          if (var_4[1].type != var_4->type) {
            return 0x10;
          }
        }
      }
      do {
        if (var_1 == var_5 + 1U) goto LAB_00182a10;
        if (var_6[1].type != var_6->type) {
          return 0x10;
        }
        if (var_6[2].type != var_6[1].type) {
          return 0x10;
        }
        if (var_6[3].type != var_6[2].type) {
          return 0x10;
        }
        if (var_6[4].type != var_6[3].type) {
          return 0x10;
        }
        if (var_6[5].type != var_6[4].type) {
          return 0x10;
        }
        if (var_6[6].type != var_6[5].type) {
          return 0x10;
        }
        if (var_6[7].type != var_6[6].type) {
          return 0x10;
        }
        var_5 = var_5 + 8;
        var_4 = var_6 + 7;
        plVar1 = var_6 + 8;
        var_6 = var_6 + 8;
      } while (plVar1->type == var_4->type);
    }
    return 0x10;
  }
LAB_00182a10:
  var_8 = (type_3 *)var_7(1,*outlen);
  if (var_8 == (type_3 *)0x0) {
    return 0xd;
  }
  var_10 = var_9(var_2,var_1,var_8,outlen,0xf);
  if (var_10 != 0) {
LAB_00182d53:
    var_11(var_8);
    return var_10;
  }
  var_12 = (type_5 *)var_7(var_1,0x10);
  if (var_12 == (type_5 *)0x0) {
    var_11(var_8);
    return 0xd;
  }
  var_14 = *outlen;
  var_13 = var_8 + 2 + (var_8[1] & 0x7f);
  if (-1 < (char)var_8[1]) {
    var_13 = var_8 + 2;
  }
  var_21 = (long)var_13 - (long)var_8;
  var_17 = var_12 + 1;
joined_r0x00182aa4:
  if (var_13 < var_8 + var_14) {
    do {
      var_15 = var_13[1];
      var_17[-1] = (long)var_13;
      if ((type_2)var_15 < 0x80) {
        var_5 = (type_2)var_15 + 2;
      }
      else {
        var_16 = var_15 & 0x7f;
        *var_17 = 0;
        if (var_16 != 0) goto code_r0x00182af3;
        var_5 = 2;
      }
      var_13 = var_13 + var_5;
      *var_17 = var_5;
      var_17 = var_17 + 2;
      if (var_8 + var_14 <= var_13) break;
    } while( true );
  }
  var_18(var_12,var_1,0x10,_qsort_helper);
  var_19(var_20,var_8,var_21);
  var_24 = var_12 + var_1 * 2;
  if (var_1 != 0) {
    var_3 = (int)((type_2)((long)var_24 + (-0x10 - (long)var_12)) >> 4) + 1U & 3;
    var_22 = var_12;
    if (var_3 != 0) {
      var_23 = var_12;
      if (var_3 != 1) {
        if (var_3 != 2) {
          var_13 = var_20 + var_21;
          var_22 = var_12 + 2;
          var_21 = var_21 + var_12[1];
          var_19(var_13,(void *)*var_12,var_12[1]);
        }
        var_13 = var_20 + var_21;
        var_23 = var_22 + 2;
        var_21 = var_21 + var_22[1];
        var_19(var_13,(void *)*var_22,var_22[1]);
      }
      var_13 = var_20 + var_21;
      var_21 = var_21 + var_23[1];
      var_19(var_13,(void *)*var_23,var_23[1]);
      var_22 = var_23 + 2;
      if (var_24 == var_23 + 2) goto LAB_00182d4a;
    }
    do {
      var_23 = var_22 + 8;
      var_5 = var_22[1] + var_21;
      var_19(var_20 + var_21,(void *)*var_22,var_22[1]);
      var_25 = var_5 + var_22[3];
      var_19(var_20 + var_5,(void *)var_22[2],var_22[3]);
      var_5 = var_25 + var_22[5];
      var_19(var_20 + var_25,(void *)var_22[4],var_22[5]);
      var_21 = var_22[7] + var_5;
      var_19(var_20 + var_5,(void *)var_22[6],var_22[7]);
      var_22 = var_23;
    } while (var_24 != var_23);
  }
LAB_00182d4a:
  var_11(var_12);
  goto LAB_00182d53;
code_r0x00182af3:
  var_28 = 0;
  var_26 = var_15 & 7;
  var_29 = var_13;
  if ((var_15 & 7) == 0) goto LAB_00182b97;
  if (var_26 != 1) {
    var_27 = var_13;
    if (var_26 != 2) {
      if (var_26 != 3) {
        if (var_26 != 4) {
          if (var_26 != 5) {
            if (var_26 != 6) {
              var_28 = (type_2)var_13[2];
              var_27 = var_13 + 1;
            }
            var_29 = var_27 + 1;
            var_28 = var_28 << 8 | (type_2)var_27[2];
          }
          var_27 = var_29 + 1;
          var_28 = var_28 << 8 | (type_2)var_29[2];
        }
        var_29 = var_27 + 1;
        var_28 = var_28 << 8 | (type_2)var_27[2];
      }
      var_27 = var_29 + 1;
      var_28 = var_28 << 8 | (type_2)var_29[2];
    }
    var_29 = var_27 + 1;
    var_28 = var_28 << 8 | (type_2)var_27[2];
  }
  var_28 = var_28 << 8 | (type_2)var_29[2];
  var_29 = var_29 + 1;
  while (var_13 + var_16 != var_29) {
LAB_00182b97:
    var_28 = var_30(var_31(var_32(var_33(var_34(var_35(var_36(var_29[2],var_29[3]),
                                                                   var_29[4]),var_29[5]),var_29[6]),
                                        var_29[7]),var_29[8]),var_29[9]);
    var_29 = var_29 + 8;
  }
  var_5 = (type_2)var_16 + 2 + var_28;
  var_13 = var_13 + var_5;
  *var_17 = var_5;
  var_17 = var_17 + 2;
  goto joined_r0x00182aa4;
}


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

int MASKED(int *param_1,ulong param_2,void *param_3,size_t *param_4)

{
  int *piVar1;
  void *pvVar2;
  byte bVar3;
  size_t sVar4;
  int iVar5;
  void *__ptr;
  undefined8 *__base;
  undefined1 *puVar6;
  undefined1 *puVar7;
  undefined1 *puVar8;
  long lVar9;
  int *piVar10;
  int *piVar11;
  byte bVar12;
  long lVar13;
  uint uVar14;
  ulong uVar15;
  byte bVar16;
  undefined8 *puVar17;
  long *plVar18;
  undefined8 *puVar19;
  undefined8 *puVar20;
  size_t __n;
  
  if (1 < param_2) {
    if (*param_1 == param_1[0x10]) {
      lVar13 = 1;
      uVar14 = ~(1U - (int)param_2) & 7;
      piVar11 = param_1 + 0x10;
      if (uVar14 != 0) {
        piVar11 = param_1 + 0x20;
        lVar13 = 2;
        if (param_1[0x20] != param_1[0x10]) {
          return 0x10;
        }
        if (uVar14 != 1) {
          piVar10 = piVar11;
          if (uVar14 != 2) {
            if (uVar14 != 3) {
              if (uVar14 != 4) {
                if (uVar14 != 5) {
                  if (uVar14 != 6) {
                    piVar10 = param_1 + 0x30;
                    lVar13 = 3;
                    if (param_1[0x30] != *piVar11) {
                      return 0x10;
                    }
                  }
                  piVar11 = piVar10 + 0x10;
                  lVar13 = lVar13 + 1;
                  if (piVar10[0x10] != *piVar10) {
                    return 0x10;
                  }
                }
                piVar10 = piVar11 + 0x10;
                lVar13 = lVar13 + 1;
                if (piVar11[0x10] != *piVar11) {
                  return 0x10;
                }
              }
              piVar11 = piVar10 + 0x10;
              lVar13 = lVar13 + 1;
              if (piVar10[0x10] != *piVar10) {
                return 0x10;
              }
            }
            piVar10 = piVar11 + 0x10;
            lVar13 = lVar13 + 1;
            if (piVar11[0x10] != *piVar11) {
              return 0x10;
            }
          }
          lVar13 = lVar13 + 1;
          piVar11 = piVar10 + 0x10;
          if (piVar10[0x10] != *piVar10) {
            return 0x10;
          }
        }
      }
      do {
        if (param_2 == lVar13 + 1U) goto LAB_00182a10;
        if (piVar11[0x10] != *piVar11) {
          return 0x10;
        }
        if (piVar11[0x20] != piVar11[0x10]) {
          return 0x10;
        }
        if (piVar11[0x30] != piVar11[0x20]) {
          return 0x10;
        }
        if (piVar11[0x40] != piVar11[0x30]) {
          return 0x10;
        }
        if (piVar11[0x50] != piVar11[0x40]) {
          return 0x10;
        }
        if (piVar11[0x60] != piVar11[0x50]) {
          return 0x10;
        }
        if (piVar11[0x70] != piVar11[0x60]) {
          return 0x10;
        }
        lVar13 = lVar13 + 8;
        piVar10 = piVar11 + 0x70;
        piVar1 = piVar11 + 0x80;
        piVar11 = piVar11 + 0x80;
      } while (*piVar1 == *piVar10);
    }
    return 0x10;
  }
LAB_00182a10:
  __ptr = calloc(1,*param_4);
  if (__ptr == (void *)0x0) {
    return 0xd;
  }
  iVar5 = der_encode_sequence_ex(param_1,param_2,__ptr,param_4,0xf);
  if (iVar5 != 0) {
LAB_00182d53:
    free(__ptr);
    return iVar5;
  }
  __base = (undefined8 *)calloc(param_2,0x10);
  if (__base == (undefined8 *)0x0) {
    free(__ptr);
    return 0xd;
  }
  sVar4 = *param_4;
  puVar8 = (undefined1 *)((long)__ptr + 2) + (*(byte *)((long)__ptr + 1) & 0x7f);
  if (-1 < (char)*(byte *)((long)__ptr + 1)) {
    puVar8 = (undefined1 *)((long)__ptr + 2);
  }
  __n = (long)puVar8 - (long)__ptr;
  plVar18 = __base + 1;
joined_r0x00182aa4:
  if (puVar8 < (undefined1 *)(sVar4 + (long)__ptr)) {
    do {
      bVar3 = puVar8[1];
      plVar18[-1] = (long)puVar8;
      if ((ulong)bVar3 < 0x80) {
        lVar13 = (ulong)bVar3 + 2;
      }
      else {
        bVar16 = bVar3 & 0x7f;
        *plVar18 = 0;
        if (bVar16 != 0) goto code_r0x00182af3;
        lVar13 = 2;
      }
      puVar8 = puVar8 + lVar13;
      *plVar18 = lVar13;
      plVar18 = plVar18 + 2;
      if ((undefined1 *)(sVar4 + (long)__ptr) <= puVar8) break;
    } while( true );
  }
  qsort(__base,param_2,0x10,FUN_00182650);
  memcpy(param_3,__ptr,__n);
  puVar17 = __base + param_2 * 2;
  if (param_2 != 0) {
    uVar14 = (int)((ulong)((long)puVar17 + (-0x10 - (long)__base)) >> 4) + 1U & 3;
    puVar19 = __base;
    if (uVar14 != 0) {
      puVar20 = __base;
      if (uVar14 != 1) {
        if (uVar14 != 2) {
          pvVar2 = (void *)((long)param_3 + __n);
          puVar19 = __base + 2;
          __n = __n + __base[1];
          memcpy(pvVar2,(void *)*__base,__base[1]);
        }
        pvVar2 = (void *)((long)param_3 + __n);
        puVar20 = puVar19 + 2;
        __n = __n + puVar19[1];
        memcpy(pvVar2,(void *)*puVar19,puVar19[1]);
      }
      pvVar2 = (void *)((long)param_3 + __n);
      __n = __n + puVar20[1];
      memcpy(pvVar2,(void *)*puVar20,puVar20[1]);
      puVar19 = puVar20 + 2;
      if (puVar17 == puVar20 + 2) goto LAB_00182d4a;
    }
    do {
      puVar20 = puVar19 + 8;
      lVar13 = puVar19[1] + __n;
      memcpy((void *)((long)param_3 + __n),(void *)*puVar19,puVar19[1]);
      lVar9 = lVar13 + puVar19[3];
      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[2],puVar19[3]);
      lVar13 = lVar9 + puVar19[5];
      memcpy((void *)((long)param_3 + lVar9),(void *)puVar19[4],puVar19[5]);
      __n = puVar19[7] + lVar13;
      memcpy((void *)((long)param_3 + lVar13),(void *)puVar19[6],puVar19[7]);
      puVar19 = puVar20;
    } while (puVar17 != puVar20);
  }
LAB_00182d4a:
  free(__base);
  goto LAB_00182d53;
code_r0x00182af3:
  uVar15 = 0;
  bVar12 = bVar3 & 7;
  puVar6 = puVar8;
  if ((bVar3 & 7) == 0) goto LAB_00182b97;
  if (bVar12 != 1) {
    puVar7 = puVar8;
    if (bVar12 != 2) {
      if (bVar12 != 3) {
        if (bVar12 != 4) {
          if (bVar12 != 5) {
            if (bVar12 != 6) {
              uVar15 = (ulong)(byte)puVar8[2];
              puVar7 = puVar8 + 1;
            }
            puVar6 = puVar7 + 1;
            uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];
          }
          puVar7 = puVar6 + 1;
          uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];
        }
        puVar6 = puVar7 + 1;
        uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];
      }
      puVar7 = puVar6 + 1;
      uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];
    }
    puVar6 = puVar7 + 1;
    uVar15 = uVar15 << 8 | (ulong)(byte)puVar7[2];
  }
  uVar15 = uVar15 << 8 | (ulong)(byte)puVar6[2];
  puVar6 = puVar6 + 1;
  while (puVar8 + bVar16 != puVar6) {
LAB_00182b97:
    uVar15 = CONCAT71(CONCAT61(CONCAT51(CONCAT41(CONCAT31(CONCAT21(CONCAT11(puVar6[2],puVar6[3]),
                                                                   puVar6[4]),puVar6[5]),puVar6[6]),
                                        puVar6[7]),puVar6[8]),puVar6[9]);
    puVar6 = puVar6 + 8;
  }
  lVar13 = (ulong)bVar16 + 2 + uVar15;
  puVar8 = puVar8 + lVar13;
  *plVar18 = lVar13;
  plVar18 = plVar18 + 2;
  goto joined_r0x00182aa4;
}

